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 값을 뽑아내여 재사용할 시 주의해야 합니다.
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