联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在Oracle 12.1.0.1版本中,在cdb数据库启动过程中,业务pdb无法自动open,如果要实现该功能,需要人工写触发器来实现cdb open后,pdb 给open起来.在12.1.0.2及其以后版本,可以通过设置ALTER PLUGGABLE DATABASE PDB SAVE STATE来实现在cdb open之后业务pdb能够自动open.
数据库启动后pdb未自动open
XFF_CDB$ROOT@SYS> startup ORACLE 例程已经启动。 Total System Global Area 805306368 bytes Fixed Size 3050800 bytes Variable Size 394265296 bytes Database Buffers 297795584 bytes Redo Buffers 5337088 bytes In-Memory Area 104857600 bytes 数据库装载完毕。 数据库已经打开。 XFF_CDB$ROOT@SYS> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0 PL/SQL Release 12.1.0.2.0 - Production 0 CORE 12.1.0.2.0 Production 0 TNS for 64-bit Windows: Version 12.1.0.2.0 - Production 0 NLSRTL Version 12.1.0.2.0 - Production 0 XFF_CDB$ROOT@SYS> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB MOUNTED
查询dba_pdb_saved_states无记录
XFF_CDB$ROOT@SYS> select con_name, state from dba_pdb_saved_states; 未选定行
在数据库mount状态下save state
XFF_CDB$ROOT@SYS> ALTER PLUGGABLE DATABASE PDB save state; 插接式数据库已变更。 XFF_CDB$ROOT@SYS> select con_name, state from dba_pdb_saved_states; 未选定行
pdb为mount状态下,执行save state无记录,证明save state不成功
在数据库open状态下save state—-设置pdb随cdb启动
XFF_CDB$ROOT@SYS> ALTER PLUGGABLE DATABASE PDB open; 插接式数据库已变更。 XFF_CDB$ROOT@SYS> ALTER PLUGGABLE DATABASE PDB save state; 插接式数据库已变更。 XFF_CDB$ROOT@SYS> col con_name for a20 XFF_CDB$ROOT@SYS> select con_name, state from dba_pdb_saved_states; CON_NAME STATE -------------------- -------------- PDB OPEN
pdb为open状态下,执save state成功.
需要注意save state需要在pdb open情况下执行才能够生效.
重启数据库测试pdb随cdb启动
XFF_CDB$ROOT@SYS> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 XFF_CDB$ROOT@SYS> startup ORACLE 例程已经启动。 Total System Global Area 805306368 bytes Fixed Size 3050800 bytes Variable Size 364905168 bytes Database Buffers 327155712 bytes Redo Buffers 5337088 bytes In-Memory Area 104857600 bytes 数据库装载完毕。 数据库已经打开。 XFF_CDB$ROOT@SYS> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB READ WRITE NO
禁用pdb随cdb启动—DISCARD STATE
XFF_CDB$ROOT@SYS> ALTER PLUGGABLE DATABASE PDB DISCARD state; 插接式数据库已变更。 XFF_CDB$ROOT@SYS> select con_name, state from dba_pdb_saved_states; 未选定行 XFF_CDB$ROOT@SYS> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 XFF_CDB$ROOT@SYS> startup ORACLE 例程已经启动。 Total System Global Area 805306368 bytes Fixed Size 3050800 bytes Variable Size 364905168 bytes Database Buffers 327155712 bytes Redo Buffers 5337088 bytes In-Memory Area 104857600 bytes 数据库装载完毕。 数据库已经打开。 XFF_CDB$ROOT@SYS> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB MOUNTED XFF_CDB$ROOT@SYS>
12.1.0.1中设置pdb随cdb启动
CREATE TRIGGER open_all_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'alter pluggable database all open'; END open_all_pdbs; /
在11.1.0.2及其以后版本,可以通过设置ALTER PLUGGABLE DATABASE PDB SAVE STATE来实现在cdb open之后业务pdb能够自动open.
—————————
此处有笔误,应该为“在12.1.0.2及其以后版本”吧。
谢谢,已经更正