在Oracle 12C版本中,CDB启动后,PDB是MOUNT状态,而不是和CDB一样的READ WRITE状态。启动PDB需要手动在CBD下执行PDB启动命令,例如,alter pluggable database all open,启动所有的PDB,这也有些麻烦,下面来介绍2种PDB的自启动方法。
1.在12.1.0.1版本,PDB是不支持自启动的,只能通过触发器来实现
在CDB种创建触发器,在CDB启动时启动PDB
下面是启动所有PDB
CREATE TRIGGER open_pdbs
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/
如果要单独启动PDB,修改启动语句即可
单独启动PDB1
CREATE TRIGGER open_pdbs
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database pdb1 open';
END open_all_pdbs;
/
2.从12.1.0.2版本,PDB开始支持自启动,通过alter pluggable database [pdb_name | all] save state命令来实现,该命令会记录PDB当前状态到数据字典dba_pdb_saved_states中,在下次启动CDB时,会查询该视图中的PDB状态,如果PDB是OPEN,那么就启动PDB
alter pluggable database [pdb_name | all] save state;
查询记录的PDB状态
select con_name,state from dba_pdb_saved_states;