본문 바로가기

IT관련

오라클 멀티테넌트 DB 접속 방법 (Connect Multi-Tenant by SQLPlus)

오라클 멀티테넌트 기능에 대한 기본적인 설명은 여기를 참조하세요. => >> 오라클 멀티테넌트 DB 기본개념 정리 <<

 

Multi-Tenant 로 설치된 Oracle DB 에서 "sqlplus / as sysdba" 로 접속하면 CDB(Container DB) 로 접속하게 됩니다.

컨테이너DB는 Pluggable DB들을 담고 있는 말그대로 컨테이너 같은 존재이죠~

 

 

사용자의 데이터가 들어갈 DB는 PDB(Pluggable DB) 이기 때문에 PDB로 접속해야 합니다.

 

DB 서버 외부에서 접속할때는 어차피 다 SQL*Net 이나 JDBC 형태로 접속하기 때문에 싱글DB에 접속하는 것과 방법은 똑같습니다.

 

DB 서버 내부에서 SQL*Plus 로 접속하는 경우는 아래와 같이 4가지 방식을 사용할 수 있습니다.

 

1) CDB 에 접속한 후 alter session 커맨드로 세션 변경

2) tnsnames.ora 파일 세팅후 @TNS 로 접속

3) Easy Connect 방식으로 접속

4) TWO_TASK 설정해서 접속

 

2, 3, 4 번 방법은 결국 따지고 보면, 모두 SQL*Net 형태로 접속하는 것입니다.

 

 

1) CDB 에 접속한 후 alter session 커맨드로 세션 변경

 

일단, "sqlplus / as sysdba" 로 CDB 에 접속한 후에, "alter session set container=<PDB명>;" 커맨드로 PDB를 바꾸는 방식입니다.

 

 

 

2) tnsnames.ora 파일 세팅후 @TNS 로 접속

 

SQL*Net 접속할때 Client 쪽에 세팅하는 tnsnames.ora 파일을 DB 서버쪽에 세팅하고, 그 이름을 사용해서 접속하는 방식입니다.

 

 

위는 sys 유저로 접속하는 예시라서 뒤에 "as sysdba" 가 붙었습니다.

scott 유저로 접속하는 경우는 "sqlplus scott/tiger@PDB1" 이라고 하면 됩니다.

 

 

3) Easy Connect 방식으로 접속

 

오라클 Easy Connect 접속방식에 대한 자세한 설명은 아래 링크를 참조하시기 바랍니다.

    >> 오라클 Easy Connect - SQL*Net 을 통한 DB접속 방법 <<

Easy Connect 방식을 사용하면 tnsnames.ora 파일을 세팅하지 않아도 바로 SQL*Net 접속이 가능합니다.

 

 

 

4) TWO_TASK 설정해서 접속

 

TWO_TASK 환경변수를 설정해서 하는 방식은 사실 위 2)번 방식으로 tnsnames.ora 파일이 세팅되어 있을때 사용가능한 방식입니다.

TWO_TASK 환경변수가 하는 역할이 sqlplus 접속시 뒤에 "@TNS명" 을 안붙혀도 붙힌 것처럼 효과를 주는 것밖에는 없기 때문입니다.

 

 

만약, tnsnames.ora 파일에 PDB1 이 TNS 로 등록되어 있지 않으면

"ORA-12154: TNS:could not resolve the connect identifier specified" 에러가 발생합니다.

 

 

SQL*Plus 접속이 많은 경우, 좀 더 편하게 접속하고자 하는 경우는

위 3)번 Easy Connect 방식의 접속 커맨드를 alias 로 아래와 같이 만들어서 .profile 같은 곳에 넣어두고

이 alias 를 사용하면 아주 편합니다.

 

alias pdb1='sqlplus sys@localhost/PDB1 as sysdba'
alias pdb2='sqlplus sys@localhost/PDB2 as sysdba'
alias pdb3='sqlplus sys@localhost/PDB3 as sysdba'
alias pdb1_scott='sqlplus scott/tiger@localhost/PDB1'