Multi Tenant Architecture
SQL Plus 혹은 SQL Developer를 통해 접속하는 오라클 서버에 대해서 알아보자. 2013년에 Oracle Database 12c 버전이 출시되며 오라클의 멀티 테넌트 아키텍처가 도입되었다. 과거에는 각 오라클 데이터베이스가 물리적으로 독립된 단일 인스턴스에서 운영되었지만 12c 버전 이후, 물리적 데이터베이스(CDB)와 그 안에 논리적으로 분리된 플러그형 데이터베이스(PDB)가 존재하게 되었다.
Container DataBase와 Pluggable DataBase
아래 그림을 보면 큰 데이터베이스인 하나의 CDB(Container DataBase)가 있고 CDB 내에 여러 개의 PDB(Pluggable DataBase)가 존재한다. 각각의 PDB는 CDB의 자원을 공유하면서도 독립적으로 운영될 수 있다. 각 PDB는 데이터베이스로서의 기능을 갖추고 있으며, 필요시 다른 CDB로 이동(플러그인/언플러그)될 수 있다. 이러한 Multi Tenant Architecture는 운영체제에 가상 컴퓨터를 설치하는 것과 비슷한 개념이라고 생각해도 좋다.
우리가 지난 시간에 접속했던 것은 Pluggable 데이터베이스에 접속한 것이 아니라 Container 데이터베이스에 접속한 것이다.
Seed PDB를 이용한 Pluggable DataBase 생성
Pluggable Database는 Seed PDB에 의하여 생성된다. Seed PDB는 새로운 PDB를 생성하기 위한 기본 템플릿 역할을 하며, 이 템플릿이 복사되어 새로운 PDB가 생성된다. 또한 Pluggable DataBase(PDB)를 생성하는 기본적인 쿼리는 CREATE PLUGGABLE DATABASE이다.
PDB 조회
기존에 CDB에 접속 했던것처럼 XEPDB1에 접속 해보기전에 XEPDB1이 존재하는지 먼저 확인해보자. 명령 프롬프트를 열어 아래 그림의 빨간 박스에 해당하는 텍스트를 입력한 후 select name from v$pdbs; 명령어를 입력하면 파란 박스처럼 NAME이 2개가 나오는데 하나는 PDB$SEED, 하나는 XEPDB1이다. SEED라고 하는 것은 앞으로 만들어질 PDB의 원본에 해당되는 것이고 실제로 존재하는 PDB는 XEPDB1이다. 이것을 하나의 가상 데이터베이스라고 생각해도 좋다. 이제 XEPDB1을 사용하기 위해 XEPDB1에 접속해보자.
※ CREATE PLUGGABLE DATABASE로 PDB를 생성하는 쿼리를 실행하지도 않았는데 XEPDB1이라는 데이터베이스가 존재하는 이유는 Oracle Express Edition 버전은 사용자에게 간편한 설정과 바로 사용 가능한 환경을 제공하기 위해, 설치 과정에서 기본 PDB를 자동으로 생성해주기 때문이다. 이 기본 PDB는 일반적으로 XEPDB1이라는 이름으로 생성되며, 사용자는 DBMS 설치 후 별도의 추가 설정 없이 바로 PDB 환경을 사용할 수 있다.
SQL Developer를 이용해 PDB 서버에 접속하기
저번에 우리는 새로운 데이터베이스 연결을 설정할 때 플러스 버튼을 눌러서 접속 정보를 입력했었다. 입력할 때 저번과 나머지는 동일하지만 Oracle XE설치 시 기본적으로 생성된 Pluggable DataBase의 이름이 XEPDB1이기 때문에 서비스 이름을 xepdb1로 입력해주자. 이제 여기에 접속하게 되면 가상 데이터베이스라고 할 수 있는 PDB 서버에 접속한것이다.
※ 우리가 만든 계정은 PDB1에 있는 계정이고 지난번에 사용했던 '오라클 학습용 서버' 계정은 CDB에 있는 계정이다. 즉 서로 계정도 별도로 있고 데이터베이스도 별도로 있는 완전히 분리돼 있는 별도의 데이터베이스이다.
앞으로 CDB에 접속할 때는 '오라클 학습용 서버'를 선택해서 접속하면 되고 PDB에 접속할 때는 '오라클 학습용 PDB1 서버'를 선택해서 PDB로 접속하면된다.
※ 둘 다 사용자 이름을 sys라고 동일하게 입력하였지만 이는 동일한 계정이 아니고, 각자의 관리자 계정이 따로 있는 것이다.
이제 이 '오라클 학습용 PDB1 서버'에 실제 데이터를 저장하기 위한 파일을 만들면 된다.
원격 접속을 위한 설정 변경
때로는 데이터베이스를 다른 컴퓨터에다가 두는 경우도 있다. 예를 들어서 집에서 내가 노트북을 쓰는데 데이터베이스는 집에 있는 PC에다 설치한 것 처럼 같은 공유기를 쓰고 있는 환경에서 데이터베이스는 PC에만 설치하는 경우가 있을 것이다. 그러면 기본 설정은 로컬로만 접속하게 돼 있어서 노트북으로 접속이 안된다. 하지만 원한다면 로컬이 아닌 원격으로 접속할 수 있다.
원격 접속을 하려면 EXEC DBMS_XDB.SET LISTENER LOCAL ACCESS(TRUE)로 기본설정 되있는것을 FALSE로 바꿔주면 로컬이 아닌 원격에서도 접속할 수 있다.
그리고 데이터베이스는 PC에 설치했다고 가정하였으니 PC에 가서 명령 프롬프트를 열고 IPCONFIG를 입력하면 IP 주소를 확인할 수 있는데 이 IP를 통해 접속을 해야한다.
로컬에 접속할 때는 localhost도 가능하지만 PC가 아닌 노트북에서 접속했다고 하면 그 PC에 해당되는 IP를 입력해서 테스트를 해보고 '성공'이 확인되면 접속할 수 있는 것이다. 하지만 이 PC에 접속할 때 이 PC에 방어벽이 설정돼 있어서 1521번 포트가 열려 있지 않다면 접속이 되지 않는다.
참고자료
[1] 유튜브 채널 뉴렉처 - 오라클 PDB 서버에 접속하기
'💾 Database > Oracle' 카테고리의 다른 글
[오라클] 6.SQL 데이터 타입(숫자형) (0) | 2024.08.31 |
---|---|
[오라클] 5.SQL 데이터 타입(문자열) (2) | 2024.08.30 |
[오라클] 4.사용자 계정, 데이터베이스, 테이블 생성 (0) | 2024.08.27 |
[오라클] 2.SQL Developer 설치하기 (0) | 2024.08.24 |
[오라클] 1.DBMS 설치하기 (0) | 2024.08.21 |