19c CDB환경에서 PDB로 바로 접속하는 방법
19c CDB 환경에서 PDB로 접속하기 위해서는
1.CDB에 접속
2. SQL> alter session set container=PDB;
이런식으로 접속하곤 하는데 이것 마저 귀찮다면 환경변수 설정하고 바로 SYS나 SYSTEM 계정으로 PDB로 접속할수 있다. = bequeath connections
공식적인 방법은 아니다.
1. 우선 CDB 에 접속하여 아래와 같은 trigger 를 만들어 준다.
SQL>CREATE OR REPLACE NONEDITIONABLE TRIGGER "SYS"."DBMS_SET_PDB" after logon on database
WHEN (user = 'SYS' or user = 'SYSTEM') declare
pdb_name varchar2(64);
begin
DBMS_SYSTEM.get_env ('ORACLE_PDB_SID', pdb_name);
if(pdb_name is not null)
then
EXECUTE IMMEDIATE 'alter session set container = ' || pdb_name;
end if;
exception
when others then
NULL;
end dbms_set_pdb;
/
Trigger created.
2. 오라클 계정 .bash_profile 설정
CDB 이름은 CDB
PDB 이름은 PDB 라고 가정
export ORACLE_SID=CDB
export ORACLE_PDB_SID=PDB
:wq!
저장후..
다시 접속
sqlplus "/as sysdba"
SQL> show user
USER is "SYS"
SQL> show con_name
CON_NAME
------------------------------
PDB
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 PDB READ WRITE NO