容器数据库CDB和可插拔数据库PDB是Oracle 12c的新特性。在CDB中最高层container被称为CDB$ROOT;用来创建其他PDB的模板PDB被称为PDB$SEED;CDB中可以用PDB$SEED创建多个PDB。

在下面的例子中,CDB中有三个可插拔数据库,其中一个是PDB$SEED,另外两个是用PDB$SEED为模板创建的PDB1和PDB2。

在CDB$ROOT中运行以下SQL语句:

SQL>  select name, open_mode from v$pdbs;

NAME                         OPEN_MODE

--------------------------  ----------

PDB$SEED                 READ ONLY

PDB1                           READ WRITE

PDB2                           READ WRITE

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/OSTE/system01.dbf

/u01/app/oracle/oradata/OSTE/sysaux01.dbf

/u01/app/oracle/oradata/OSTE/undotbs01.dbf

/u01/app/oracle/oradata/OSTE/pdbseed/system01.dbf

/u01/app/oracle/oradata/OSTE/users01.dbf

/u01/app/oracle/oradata/OSTE/pdbseed/sysaux01.dbf

/u01/app/oracle/oradata/OSTE/PDB1/system01.dbf

/u01/app/oracle/oradata/OSTE/PDB1/sysaux01.dbf

/u01/app/oracle/oradata/OSTE/PDB1/PDB1_users01.dbf

/u01/app/oracle/oradata/OSTE/PDB2/system01.dbf

/u01/app/oracle/oradata/OSTE/PDB2/sysaux01.dbf

/u01/app/oracle/oradata/OSTE/PDB2/PDB2_users01.dbf

12 rows selected.

SQL>  select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/OSTE/control01.ctl

/u01/app/oracle/fast_recovery_area/OSTE/control02.ctl

SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/OSTE/redo03.log

/u01/app/oracle/oradata/OSTE/redo02.log

/u01/app/oracle/oradata/OSTE/redo01.log

SQL> select con_id,name from v$tempfile;

CON_ID NAME

---------- --------------------------------------------------------------------------------

1 /u01/app/oracle/oradata/OSTE/temp01.dbf

2 /u01/app/oracle/oradata/OSTE/pdbseed/pdbseed_temp012014-12-18_07-02-56-PM.dbf

3 /u01/app/oracle/oradata/OSTE/PDB1/temp012014-12-18_07-02-56-PM.dbf

4 /u01/app/oracle/oradata/OSTE/PDB2/temp012014-12-18_07-02-56-PM.dbf

由以上可以看出以下几点

1.CDB和每个PDB都有各自的SYSTEM和SYSAUX表空间

2.PDB没有独自的控制文件和重做日志文件

3.PDB可以有自己的临时表空间

4.整个CDB只有一个UNDO表空间,PDB没有独自的UNDO表空间

另外,CDB和PDB使用相同的listener.ora, tnsnames.ora和sqlnet.ora文件,使用同一个SGA,使用相同的一组后台OS进程。

TIP: 如何登录PDB

$ sqlplus sys/@localhost:1521/pdb1 as sysdba

$ sqlplus sys/@localhost:1521/pdb2 as sysdba

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐