오라클

19c CDB환경에서 PDB로 바로 접속하는 방법

pat98 2024. 7. 9. 15:53

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