最近在一次高可用测试中,发现重启后PDB没有打开。原因是启动时,PDB默认处于关闭状态,必须打开PDB,然后保存状态。
以下是在示例RAC环境下的实验。因为是标准的RAC环境,因此在系统表中的状态为OPEN,表示数据库重启后,PDB会自动打开:
col con_name for a20
col instance_name for a20
select con_name, instance_name, state from dba_pdb_saved_states;
CON_NAME INSTANCE_NAME STATE
-------------------- -------------------- --------------
ORCLPDB1 DBRAC1 OPEN
ORCLPDB1 DBRAC2 OPEN
以下是在关闭和打开数据库时,save state的实验:
SQL> alter pluggable database orclpdb1 close instances=all;
Pluggable database altered.
SQL> select con_name, instance_name, state from dba_pdb_saved_states;
CON_NAME INSTANCE_NAME STATE
-------------------- -------------------- --------------
ORCLPDB1 DBRAC1 OPEN
ORCLPDB1 DBRAC2 OPEN
SQL> alter pluggable database orclpdb1 save state instances=all;
Pluggable database altered.
SQL> select con_name, instance_name, state from dba_pdb_saved_states;
no rows selected
SQL> alter pluggable database orclpdb1 open instances=all;
Pluggable database altered.
SQL> select con_name, instance_name, state from dba_pdb_saved_states;
no rows selected
SQL> alter pluggable database orclpdb1 save state instances=all;
Pluggable database altered.
SQL> select con_name, instance_name, state from dba_pdb_saved_states;
CON_NAME INSTANCE_NAME STATE
-------------------- -------------------- --------------
ORCLPDB1 DBRAC1 OPEN
ORCLPDB1 DBRAC2 OPEN
学习到两点:
- 在DBA_PDB_SAVED_STATES检查save state的设置
- 在RAC环境下,可以用instances=all指定所有实例