DBAtlas · 데이터베이스 운영 아틀라스

현재 컨테이너 확인 및 root에서 모든 PDB 조회(CDB_ / CONTAINERS)

Oracle멀티테넌트

명령어

-- Current container:
SHOW CON_NAME
SHOW CON_ID
SHOW PDBS
SELECT SYS_CONTEXT('USERENV','CON_NAME') AS con_name,
       SYS_CONTEXT('USERENV','CON_ID')   AS con_id
FROM   dual;

-- All containers, from the root:
SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

-- CDB_ views combine all open PDBs with CON_ID:
SELECT c.name AS container, t.tablespace_name, t.status
FROM   cdb_tablespaces t JOIN v$containers c ON c.con_id = t.con_id
ORDER  BY c.name, t.tablespace_name;

-- Query any table/view across all PDBs with CONTAINERS():
SELECT con_id, COUNT(*) AS users
FROM   CONTAINERS(dba_users)
GROUP  BY con_id ORDER BY con_id;

하는 일

세션이 연결된 컨테이너를 보여 준다. root에서는 CDB_ 뷰와 CONTAINERS() 절로 열려 있는 모든 PDB의 딕셔너리 정보를 하나의 쿼리로 수집한다.

사용 시점

DDL/파라미터 변경 전 올바른 컨테이너에 있는지 확인하고, 모든 PDB에 걸친 공간, 사용자, 객체 인벤토리를 만들기 위해.

주의

읽기 전용. root(CDB$ROOT)에 실수로 애플리케이션 객체나 로컬 사용자를 만들지 않는다. root에서의 ALTER SYSTEM은 CDB 전체에 영향을 준다. CDB_ 뷰와 CONTAINERS()는 열려 있는 PDB만 반환하며, MOUNTED PDB는 결과에 나타나지 않는다.

DBAtlas에서 열기 →

관련 항목