이 블로그 검색

[ORACLE] Multitenant 관리 3. (접속 관련 설정 및 확인 명령어)

본 문서는 sqlplus 및 TNS등으로 CDB/PDB에 접속하는 방법에 대해 다룬다.


1. Multitenant 접속 관련 설정 및 확인 명령어


1.1. Container 확인

각각의 Container에 접속하는 방법은 "DB 접속" 에서 설명한다.

1.1.1. sqlplus 명령어를 이용하여 확인

전체 pdb container 확인

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------ --------------- ----------

2 PDB$SEED READ ONLY NO

3 PDB1 READ WRITE NO

4 PDB2 MOUNTED

현재 접속한 container 확인

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

현재 접속한 container의 ID 확인

SQL> show con_id

CON_ID

------------------------------

1

1.1.2. Query를 통한 확인 (sys_context)

현재 접속한 container 확인

SQL> select sys_context('userenv','con_name') as current_container from dual ;

CURRENT_CONTAINER

----------------------------------------------------------------------------------------------------

CDB$ROOT

1 row selected.

1.1.3. Query를 통한 확인 (Dictionary)

Dictionary를 통해 확인 가능하며, Grid 환경을 위한 gv$ 뷰도 존재한다.

pdb container 확인

SQL> col name for a20

select con_id, name, open_mode, restricted from v$pdbs ;

CON_ID NAME OPEN_MODE RESTRI

---------- -------------------- -------------------- ------

2 PDB$SEED READ ONLY NO

3 PDB1 READ WRITE NO

4 PDB2 MOUNTED

5 PDB3 MOUNTED

3 rows selected.

CDB를 포함한 모든 Container 확인

SQL> col name for a20

select con_id, name, open_mode, restricted from v$containers ;

CON_ID NAME OPEN_MODE RESTRI

---------- -------------------- -------------------- ------

1 CDB$ROOT READ WRITE NO

2 PDB$SEED READ ONLY NO

3 PDB1 READ WRITE NO

4 PDB2 MOUNTED

4 rows selected.

1.2. DB 접속

1.2.1. 로컬 OS 인증을 통한 PDB 접속

쉘 환경변수 입력을 통한 접속

ORACLE_PDB_SID={SID} 쉘 변수를 이용하여 OS 인증을 통하여 모든 컨테이너에 접속 가능하다.

(sys 유저는 기본적으로 common 유저이기 때문이다.)

해당 변수를 사용하지 않는 경우 CDB로 접속 된다.

oracle@orcl:CDB$ROOT:/home/oracle $ export ORACLE_PDB_SID=PDB1

oracle@orcl:PDB1:/home/oracle $ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 22 03:28:53 2021

Version 19.11.0.0.0

Copyright (c) 1982, 2020, Oracle. All rights reserved.

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.11.0.0.0

SQL> show con_name

CON_NAME

------------------------------

PDB1

1.2.2. alter session을 통한 container 변경

alter session 권한이 있는 유저라면, 어떤 방식으로든 접속 후 container를 변경 할 수 있다.

SQL> alter session set container=PDB1 ;

Session altered.

SQL> select sys_context('userenv','con_name') as current_container from dual ;

CURRENT_CONTAINER

---------------------------------------------------------------------------------

PDB1

1 row selected.

1.2.3. TNS를 이용한 접속

접속한 LOCAL의 DB일지라도, PDB로 바로 접속하는 경우 TNS Description이나 TNS ALIAS로 접속해야한다.

$ sqlplus pdbadmin@pdb1

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 15 23:22:01 2021

Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Enter password:

Last Successful login time: Tue Jun 15 2021 23:21:36 -04:00

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

SQL> show user;

USER is "PDBADMIN"

SQL> show con_name

CON_NAME

------------------------------

PDB1

$ sqlplus sys@pdb1 as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 15 23:22:01 2021

Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Enter password:

Last Successful login time: Tue Jun 15 2021 23:21:36 -04:00

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

SQL> show user;

USER is "SYS"

SQL> show con_name

CON_NAME

------------------------------

PDB1

실제 서비스를 위해서는 ORACLE client 또는 jdbcthin 등으로 접속 하게 된다.TNS를 이용한 접속에 앞서,

LOCAL_LISTENER 및 LITENER 등록 방법에 대한 이해가 필요하다.

이에 관한 상세 내용은 IT INDEXES: [ORACLE] LISTENER 정적 등록과 동적 등록 (With Multitenant) (it-indexes.blogspot.com) 을 참고하도록 한다.




추천 게시글

[ORACLE] Data Pump가 느리거나 멈춘경우.

목록