重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 311|回复: 0

Oracle 12C配置PDB自启动

[复制链接]
发表于 2019-12-24 15:03:39 | 显示全部楼层 |阅读模式
本帖最后由 jiawang 于 2019-12-24 15:06 编辑

在12C版本,CDB启动的时候,默认情况下,PDB之后启动到MOUNT状态,而不是OPEN状态。
QQ图片20191224113814.png
12C版本的PDB默认之后启动到MOUNT状态,因为MOUNT状态的数据库并不能正常提供服务,因此根本上来讲就相当于自启动失败。
在12.1.0.1版本,PDB是不支持自启动的,一般都是配置数据库启动触发器来实现。


CREATE OR REPLACE TRIGGER auto_open_pdbs
  AFTERSTARTUP ON DATABASE
BEGIN
  EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END auto_open_pdbs;
/

从12.1.0.2版本,ORACLE支持PDB自启动功能,通过ALTER PLUGGABLE DATABASE XXX SAVE STATE命令实现,这个命令会记录PDB的当前状态并保存到数据字典中,当CDB启动时,会查询数据字典中PDB是否保存了启动的状态,如果查询到PDB保存了OPEN状态,就将相应的PDB启动,可以通过DBA_PDB_SAVED_STATES视图查看PDB保存的状态信息。


测试步骤如下:
设置PDB调整为OPEN状态:
QQ图片20191224114550.png
保存pdb1状态为open;
SQL> alter pluggable database pdb1 save state;
Pluggable database altered.


查看视图DBA_PDB_SAVED_STATES
SQL> select CON_NAME,STATE from DBA_PDB_SAVED_STATES;
CON_NAME   STATE
---------- --------------
PDB1       OPEN

重启CDB,查看PDB的状态
SQL> startup force
ORACLE instance started.
Total System Global Area 1258291200 bytes
Fixed Size                  8792296 bytes
Variable Size             469763864 bytes
Database Buffers          771751936 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
       PDB$SEED                       READ ONLY  NO
       PDB1                           READ WRITE NO
       PDB2                           MOUNTED

可见,当CDB启动或者重启时,保存了OPEN状态的PDB1成功启动到了OPEN状态,而没有进行设置的PDB2还是默认的MOUNT状态。
DBA_PDB_SAVED_STATES视图中的STATE字段代表的并不是PDB的当前状态,而是当CDB启动时,PDB应该启动的状态。


手动关闭PDB1,再查看DBA_PDB_SAVED_STATES视图
SQL> alter pluggable database pdb1 close immediate;
Pluggable database altered.

SQL> show pdbs
CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
PDB$SEED                       READ ONLY  NO
PDB1                           MOUNTED
PDB2                           MOUNTED

SQL> select CON_NAME,STATE from DBA_PDB_SAVED_STATES;
CON_NAME   STATE
---------- --------------
PDB1       OPEN

取消记录PDB的自启动功能
SQL> alter pluggable database pdb1 discard state;
Pluggable database altered.

取消PDB的自启动功能,会删除数据字典中相应的记录
SQL> select * from DBA_PDB_SAVED_STATES;
no rows selected


重启CDB,验证pdb1状态
SQL> startup force
ORACLE instance started.
Total System Global Area 1258291200 bytes
Fixed Size                  8792296 bytes
Variable Size             469763864 bytes
Database Buffers          771751936 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
       PDB$SEED                       READ ONLY  NO
       PDB1                           MOUNTED
       PDB2                           MOUNTED










回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2020-7-11 23:11 , Processed in 0.123001 second(s), 23 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表