데이터베이스 상태와 버전 정보를 확인합니다.
[oracle@New-Features-12c ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Fri Aug 7
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release With the Partitioning, Oracle Label Security, OLAP, and Real Application Testing options
SQL> select instance_name,status from
INSTANCE_NAME STATUS —————- ———— CDB1 OPEN
SQL> set lines 100 SQL> select * from v$version;
BANNER CON_ID ——————————————————————————– Oracle Database 12c Enterprise Edition Release PL/SQL Release 12.1.0.2.0 – Production 0 CORE 12.1.0.2.0 Production 0 TNS for Linux: Version 12.1.0.2.0 – Production 0 NLSRTL Version 12.1.0.2.0 – Production 0 |
Listener 상태를 확인합니다. 서비스가 기동되어 있고 해당 인스턴스가 “READY” 인 것을 확인합니다.
SQL> !lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 – Production on
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to STATUS of the LISTENER ———————— Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 – Production Start Date 12-AUG-2015 00:47:44 Uptime 0 days 4 hr. 19 min. 17 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/New-Features-12c/listener/alert/log.xml Listening Endpoints Summary… (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=New-Features-12c.compute-kroracleko58578.oraclecloud.internal)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=New-Features-12c.compute-kroracleko58578.oraclecloud.internal)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/12.1.0/dbhome_1/admin/CDB1/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary… Service “CDB1.kroracleko58578.oraclecloud.internal” has Instance “CDB1”, status READY, has Service “CDB1XDB.kroracleko58578.oraclecloud.internal” Instance “CDB1”, status READY, has Service “pdb1.kroracleko58578.oraclecloud.internal” has Instance “CDB1”, status READY, has The command completed successfully |
현재 생성되어 있는 서비스 목록도 확인합니다.
SQL> set lines 120 SQL> col name for a80 SQL> select name,con_id from v$services;
NAME CON_ID ——————————————————————————– pdb1.kroracleko58578.oraclecloud.internal 3 CDB1XDB 1 CDB1.kroracleko58578.oraclecloud.internal 1 SYS$BACKGROUND 1 SYS$USERS 1 |
CON_ID 칼럼 값이 의미하는 바는 아래와 같습니다.
Value in CON_ID Column |
Description |
0 |
The data pertains to the entire CDB |
1 |
The data pertains to the root |
2 |
The data pertains to the seed |
3-254 |
The data pertains to a PDB. Each PDB has its own |
생성되어 있는PDB목록을 확인합니다. SHOW 명령으로도 확인 할 수 있습니다.
SQL> set lines 120 SQL> select con_id,name,open_mode from
CON_ID NAME OPEN_MODE ———- —————————— 2 PDB$SEED READ ONLY 3 PDB1 READ WRITE
SQL> show pdbs
CON_ID CON_NAME OPEN ———- —————————— ———- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO |
SHOW 명령으로 현재 접속한 컨테이너 데이터베이스 이름과ID를 확인합니다. SYS_CONTEXT 함수로도 확인할 수 있습니다.
SQL> show con_name
CON_NAME —————————— CDB$ROOT SQL> show con_id
CON_ID —————————— 1
SQL> select sys_context(‘userenv’,’con_name’) from
SYS_CONTEXT(‘USERENV’,’CON_NAME’) ——————————————————————————————— CDB$ROOT
SQL> select sys_context(‘userenv’,’con_id’) from
SYS_CONTEXT(‘USERENV’,’CON_ID’) ——————————————————————————————— 1 |
CDB의redo log file과control file 구조를 확인합니다. redo log file과control file 은Root 컨테이너나 특정 PDB가 아닌 전체 CDB 소속임을 알 수 있습니다.
SQL> col member for a50 SQL> select group#,con_id,member from
GROUP# CON_ID MEMBER ———- ———- 3 0 /u04/app/oracle/redo/redo03.log 2 0 /u04/app/oracle/redo/redo02.log 1 0 /u04/app/oracle/redo/redo01.log
SQL> col name for a60 SQL> select name,con_id from v$controlfile;
NAME CON_ID ———————————————————— /u02/app/oracle/oradata/CDB1/control01.ctl 0 /u03/app/oracle/fast_recovery_area/CDB1/control02.ctl 0 |
CDB의 데이터파일 구조를 확인합니다. CDB_* View를 통해PDB포함 전체 데이터파일 정보를 확인합니다.
SQL> col file_id for 99999 SQL> col con_id for 99999 SQL> select file_name,tablespace_name,file_id,con_id from
FILE_NAME TABLESPACE FILE_ID CON_ID ———————————————————— /u02/app/oracle/oradata/CDB1/system01.dbf SYSTEM 1 1 /u02/app/oracle/oradata/CDB1/sysaux01.dbf SYSAUX 3 1 /u02/app/oracle/oradata/CDB1/undotbs01.dbf UNDOTBS1 4 1 /u02/app/oracle/oradata/CDB1/users01.dbf USERS 6 1 /u02/app/oracle/oradata/CDB1/PDB1/system01.dbf SYSTEM 12 3 /u02/app/oracle/oradata/CDB1/PDB1/example01.dbf EXAMPLE 15 3 /u02/app/oracle/oradata/CDB1/PDB1/SAMPLE_SCHEMA_users01.dbf USERS 14 3 /u02/app/oracle/oradata/CDB1/PDB1/sysaux01.dbf SYSAUX 13 3
8 rows selected. |
이번에는DBA_* View를 통해 데이터파일 정보를 확인해 봅니다. Root 컨테이너의 데이터파일 정보만 나오는 것을 알 수 있습니다.
SQL> select file_name,tablespace_name,file_id from
FILE_NAME TABLESPACE FILE_ID ———————————————————— /u02/app/oracle/oradata/CDB1/system01.dbf SYSTEM 1 /u02/app/oracle/oradata/CDB1/sysaux01.dbf SYSAUX 3 /u02/app/oracle/oradata/CDB1/undotbs01.dbf UNDOTBS1 4 /u02/app/oracle/oradata/CDB1/users01.dbf USERS 6 |
V$~ View에서는 모든PDB들의 정보가 출력됩니다. 컨테이너별 테이블스페이스 이름은 동일하더라도 해당 데이터파일의 file# 는 다른 것을 알 수 있습니다.
SQL> col name for a20 SQL> select a.file#, b.name, b.ts#, b.con_id from v$datafile
FILE# ———- ——————– ———- 1 SYSTEM 0 1 3 SYSAUX 1 1 4 UNDOTBS1 2 1 6 USERS 4 1 5 SYSTEM 0 2 7 SYSAUX 1 2 16 USERS 3 2 12 SYSTEM 0 3 13 SYSAUX 1 3 14 USERS 3 3 15
11 rows selected. |
CDB의temp file 구조를 확인합니다. 컨테이너마다temp file을 별도로도 가질 수 있음을 알 수 있습니다.
SQL> select file_name,tablespace_name,file_id from
FILE_NAME TABLESPACE ———————————————————— /u02/app/oracle/oradata/CDB1/temp01.dbf TEMP 1 /u02/app/oracle/oradata/CDB1/PDB1/PDB1_temp012015-08-12_01-1 5-39-AM.dbf |
SYSTEM 유저가 어떻게 생성되어 있는 지 확인합니다. SYSTEM 유저와 같이 모든 컨테이너에 존재하는 유저를Common User라고 합니다.
SQL> col username for a30 SQL> select username,common,con_id from cdb_users where
USERNAME COM CON_ID —————————— — —— SYSTEM YES 1 SYSTEM YES 3 |
현재CDB에 생성된 모든Common User를 확인해 봅니다.
SQL> set pages 100 SQL> select distinct username from cdb_users where
USERNAME —————————— DVF APEX_040200 MDSYS FLOWS_FILES GSMUSER AUDSYS DVSYS OJVMSYS APPQOSSYS C##DBAAS_MONITOR WMSYS LBACSYS ANONYMOUS SI_INFORMTN_SCHEMA C##PDBMGR SPATIAL_WFS_ADMIN_USR SYSBACKUP CTXSYS OUTLN ORACLE_OCM APEX_REST_PUBLIC_USER GSMADMIN_INTERNAL MDDATA APEX_PUBLIC_USER ORDDATA SYSDG SYSKM XS$NULL DIP APEX_LISTENER SPATIAL_CSW_ADMIN_USR OLAPSYS SYSTEM ORDSYS DBSNMP ORDPLUGINS GSMCATUSER XDB SYS
39 rows selected. |
Local User는 어떤 것이 있는 지 확인합니다. Root 컨테이너에는Local User 생성이 불가합니다.
SQL> select distinct username,con_id from cdb_users where
USERNAME CON_ID —————————— —— DBAAS_MONITOR 3 SH 3 PDBADMIN 3 HR 3 OE 3 SCOTT 3 PM 3 BI 3 IX 3
9 rows selected. |
CDB 의 Role 구조를 확인합니다. Root 컨테이너에는Local Role 생성이 불가합니다.
SQL> col role for a50 SQL> select role,common,con_id from
ROLE COM CON_ID ————————————————– — CONNECT YES 1 RESOURCE YES 1 DBA YES 1 AUDIT_ADMIN YES 1 : : : DV_DATAPUMP_NETWORK_LINK YES 3 DV_REALM_RESOURCE YES 3 DV_REALM_OWNER YES 3
168 rows selected. |
Privilege 구조를 확인합니다. Privilege의 경우, Common 또는Local의 구분이 없기 때문에 관련 딕셔너리뷰에COMMON 칼럼이 없습니다.
SQL> desc sys.system_privilege_map Name Null? Type —————————————– ——– PRIVILEGE NOT NULL NUMBER NAME NOT NULL VARCHAR2(40) PROPERTY NOT NULL NUMBER
SQL> desc sys.table_privilege_map Name Null? Type —————————————– ——– PRIVILEGE NOT NULL NUMBER NAME NOT NULL VARCHAR2(40) |
Privilege 자체는Common 또는Local 구분이 없으나, Privilege가 부여될 때는 그 구분이 있습니다. 아래system Privilege, object privilege 관련 뷰에는COMMON 칼럼이 있는 것을 확인할 수 있습니다.
SQL> desc cdb_sys_privs Name Null? Type —————————————– ——– GRANTEE VARCHAR2(128) PRIVILEGE VARCHAR2(40) ADMIN_OPTION VARCHAR2(3) COMMON VARCHAR2(3) CON_ID NUMBER
SQL> desc cdb_tab_privs Name Null? Type —————————————– ——– GRANTEE VARCHAR2(128) OWNER VARCHAR2(128) TABLE_NAME VARCHAR2(128) GRANTOR VARCHAR2(128) PRIVILEGE VARCHAR2(40) GRANTABLE VARCHAR2(3) HIERARCHY VARCHAR2(3) COMMON VARCHAR2(3) TYPE VARCHAR2(24) CON_ID NUMBER |
아래 쿼리에서 알 수 있듯이ROLE 은COMMON 또는LOCAL 속성으로 부여될 수 있습니다.
SQL> set lines 120 SQL> col grantee for a30 SQL> col granted_role for a40 SQL> select grantee,granted_role,common,con_id from
GRANTEE GRANTED_ROLE COM CON_ID —————————— SYSTEM DBA YES 1 SYSTEM AQ_ADMINISTRATOR_ROLE YES 1 SYSTEM DBA YES 3 SYSTEM AQ_ADMINISTRATOR_ROLE YES 3
SQL> exit Disconnected from Oracle Database 12c Enterprise Edition With the Partitioning, Oracle Label Security, OLAP, and Real Application Testing options |