方式一
大家好,
由于默认情况下12c的pdb不会随着cdb启动而自动open, 在某些时候,数据库因故重启后,pdb无法正常访问。绝大多数情况下,客户还是希望pdb随着cdb一起启动(open)的。
因此,我们需要设置pdb随cdb一起启动。
对于Oracle 12.1.0.2 之后, Oracle推荐使用save state属性,也就是说,保存上次的状态,pdb关之前是open/close状态,cdb重启后pdb会保留这个状态。
如果配置了adg的话,备库不能使用保存状态打开的 read only 只能通过触发器来打开备库
启用所有pdb, 建议加上instances=all,否则命令只对当前实例下的PDB有效。
ALTER PLUGGABLE DATABASE all save STATE;
启用某个pdb
ALTER PLUGGABLE DATABASE <pdb> save STATE;
状态保留在
dba_pdb_saved_states
使用这种方法,新建pdb后还需要给新的pdb指定。
对于Oracle 12.1.0.2之前的版本, 就只能通过trigger实现:
CREATE TRIGGER open_all_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
-- EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE <pdb1> OPEN'; 某个pdb
END ;
/
麻烦大家检查一下自己维护的数据库(包括未来的巡检),是否存在pdb未随cdb一起启动的情况,如果有,与客户沟通启用。
方式二
oracle@ogg6 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Sep 24 17:41:22 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select name,open_mode,restricted from v$pdbs;
NAME OPEN_MODE RES
------------------------------ ---------- ---
PDB$SEED READ ONLY NO
OGG6 READ WRITE NO
OGG7 READ WRITE NO
SQL> alter pluggable database ogg6 save state;
Pluggable database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 599785472 bytes
Fixed Size 2927192 bytes
Variable Size 281019816 bytes
Database Buffers 310378496 bytes
Redo Buffers 5459968 bytes
Database mounted.
Database opened.
ogg在cdb启动时自动给拉起来了,而ogg7没有被拉起来
SQL> select name,open_mode,restricted from v$pdbs;
NAME OPEN_MODE RES
------------------------------ ---------- ---
PDB$SEED READ ONLY NO
OGG6 READ WRITE NO
OGG7 MOUNTED
数据库alert日志中可以看到
Opening pdb OGG6 (3) with no Resource Manager plan active
Pluggable database OGG6 opened read write
Starting background process CJQ0
Completed: ALTER DATABASE OPEN