CDB重启时如何保持PDB的open模式(文档 ID 1933511.1)

对12.1.0.2及更新版本有效

PDB的默认open mode是什么?

PDB的默认开放模式是MOUNTED(除了PDB $ SEED是READ ONLY,不能被用户打开READ WRITE)。
SYS@cnt122> select CON_ID, NAME, OPEN_MODE, RESTRICTED, OPEN_TIME  from gv$containers;

    CON_ID NAME                 OPEN_MODE  RESTRICTED OPEN_TIME
---------- -------------------- ---------- ---------- -----------------------------------
         1 CDB$ROOT             READ WRITE NO         08-OCT-14 09.14.42.775 +01:00
         2 PDB$SEED             READ ONLY  NO         08-OCT-14 09.14.42.873 +01:00
         3 PDBP2                MOUNTED
         4 DB12C2PDB            MOUNTED

如何在CDB重新启动时保存或放弃PDB的open mode?

您将ALTER PLUGGABLE DATABASE SQL语句与pdb_save或discard_state子句一起使用。
这个想法是,你可以保存一个PDB的当前打开状态,这样,当CDB重新启动时,PDB将处于打开模式。
当您放弃先前保存的PDB的开放模式时,当CDB重新启动时,PDB将处于MOUNTED模式。
例如。 要保存PDBP2的当前打开状态,请执行以下操作:
SQL> ALTER PLUGGABLE DATABASE PDBP2 SAVE STATE;

Pluggable database altered.

例如。 放弃PDBP2保存的状态,执行以下操作:
SQL> ALTER PLUGGABLE DATABASE PDBP2 DISCARD STATE;

Pluggable database altered.
对于Oracle RAC CDB,可以将instances子句与pdb_save或discard_state子句一起使用,以指定实例保留PDB的open mode。

如何监视PDB的保存状态?

您可以使用DBA_PDB_SAVED_STATES视图来查看PDB的保存状态。
在下面的例子中,我们保存了PDBP2的OPEN状态,这样下一次CDB重新启动时,PDBP2将被打开而不是挂载。
SQL> STARTUP PLUGGABLE DATABASE PDBP2 open
Pluggable Database opened.
SQL> select CON_ID, NAME, OPEN_MODE, RESTRICTED, OPEN_TIME  from gv$containers;

    CON_ID NAME                 OPEN_MODE  RESTRICTED OPEN_TIME
---------- -------------------- ---------- ---------- ---------------------------------------------------------------------------
         1 CDB$ROOT             READ WRITE NO         08-OCT-14 09.14.42.775 AM +01:00
         2 PDB$SEED             READ ONLY  NO         08-OCT-14 09.14.42.873 AM +01:00
         3 PDBP2                READ WRITE NO         08-OCT-14 09.28.26.830 AM +01:00
         4 DB12C2PDB            MOUNTED

SQL> select con_name, state from dba_pdb_saved_states;

no rows selected

SQL> ALTER PLUGGABLE DATABASE PDBP2 SAVE STATE;

Pluggable database altered.

SQL> select con_name, state from dba_pdb_saved_states;

CON_NAME             STATE
-------------------- --------------
PDBP2                OPEN
只记录保存状态。 一旦为PDB执行discard state命令,从DBA_PDB_SAVED_STATES中删除保存的pdb状态条目。
SQL> ALTER PLUGGABLE DATABASE PDBP2 DISCARD STATE;

Pluggable database altered.

SQL> select con_name, state from dba_pdb_saved_states;

no rows selected
如上所述,自12.1.0.2开始保存PDB的打开状态。
对于12.1.0.1,您可以创建一个数据库启动触发器,以便在数据库启动时将PDB(s)置于特定的打开模式。

例如 要在CDB启动时打开所有PDB,请在CDB中创建以下触发器:
CREATE TRIGGER open_all_pdbs 
  AFTER STARTUP ON DATABASE 
BEGIN 
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
END ;
/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值