본문 바로가기

Database/Oracle

23 - [Oracle 19C] To query data files

 

 

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>

SQL> select name,open_mode,con_id from v$pdbs;

NAME		     OPEN_MODE	    CON_ID
-------------------- ---------- ----------
PDB$SEED	     READ ONLY		 2
ORCLPDB 	     READ WRITE 	 3

SQL> col file_name for a50
SQL> select file_name,file_id,tablespace_name,con_id
from cdb_data_files;
  2
FILE_NAME					      FILE_ID TABLESPACE_NAME	  CON_ID
-------------------------------------------------- ---------- --------------- ----------
/u01/app/oracle/oradata/ORCL/users01.dbf		    7 USERS		       1
/u01/app/oracle/oradata/ORCL/undotbs01.dbf		    4 UNDOTBS1		       1
/u01/app/oracle/oradata/ORCL/system01.dbf		    1 SYSTEM		       1
/u01/app/oracle/oradata/ORCL/sysaux01.dbf		    3 SYSAUX		       1
/u01/app/oracle/oradata/ORCL/orclpdb/system01.dbf	    9 SYSTEM		       3
/u01/app/oracle/oradata/ORCL/orclpdb/sysaux01.dbf	   10 SYSAUX		       3
/u01/app/oracle/oradata/ORCL/orclpdb/undotbs01.dbf	   11 UNDOTBS1		       3
/u01/app/oracle/oradata/ORCL/orclpdb/users01.dbf	   12 USERS		       3

8 rows selected.

SQL>

 

 

디비 사용자는 root 이지만, cdb_ 에서 조회할때는 자기 컨테이너 및 하위 컨테이너가 포함된 모든 데이터 파일이 보이지만, dba_ 에서 조회할때는 자신의 컨테이너에 있는 데이터 파일만 조회가 된다.

 

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>
SQL>
SQL> select file_name,file_id,tablespace_name
from dba_data_files;
  2
FILE_NAME					      FILE_ID TABLESPACE_NAME
-------------------------------------------------- ---------- ---------------
/u01/app/oracle/oradata/ORCL/users01.dbf		    7 USERS
/u01/app/oracle/oradata/ORCL/undotbs01.dbf		    4 UNDOTBS1
/u01/app/oracle/oradata/ORCL/system01.dbf		    1 SYSTEM
/u01/app/oracle/oradata/ORCL/sysaux01.dbf		    3 SYSAUX

 

 

 

세션 명령어로 컨테이너 위치를 변경하면 dba_ 조회되는 데이터 파일 정보도 변경되는 것을 볼 수 있다.

 

SQL> alter session set container=orclpdb;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
ORCLPDB
SQL>

SQL> select file_name,file_id,tablespace_name
from dba_data_files;  2

FILE_NAME					      FILE_ID TABLESPACE_NAME
-------------------------------------------------- ---------- ---------------
/u01/app/oracle/oradata/ORCL/orclpdb/system01.dbf	    9 SYSTEM
/u01/app/oracle/oradata/ORCL/orclpdb/sysaux01.dbf	   10 SYSAUX
/u01/app/oracle/oradata/ORCL/orclpdb/undotbs01.dbf	   11 UNDOTBS1
/u01/app/oracle/oradata/ORCL/orclpdb/users01.dbf	   12 USERS

 

 

 

하지만 cdb_ 테이블로 조회를 하여도 로그인 사용자 자신 및 하위의 컨테이너만 조회가 가능해서 상위 컨테이너인 cdb$root 사용자의 데이터 파일은 조회가 되지 않는다.

 

SQL> select file_name,file_id,tablespace_name,con_id
from cdb_data_files order by con_id, file_id; 

FILE_NAME					      FILE_ID TABLESPACE_NAME	  CON_ID
-------------------------------------------------- ---------- --------------- ----------
/u01/app/oracle/oradata/ORCL/orclpdb/system01.dbf	    9 SYSTEM		       3
/u01/app/oracle/oradata/ORCL/orclpdb/sysaux01.dbf	   10 SYSAUX		       3
/u01/app/oracle/oradata/ORCL/orclpdb/undotbs01.dbf	   11 UNDOTBS1		       3
/u01/app/oracle/oradata/ORCL/orclpdb/users01.dbf	   12 USERS		       3

SQL>