如何设置Oracle 19c的PDB重启后始终保持OPEN模式?
Oracle 19c PDB开机自动OPEN配置方案
方案一:使用Oracle原生PDB状态持久化功能(推荐)
Oracle 12cR2(19c属于该版本后续迭代)原生提供PDB打开状态保存能力,无需额外编写逻辑,是官方推荐的实现方式。
操作步骤:
- 以sysdba身份登录CDB根容器:
sqlplus / as sysdba - 先手动将目标PDB调整到目标运行状态(生产环境一般为读写模式):
ALTER PLUGGABLE DATABASE orclpdb OPEN READ WRITE; - 持久化该PDB的打开状态,后续CDB重启时会自动将PDB恢复到该状态:
ALTER PLUGGABLE DATABASE orclpdb SAVE STATE;
常用配套命令:
- 查看已配置状态持久化的PDB列表:
SELECT con_name, state FROM dba_pdb_saved_states; - 批量持久化所有PDB的当前打开状态:
ALTER PLUGGABLE DATABASE ALL SAVE STATE; - 取消指定PDB的自动打开配置:
ALTER PLUGGABLE DATABASE orclpdb DISCARD STATE;
方案二:使用数据库启动触发器(适合自定义逻辑场景)
如果需要在PDB启动时附加自定义操作、或控制多个PDB的启动顺序,可以通过系统级启动触发器实现:
- 以sysdba身份登录CDB根容器
- 执行以下SQL创建触发器:
CREATE OR REPLACE TRIGGER auto_open_orclpdb AFTER STARTUP ON DATABASE BEGIN -- 可按需调整打开模式,或增加多个PDB的打开逻辑、启动后初始化语句 EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE orclpdb OPEN READ WRITE'; END; /
注意:如果已经通过SAVE STATE配置了PDB自动启动,触发器逻辑不会与原生状态持久化冲突,数据库会优先按保存的状态启动PDB。
配置验证
配置完成后可手动重启CDB验证效果:
SHUTDOWN IMMEDIATE; STARTUP; -- 查询PDB状态确认是否自动启动 SELECT name, open_mode FROM v$pdbs WHERE name = 'ORCLPDB';
若返回结果中OPEN_MODE字段值为READ WRITE,则配置生效。
内容的提问来源于stack exchange,提问作者Arifullah
相关产品推荐
相关产品推荐

