描述:
由于Oracle12c体系结构和Oracle11g有着很大的不同,尤其在Oracle12c引入数据库容器CDB和可插入数据库PDB之后,因此数据库的启动有着明显的不同。当CDB实例关闭重新开启后,PDB均处于mounted状态,因此要通过特定的命令去开启和关闭。以及相应的PDB随实例CDB自动开启设置。
图解:
操作如下:
SQL> select con_id ,name,open_mode from v$pdbs;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST READ WRITE
5 PDBCLOUD READ WRITE
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 859832320 bytes
Fixed Size 3051424 bytes
Variable Size 603979872 bytes
Database Buffers 247463936 bytes
Redo Buffers 5337088 bytes
数据库装载完毕。
SQL> select con_id ,name,open_mode from v$pdbs; --实例为mounted,pdb也为mounted
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED MOUNTED
3 PDBSKY MOUNTED
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> alter database open;
数据库已更改。
SQL> select con_id ,name,open_mode from v$pdbs; --实例开启后,pdb均为mounted
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY MOUNTED
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> alter pluggable database pdbcloud open; --开启可插入数据库pdbcloud
插接式数据库已变更。
SQL> select con_id ,name,open_mode from v$pdbs; --pdbcloud为READ WRITE状态
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> alter pluggable database all open; --将所有可插入数据库开启
插接式数据库已变更。
SQL> select con_id ,name,open_mode from v$pdbs; --剩余的两个pdb也被开启
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST READ WRITE
5 PDBCLOUD READ WRITE
SQL> alter pluggable database all except pdbsky close; --将除了pdbsky之外的pdb全部关闭
插接式数据库已变更。
SQL> select con_id ,name,open_mode from v$pdbs; --pdbtest和pdbcloud关闭
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> select count(*) from cdb_triggers;
COUNT(*)
----------
2372
SQL> select count(*) from dba_triggers;
COUNT(*)
----------
593
SQL> create trigger open_pdbsky after startup on database --创建触发器:指定pdb和实例同时开启
2 begin
3 execute immediate 'alter pluggable database pdbsky open';
4 end;
5 /
触发器已创建
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 859832320 bytes
Fixed Size 3051424 bytes
Variable Size 603979872 bytes
Database Buffers 247463936 bytes
Redo Buffers 5337088 bytes
数据库装载完毕。
数据库已经打开。
SQL> select con_id ,name,open_mode from v$pdbs; --CDB实例开启,pdbsky也同时开启
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> alter pluggable database all except pdbsky open;
插接式数据库已变更。
SQL> select con_id ,name,open_mode from v$pdbs;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST READ WRITE
5 PDBCLOUD READ WRITE
SQL>
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 859832320 bytes
Fixed Size 3051424 bytes
Variable Size 603979872 bytes
Database Buffers 247463936 bytes
Redo Buffers 5337088 bytes
数据库装载完毕。
数据库已经打开。
SQL> select con_id ,name,open_mode from v$pdbs;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST MOUNTED
5 PDBCLOUD MOUNTED
SQL> alter session set container=pdbtest; --切换容器到pdbtest
会话已更改。
SQL> startup --在特定容器下开启pdb自身
插接式数据库已打开。
SQL> select con_id ,name,open_mode from v$pdbs;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
4 PDBTEST READ WRITE
SQL> conn / as sysdba
已连接。
SQL> select con_id ,name,open_mode from v$pdbs;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDBSKY READ WRITE
4 PDBTEST READ WRITE
5 PDBCLOUD MOUNTED
SQL>