카테고리 없음

오라클 멀티테넌트 DB 접속 방법

필유아사 2024. 1. 29. 18:16

Multi-Tenant 로 설치된 Oracle DB 에서 "sqlplus / as sysdba" 로 기본적으로 접속하면 local DB로 접속하게 됩니다. 물론 TWO_TASK 환경변수에 영향을 받습니다. 아무것도 설정이 되어 있지 않을 경우에는 local CDB로 접속되지만 다른 설정값이 있는 경우 설정된 값의 DB로 접속됩니다.

 

아래 화면은 TWO_TASK 가 설정되어 있지 않은 DB 서버에서 명령어를 수행한 화면입니다. Local 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 설정해서 접속

 

 

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

sqlplus / as sysdba 로 CDB 에 접속한 후에, "alter session set container=<PDB명>;" 명령어로 접속하고자하는 PDB로 접속하는 방법입니다.

 

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

tnsnames.ora 파일에 CDB나 PDB 정보를 설정하고, 그 이름을 사용해서 접속하는 방식입니다.

 

 

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

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

 

 

3) Easy Connect 방식으로 접속

tnsnames 구성할 필요 없이 클라이언트 애플리케이션에서 직접 Oracle 데이터베이스에 대한 연결 주소를 지정할 수 있습니다 .

이 방법은 tnsnames.ora 파일을 생성하고 관리할 필요가 없다는 점에서 편리합니다. DB에 접속할 때 호스트 이름과 포트 번호를 지정하면 됩니다.

예를 들어, 호스트 이름이 shobeen이고 포트 번호가 1521인 서버에 있는 sales_us 데이터베이스에 연결하려고 한다면 다음과 같이 명령어를 실행하면 됩니다.

sqlplus system/admin@//shobeen:1521/sales_us

 

  • 다음 형식을 사용하여 SQL 연결 URL 문자열을 지정

//host[:port][/service_name]

//shobeen:1521/sales_us

  • Alternatively, specify the SQL connect information as an Oracle Net keyword-value pair.
  • Oracle Net 설정과 같이 SQL 연결 정보를 지정

(CONNECT_DATA=(SERVICE_NAME=sales_us)))”

“(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=shobeen) (PORT=1521))

 

 

 

 

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'