TEST DB : ORACLE 21C
PDB LIST : PDB1, PDB3
[1] 계정 생성 시도
: CDB에서는 일반적인 문자열로 계정이 생성되지 않습니다.
CREATE USER PDB_ADMIN IDENTIFIED BY 1111;
* Error : ORA-65096 INVALID COMMON USER OR ROLE NAME
[2] 계정 생성 시도 ( C## = COMMON USER )
: CDB에서 C## prefix로 계정 생성은 됩니다. 하지만, CDB와 모든 PDB에 생성이 됩니다.
모든 DB에 생성되고 눈에 띄므로 특수 or 관리자 계정 용도가 적합합니다.
CREATE USER C##PDB_ADMIN IDENTIFIED BY 1111;
GRANT CREATE SESSION TO C##PDB_ADMIN;
[3] Container 변경해가면서 계정 확인
: 모든 cdb, pdb에 계정이 존재함을 알수 있습니다.
ALTER SESSION SET container=CDB$ROOT;
SELECT * FROM DBA_USERS WHERE USERNAME = 'C##PDB_ADMIN';
ALTER SESSION SET container=PDB1;
SELECT * FROM DBA_USERS WHERE USERNAME = 'C##PDB_ADMIN';
ALTER SESSION SET container=PDB3;
SELECT * FROM DBA_USERS WHERE USERNAME = 'C##PDB_ADMIN';
[4] 권한 확인
: 계정은 모든 CDB, PDB에 만들어지나, 권한은 각 DB에서 별도 부여되고 있습니다.
테스트상 위 [2]번에서 CDB의 C##PDB_ADMIN에게 "CREATE SESSION" SYSTEM 권한을 부여하였습니다.
그러므로 PDB1, PDB3 접속하여 C##PDB_ADMIN에 부여된 권한확인 해보면 0건임을 알 수 있습니다.
ALTER SESSION SET container=CDB$ROOT; -- CDB
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'C##PDB_ADMIN';
ALTER SESSION SET container=PDB1;
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'C##PDB_ADMIN';
ALTER SESSION SET container=PDB3;
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'C##PDB_ADMIN';
[5] 권한 일괄 부여
: 권한을 부여하기 위해 번거롭게 모든 PDB에 접속해서 부여하기는 힘든일입니다.
아래와 같이 CDB에서 CONTAINSER = ALL 처리를 하면 일괄 부여됩니다.
부여 후 위 [4] 확인시 권한이 정상 부여됨을 알수 있습니다.
GRANT CREATE SESSION TO C##PDB_ADMIN CONTAINER=ALL;
[6] 계정 삭제
: PDB에서 삭제를 하면 아래 ORA-65040 에러가 발생합니다.
CDB에서만 삭제가능하며, 삭제시 CDB와 모든 PDB에서 계정은 삭제되므로 주의해야합니다.
DROP USER C##PDB_ADMIN;
CDB에서 DROP 후, 위 [3] 번 계정 조회 재확인
* Error : ORA-65040 operation not allowed from within a pluggable database
[ 참고 ]
1. c## 계정 을 꼭 쓸필요는 없습니다.
신규 PDB 생성시 아래와 같이 관리자 계정명을 임의로 지정하여 사용할 수 있습니다.
create pluggable database pdb3
admin user pdb_admin identified by 1111;
2. Common User의 특징
- 컨테이너
: Common User는 CONTAINER=ALL 옵션을 사용하여 생성됩니다. 이는 CDB 및 모든 PDB에서 유효함을 의미합니다.
- 관리
: 중앙에서 관리되며, 한 번의 생성 및 관리로 모든 PDB에서 동일하게 사용할 수 있습니다.
Common User는 데이터베이스 관리자가 여러 PDB를 관리할 때 효율성을 높이는 데 유용합니다.
3. Common User와 Local User의 차이점
- Common User
: CDB와 모든 PDB에 걸쳐 존재하며, C## 또는 c## 접두사를 사용하여 생성됩니다. Common User는 CDB의 중앙
관리 계정으로, 모든 PDB에서 동일한 권한을 가질 수 있습니다.
- Local User
: 특정 PDB에서만 존재하며, 해당 PDB 내에서만 유효합니다. C## 접두사를 사용하지 않고 생성됩니다.
'ORACLE > MULTITENENT' 카테고리의 다른 글
CDB에서 모든 PDB 정보 조회 (0) | 2024.06.18 |
---|