programing

오류: ORA-65096: Oracle 데이터베이스의 공통 사용자 또는 역할 이름이 잘못되었습니다.

subpage 2023. 3. 10. 21:31
반응형

오류: ORA-65096: Oracle 데이터베이스의 공통 사용자 또는 역할 이름이 잘못되었습니다.

Oracle 데이터베이스가 .SCOTT.그래서 제가 직접 생성하려고 합니다. sql을 sql을 하려고 합니다.

CREATE USER SCOTT IDENTIFIED BY tiger; 

다음의 에러가 표시됩니다.

ORA-65096: Oracle의 공통 사용자 또는 역할 이름이 잘못되었습니다.

으로는 사용자를 수 .SCOTT이유는 무엇이며, 어떻게 하면 문제를 해결할 수 있습니까?

.9%의 「99.9%」%ORA-65096: invalid common user or role name는, 에 가 있을 에 합니다.ORCL(CDB)은 ORCLPDB(PDB)는 ORCLPDB(PDB)를 사용합니다.


위험 - 잘못된 방법으로 사용자를 작성해야 할 경우 다음 단계를 따르십시오.

이와 같이 문서화되어 있지 않은 파라미터(선행 밑줄로 표시)는 Oracle Support의 지시에 따라서만 설정해야 합니다.이러한 지침 없이 이러한 매개 변수를 변경하면 지원 계약이 무효화될 수 있습니다.그러니 네 책임으로 해

「」를 는,"_ORACLE_SCRIPT"=trueORACLE_MAINTED 'Y'를 선택합니다.이러한 사용자와 개체는 일부 DBA 스크립트에서 잘못 제외됩니다.또한 일부 시스템 스크립트에 잘못 포함될 수 있습니다.

위의 위험을 감수하고 일반 사용자를 올바르게 작성하지 않으려면 사용자를 작성하기 전에 다음 명령을 실행하십시오.

alter session set "_ORACLE_SCRIPT"=true;  

나는 여기서 답을 찾았다.

방금 oracle11g을 설치했습니다.

ORA-65096: Oracle의 공통 사용자 또는 역할 이름이 잘못되었습니다.

아니요, Oracle 12c가 설치되어 있습니다.그 오류는 on일 수 밖에 없다.12c질 , , , , , , , , , , , , , , 、 。11g

데이터베이스 버전은 항상 소수점 이하 4자리까지 확인하십시오.

SELECT banner FROM v$version WHERE ROWNUM = 1;

Oracle 12c 멀티테넌트 컨테이너 데이터베이스의 특징은 다음과 같습니다.

  • 뿌리 용기(CDB)
  • 및/또는 제로, 하나 또는 여러 개의 PDB(Pluggable Database)가 있습니다.

데이터베이스를 컨테이너 데이터베이스로 생성해야 합니다.컨테이너에 사용자(CDB$ROOT)를 작성하려고 할 때는 PLUGGABLE 데이터베이스에 사용자를 작성해야 합니다.

컨테이너에 애플리케이션 관련 개체를 생성해서는 안 됩니다. 컨테이너에는 플러그형 데이터베이스의 메타데이터가 저장됩니다.일반적인 데이터베이스 작업에는 플러그형 데이터베이스를 사용해야 합니다.그렇지 않으면 컨테이너로 생성하지 말고 멀티 테넌시(Multi-tenancy)를 사용하지 마십시오.그러나 12cR2 이후에는 컨테이너 이외의 데이터베이스를 작성할 수 없습니다.

샘플 스키마는 이미 설치되어 있을 가능성이 높기 때문에 플러그형 데이터베이스에서 잠금을 해제하기만 하면 됩니다.

데이터베이스를 「」로 한 경우, 다음과 같이 합니다.pdborcl:

sqlplus SYS/password@PDBORCL AS SYSDBA

SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;

sqlplus scott/tiger@pdborcl

SQL> show user;
USER is "SCOTT"

PDB를 표시하고 루트 컨테이너에서 플러그형 데이터베이스에 연결하려면 다음 절차를 수행합니다.

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO

SQL> alter session set container = ORCLPDB;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB

Oracle 12c 설치필수 절차 참조


주의: 다음을 사용할 것을 권장합니다._ORACLE_SCRIPTtrue로 설정하는 숨겨진 매개 변수는 프로덕션 시스템에서 위험하며 지원 계약이 무효화될 수도 있습니다.Oracle 지원에 문의하지 않고 숨겨진 매개 변수를 사용하지 마십시오.

Oracle 12c 이상에서는 다음 두 가지 유형의 데이터베이스가 있습니다.

  1. 컨테이너 데이터베이스(CDB) 및
  2. 플러그형 데이터베이스(PDB)

사용자를 작성하는 경우 다음 두 가지 방법이 있습니다.

  1. "컨테이너 사용자" 또는 "공통 사용자"를 생성할 수 있습니다.
    일반 사용자는 현재 및 미래의 PDB뿐만 아니라 CBD에도 속합니다.즉, 할당된 권한에 따라 컨테이너 DB 또는 플러그형 DB에서 작업을 수행할 수 있습니다.

    create user c##username identified by password;

  2. "플러그 가능 사용자" 또는 "로컬 사용자"를 생성할 수 있습니다.
    PDB로 하다이러한 사용자에게는 관리자 권한이 부여될 수 있지만 자신이 속한 PDB에 대해서만 부여됩니다.이를 위해서는 다음과 같이 플러그형 데이터 파일에 연결해야 합니다.

    alter session set container = nameofyourpluggabledatabase;

    거기서, 통상은 다음과 같이 유저를 작성할 수 있습니다.

    create user username identified by password;

사용할 테이블스페이스를 지정해야 합니다.DB Import/export 시 유용합니다.상세한 것에 대하여는, https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503 를 참조해 주세요.

SQL> alter session set "_ORACLE_SCRIPT"=true;  
SQL> create user sec_admin identified by "Chutinhbk123@!";

Oracle 사용자를 생성한 후 이를 사용하여 DB 작업을 수행하는 것이 목표라면 다음과 같은 작업을 수행하는 것이 좋습니다.

  • sysdba로 로그하다
  • pdb(플러그 가능 데이터베이스) 생성
  • PDB 사용자 생성

다음에 나타내는 것은 단순히 dbu uri를 사용하여 "localhost"를 변경하는 것이 아니라면 localhost에서 db를 사용하고 있다고 가정합니다.

샘플코드

sysdba로 로그:

$ sqlplus sys/<your_admin_pws>@localhost as sysdba

다음으로 다음을 수행합니다.

create pluggable database MYDATABASE
admin user Scott identified by tiger;
file_name_convert = ('/pdbseed/', '/mydatabase/')
;

alter pluggable database MYDATABASE open;

사용자 Scott에게 권한을 부여할 수 있습니다.@localhost에서 로그아웃한 후 sysdba로 새 DB에 다시 로그인하십시오.

$ sqlplus sys/<your_admin_pws>@localhost/MYDATABASE as sysdba

스캇에게 뭐든 허락해줘요

grant connect to Scott;
grant create view to Scott;
grant create table to Scott;
grant create trigger to Scott;

이제 사용할 수 있습니다. 빈 데이터베이스 인스턴스와 사용자가 있습니다.로그인만 하면 됩니다.

$ sqlplus Scott/tiger@localhost/MYDATABASE

보너스

그 후 테이블스페이스와 쿼터에 문제가 있었습니다.「」로 로그 .sqlplus sys/<your_admin_pws>@localhost/MYDATABASE as sysdba

모든 테이블스페이스를 다음과 같이 나열할 수 있습니다.

SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM USER_TABLESPACES;

새 테이블스페이스를 생성할 수 있습니다.

CREATE TABLESPACE TABLESPACENAME DATAFILE 'tablespace_datafile.dat' SIZE 10M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M;

깨진 테이블스페이스는

Drop tablespace TABLESPACENAME including contents and datafiles;

테이블스페이스에 대한 "접근"을 Scott에게 허용할 수 있습니다.

alter user Scott quota unlimited on TABLESPACENAME;

N.B. N.B.quota unlimited방법일 를 제한하는 에 대해서는 를 참조해 .

여기에 이미지 설명 입력 다중 Oracle 버전 12 이상에서는 다음 두 가지 유형의 사용자가 있습니다.

  1. Create user 실행해야 .c##username identified by passwod;
  2. 로컬 사용자: PDBS 데이터베이스에 속합니다(부모 CBD 컨테이너와 관련된 요소).사용한 구문은 로컬 사용자의 작성과 일치합니다.

PDBS(Pluggable Database)에 있는 경우 문제를 해결하려면 다음과 같이 하십시오.

create user c##Scott identified by tiger; 

주의: 사용자 이름 앞에 c##추가해야 합니다.

기본 설치했습니다.orcl그것이 문제의 원인입니다. 다시 and and에재 and and and 。orclpdb(Pluggable DataBase, PDB).

여기에 이미지 설명 입력 여기에 이미지 설명 입력

이 부품은 문제를 해결할 수 있습니다.

세션 세트 "_session_script"=true를 변경합니다.

다음 절차를 따릅니다.

> sqlplus /nolog
> connect sys / as sysdba
> alter session set "_oracle_script"=true;
> create user user1 identified by 1;

사용자가 생성됩니다.

도커 유저에게, 다음의 에러가 발생했을 경우에 주의해 주세요.

Oracle 19c의 도커 이미지를 작성하려다 같은 오류가 발생했는데, 원인은 바로 인정된 답변이었습니다.도커 이미지는 격리된 환경에서 테스트 및 개발하기 위한 원본 데이터베이스의 복사본으로 제작되었기 때문에 원본과 최대한 유사성을 추구했습니다.유감스럽게도 원래 데이터베이스는 표준 Oracle 이미지의 기본 설정이 아닌 CDB 단일 인스턴스 데이터베이스로 구성되었습니다.

우선, 서포트되고 있는 대체 이미지를 시험해 보았습니다만, 또 다른 결점이 있습니다(볼륨의 2배 크기, 하드 코드화).

요.$ORACLE_BASE/*.sh원본 이미지와 대체 이미지 모두에서 스크립트를 사용하여 차이를 분석하고 관련 차이를 원본 스크립트에 적용합니다.본질적인 변화는 에 있었다.dbca.rsp.tmpl 및 "중"$ORACLE_PDB, " "의 재설정alter system시작 SQL 스크립트 및 헬스 체크와 같은 추가 관련 변경을 수행해야 합니다.

그 후 oracle은 CDB 이외의 모드로 정상적으로 기동했습니다. It can be verified trying 그것은 검증할 수 있다create user foo identified by foo; as ~하듯이system사용자() 또는 용) 자는 user) 또 ( the) (select name, cdb, con_id from v$database;(환 ( returns (다니됩whichcdb=0).).

Might be, more safe alternative to 아마도, 보다 안전한 대안일 것이다."_ORACLE_SCRIPT"=true is to change 변하다"_common_user_prefix"부에서C##빈 문자열로 이동합니다.null인 경우 - 일반 사용자에게는 모든 이름을 사용할 수 있습니다.거기서 찾았어요.

이 값을 변경하는 동안 ORA-02095 파라미터는 변경할 수 없으며 구성(소스)에 따라 여러 가지 방법으로 수정할 수 있습니다.

그래서 나는 그것을 했다:

alter system set _common_user_prefix = ''; scope=spfile;

SQL 스크립트 .sql을 /opt/oracle/scripts/startup 디렉토리에 드롭했을 때 이 오류가 발생했습니다.이 디렉토리의 .sql 또는 .sh 스크립트는 모두 /opt/module/runUserScripts.sh에 의해 자동으로 실행됩니다.SQL 스크립트는 sysdba(항상 적절하지는 않을 수 있음)로 실행되며 .sh 스크립트는 현재 사용자로 실행됩니다.두 가지 옵션이 있습니다.

  1. SQL srcript 시작 부분에 적절한 CONNECT 문을 입력합니다.

  2. 시작 디렉토리의 .sQL 스크립트를 사용하여 시작 디렉토리에서 .x/또는 sql sh 컬 른 를 트 행 에 령 합 다 서 script 을 다 해 sqlplus system/<password>@<pluggable> @<filename>.sql.

이게 도움이 됐으면 좋겠네요.복.

데이터베이스 연결 도구에 대한 사용자 의존성 생성

sql plus
SQL> connect as sysdba;
Enter user-name: sysdba
Enter password:
Connected.
SQL> ALTER USER hr account unlock identified by hr;
User altered
 then create user on sql plus and sql developer

언급URL : https://stackoverflow.com/questions/33330968/error-ora-65096-invalid-common-user-or-role-name-in-oracle-database

반응형