새소식

RDBMS/ORACLE & TIBERO

ORACLE USER 생성 오류 (ORA-65096: invalid common user or role name)

  • -
728x90
반응형

ORACLE 테스트 중 유저 생성을 하게 되면 ORA-65096 에러를 만나게 되는 경우가 있습니다.

SQL> create user test_user1 identified by test;
create user test_user1 identified by test
            *
ERROR at line 1:
ORA-65096: invalid common user or role name

SQL> create user "test_user2" identified by test;
create user "test_user2" identified by test
            *
ERROR at line 1:
ORA-65096: invalid common user or role name

ORACLE 유저 생성 시 12버전 이상 부터 "Multitenant Architecture" 추가 되면서 유저 생성 하는 방법이 달라졌다.

SQL> create user c##test_user1 identified by test;

User created.

유저명 앞에 c##을 붙여줘야 만들어진다. (Multitenant개념의 CDB#ROOT 때문)

SQL> alter session set "_ORACLE_SCRIPT"=true;

Session altered.

SQL> create user test_user1 identified by test;

User created.

"_ORACLE_SCRIPT"=true 파라미터를 세션 파라미터로 사용하여 유저를 만들면 됩니다.

 

다만, "_ORACLE_SCRIPT"=true로 만들어진 테이블 들에 대해서는 dba_objects에 ORACLE_MAINTAINED 컬럼 값이 Y로 설정 됩니다. 해당 컬럼 값은 테이블의 DDL 값을 뽑아내여 재사용할 시 주의해야 합니다.

 

 

Be aware when you use _ORACLE_SCRIPT in scripts

Recently I came across this when I gave a Multitenant workshop at a German customer. As part of the workshop I explained the _ORACLE_SCRIPT statements you will find in almost all scripts in ?/rdbms…

mikedietrichde.com

SQL> alter session set "_ORACLE_SCRIPT"=false;
CREATE TABLE test_user1.tbl2(col1 number);
CREATE TABLE c##test_user2.tbl2(col1 number);

SQL> SET LINESIZE 150
COL owner for a30
COL object_name for a30
COL object_type for a30
COL oracle_maintained for a30
select owner, object_name, object_type, oracle_maintained from dba_objects where object_name in ('TBL1','TBL2','TBL3','TBL4') order by owner desc;

OWNER			       OBJECT_NAME		      OBJECT_TYPE		     ORACLE_MAINTAINED
------------------------------ ------------------------------ ------------------------------ ------------------------------
TEST_USER1		       TBL2			      TABLE			     N
C##TEST_USER2		       TBL2			      TABLE			     N

SQL> alter session set "_ORACLE_SCRIPT"=true;
CREATE TABLE test_user1.tbl1(col1 number);
CREATE TABLE c##test_user2.tbl1(col1 number);

SQL> SET LINESIZE 150
COL owner for a30
COL object_name for a30
COL object_type for a30
COL oracle_maintained for a30
select owner, object_name, object_type, oracle_maintained from dba_objects where object_name in ('TBL1','TBL2','TBL3','TBL4') order by owner desc;

OWNER			       OBJECT_NAME		      OBJECT_TYPE		     ORACLE_MAINTAINED
------------------------------ ------------------------------ ------------------------------ ------------------------------
TEST_USER1		       TBL2			      TABLE			     N
TEST_USER1		       TBL1			      TABLE			     Y
C##TEST_USER2		       TBL2			      TABLE			     N
C##TEST_USER2		       TBL1			      TABLE			     Y


 

728x90
반응형

'RDBMS > ORACLE & TIBERO' 카테고리의 다른 글

sqlplus history 사용 (rlwrap)  (0) 2022.11.07
ORACLE 히든 파라미터 조회  (0) 2022.11.04
TIBERO 버전 확인  (0) 2022.10.10
ORACLE 버전 확인  (0) 2022.10.10
TIBERO Linux 버전 설치  (0) 2022.09.25

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.