时间:2021-07-01 10:21:17 帮助过:79人阅读
在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能够自
在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;
- /
原文地址:设置pdb随cdb一起启动, 感谢原作者分享。