카테고리 없음

Oracle CDB/PDB

프로틴형님 2025. 1. 31. 12:20

Situation

개발계 데이터베이스 접근 권한을 획득한 후 Toad에서 내 계정 정보를 조회 하는 SQL을 작성했다.

SELECT * FROM T??????? WHERE ORG_?? = '124??????????';

SQL이 잘 실행되는 걸 확인하고 연결된 DBMS에 database가 얼마나 있을지 궁금하여 평소 작성하던 다음 구문을 실행했다.

show databases;

그랬더니 실행이 안 된다 ;; 생각해보니 기간계 DBMS는 Oracle이었다.

그래서 GPT 형님한테 Oracle DB 목록 조회하는 SQL을 작성해달라고 했는데, Oracle은 CDB / PDB로 데이터베이스 개념이 나뉘어 있다고 알려줬다. 그래서 이게 뭐지 하고 계속 물어봤다.


Oracle CDB / PDB

CDB (Container Database)

여러 개의 PDB를 포함하는 데이터베이스이다. 데이터베이스의 공통 인프라와 자원을 제공하며, 모든 PDB가 이를 공유한다. CDB 자체는 독립적인 데이터베이스 시스템으로 작동한다.

 

PDB (Pluggable Database)

CDB 내에서 독립적으로 운영되는 데이터베이스이다. 각 PDB는 CDB의 자원을 공유하지만, 데이터와 메타데이터는 독립적으로 유지된다. PDB는 각기 다른 애플리케이션 또는 사용자 데이터베이스를 나타낼 수 있다.

 

→ 멀티테넌트 아키텍처

하나의 데이터베이스 인프라 내에서 여러 tenan를 격리하여, 각 테넌트가 독립적으로 데이터베이스를 사용할 수 있게 하는 아키텍처다.

 

테넌트는 일반적으로 애플리케이션, 조직 또는 사용자 그룹을 의미한다고 하네용

 

흐음. 많은 기업에서 Oracle을 사용하는 이유가 검증된 안정적인 DBMS라는 것 외에도 멀티테넌트 아키텍처로 권한(PDB 접근 제어 가능) / 회사 별 데이터베이스 분리와 같은 이유로 사용할 수 있겠구나 라는 생각을 하게 되었다.


Practice

ㅇㅋ 이제 대충 Oracle 데이터베이스에 대해 개념은 알았고 하던 데이터베이스 목록 조회 해보자고.

GPT 형님한테 물어보면 친절히 뭐라 작성해야 하는지 알려준다. 그저 god...

SELECT NAME, CDB FROM V$DATABASE;

→ ‘ORA-00942’ 에러 발생 .. V$은 내부 딕셔너리인데 따로 권한이 필요하다고 한다. 그리고 내가 생각했던 거와 데이터베이스 구조가 다르다.

→ 데이터베이스는 계정 생성 신청 시 선택한 DB만 접속 가능하다.

흐음.. 나중에 알아보자 ~ ㅜ 그냥 DBA님 찾아봬서 궁금한 거 물어봐야겠다.


Etc

Toad도 기존에 사용했던 DataGrip과 비슷하게 (윈도우에서) Ctrl + Enter로 SQL을 실행할 수 있었다.

방금 Toad에 SQL 문을 드래그해서 Ctrl + U 했는데 대문자로 전환됐다 ~~ Ctrl + L 하면 소문자로도 되네요