当前位置: 首页 > news >正文

Oracle是 CDB/PDB 环境下,让PDB在数据库启动后自动打开

在 Oracle 12c 及以上版本里,让 PDB 在 CDB 启动后自动打开,推荐用“保存状态”(SAVE STATE)特性,从 12.1.0.2 开始支持。如果你是很老的 12.1.0.1,就只能用系统触发器。
下面分两种情况给你一个完整操作步骤。

一、先确认你的版本

以 sysdba 登录 CDB:

SELECT * FROM v$version;

或:

SELECT VERSION FROM PRODUCT_COMPONENT_VERSION WHERE PRODUCT LIKE 'Oracle Database%';
  • 如果是 12.1.0.2 及以上(包括 12.2、18c、19c 等) → 用方案一(SAVE STATE)。
  • 如果是 12.1.0.1 及更早 → 用方案二(触发器)。

方案一:用 SAVE STATE 让 PDB 自动打开(推荐)

1. 基本原理

Oracle 从 12.1.0.2 开始提供了“保存 PDB 打开状态”的功能:
你在 PDB 打开(READ WRITE/READ ONLY)状态下执行:

ALTER PLUGGABLE DATABASE <pdb名> SAVE STATE;

Oracle 会把当前打开状态记录下来,下次 CDB 启动时,自动把该 PDB 恢复成这个状态。
状态保存在视图 DBA_PDB_SAVED_STATES 里。

2. 操作步骤(单 PDB 示例)

假设你的 PDB 叫 PDB1,CDB 叫 CDB$ROOT
1)以 sysdba 登录 CDB 根容器:

sqlplus / as sysdba

2)确认当前 PDB 状态:

SHOW PDBS;

或:

SELECT NAME, OPEN_MODE FROM V$PDBS;

3)打开 PDB:

ALTER PLUGGABLE DATABASE pdb1 OPEN;

4)保存 PDB 状态(让下次 CDB 启动时自动打开):

ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;

5)查看已保存的状态:

COLUMN CON_NAME FORMAT A20
COLUMN INSTANCE_NAME FORMAT A20
SELECT CON_NAME, INSTANCE_NAME, STATE FROM DBA_PDB_SAVED_STATES;

能看到类似:

CON_NAME            INSTANCE_NAME       STATE
-------------------- -------------------- --------------
PDB1                 cdb1                OPEN

表示已保存为 OPEN 状态。
6)重启 CDB 验证:

SHUTDOWN IMMEDIATE;
STARTUP;
-- 等待实例完全启动后
SHOW PDBS;

正常情况下,PDB1 应该已经是 READ WRITE,不再是 MOUNTED。

3. 让所有 PDB 都自动打开

如果你有多个 PDB,想让全部自动打开,可以一次性处理:
1)打开所有 PDB:

ALTER PLUGGABLE DATABASE ALL OPEN;

2)保存所有 PDB 的状态:

ALTER PLUGGABLE DATABASE ALL SAVE STATE;

这样,以后 CDB 重启时,所有 PDB 都会自动打开到之前保存的状态(READ WRITE 或 READ ONLY)。

4. 取消自动打开(清除保存的状态)

如果你不想某个 PDB 再自动打开,可以清除其保存状态:

ALTER PLUGGABLE DATABASE pdb1 DISCARD STATE;

之后重启 CDB,这个 PDB 会回到默认行为:MOUNTED,需要手工打开。

方案二:用系统触发器(适合 12.1.0.1 及更早)

如果你的版本是 12.1.0.1 或更早,不支持 SAVE STATE,可以在 CDB 上创建一个系统触发器,在数据库启动后自动打开 PDB。

1. 创建触发器

以 sysdba 登录 CDB:

CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGINEXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/

这个触发器会在每次 CDB STARTUP 后自动执行 ALTER PLUGGABLE DATABASE ALL OPEN,把所有 PDB 打开。

2. 自定义只打开部分 PDB

如果你只想自动打开某几个 PDB,可以在触发器里写具体名字:

CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGINEXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN';
END open_pdbs;
/

小结

  • 版本 ≥ 12.1.0.2
    ALTER PLUGGABLE DATABASE ... SAVE STATE;,这是官方推荐方式,无需触发器。
  • 版本 ≤ 12.1.0.1
    用系统触发器 AFTER STARTUP ON DATABASE,在触发器里 ALTER PLUGGABLE DATABASE ALL OPEN 或指定 PDB 名。
http://www.jsqmd.com/news/426925/

相关文章:

  • EmbeddingGemma-300m参数详解:num_batch和num_ctx配置指南
  • AgentCPM深度研报助手在嵌入式系统开发文档生成中的应用
  • FLUX.1-dev-fp8-dit开源模型教程:FP8量化原理简析及其对SDXL Prompt风格生成的意义
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI极简部署:无需Python安装的Docker直装方案
  • granite-4.0-h-350m实战案例:Ollama本地大模型自动生成测试用例
  • Node.js环境配置LiuJuan20260223Zimage接口服务指南
  • StructBERT中文情感分析效果展示:社交媒体情绪地图
  • Qwen3-TTS-12Hz-1.7B-VoiceDesign部署指南:GPU环境一键配置教程
  • Qwen2.5-7B-Instruct惊艳案例:输入‘把这篇英文论文摘要翻译成中文并润色’→高质量输出
  • FUTURE POLICE模型跨平台部署:应对不同操作系统的挑战
  • Fish-Speech-1.5智能耳机应用:实时语音风格转换
  • Z-Image Turbo与Typora配合:智能文档图像生成
  • 会议纪要自动生成方案:SenseVoice-Small ONNX模型办公场景落地案例
  • OFA视觉问答模型微调实战教程
  • Gemma-3-12B-IT WebUI部署教程:非root用户权限适配与路径安全配置
  • ClawdBot效果展示:Qwen3-4B在金融术语、法律条款等专业领域翻译质量
  • 接口ai - -星语
  • P5400 [CTS2019] 随机立方体
  • IndexTTS-2-LLM定时任务配置:Cron调度语音生成案例
  • Qwen3-0.6B-FP8新手入门指南:一键开启思考模式,体验AI推理全过程
  • 基于KART-RERANK的微信小程序内容推荐引擎实战
  • YOLO12模型热更新:不停机升级的部署方案
  • 手把手教你用DAMOYOLO-S检测图片中的物体:Web界面操作超简单
  • EmbeddingGemma-300m分布式部署指南:应对大规模数据处理
  • VibeVoice用于电话机器人:呼叫中心语音应答系统构建
  • Meixiong Niannian画图引擎参数调节指南:步数、CFG、种子详解
  • AI印象派艺术工坊安全合规吗?本地部署数据隐私保护案例
  • Qwen3-TTS-12Hz-1.7B-VoiceDesign与WebSocket集成:实时语音交互系统
  • 【高企日报】3亿家OPC一人公司:占中国GDP的半壁江山
  • Youtu-Parsing企业级部署教程:GPU显存优化+开机自启+日志监控完整指南