Oracle RAC / ODA 生产环境指定 PDB 启动 SOP

一、生产启动顺序

Oracle RAC / ODA 环境启动顺序建议如下:

复制代码
Grid / Clusterware
  ↓
ASM
  ↓
Listener / SCAN Listener
  ↓
CDB / RAC 实例
  ↓
PDB

1. 确认 Grid / Clusterware 正常
2. 确认 ASM 正常
3. 确认 Listener / SCAN Listener 正常
4. 启动 CDB 数据库资源
5. 进入 CDB$ROOT 打开指定 PDB
6. 最终确认 RAC 实例和 PDB 状态

核心原则:

复制代码
srvctl 管 CDB / RAC 数据库资源 / ASM / Listener
SQL*Plus 管数据库内部状态 / PDB 打开状态

srvctlServer Control Utility 的缩写,中文可理解为 Oracle 服务器/集群资源控制工具

在 Oracle RAC / ODA / Grid Infrastructure 环境中,srvctl 主要用于管理数据库、实例、监听、服务、ASM 等集群资源。


二、切换到 oracle 用户

复制代码
su - oracle

确认当前用户:

复制代码
whoami

正常应为:

复制代码
oracle

三、查看集群资源总状态

复制代码
crsctl stat res -t

crsctl = Cluster Ready Services Control
stat   = status,查看状态
res    = resource,资源
-t     = table,以表格形式显示

重点关注:

复制代码
ora.asm
ora.LISTENER.lsnr
ora.LISTENER_SCAN*.lsnr
ora.<数据库名>.db

正常状态应为:

复制代码
ONLINE

如果整体资源状态正常,再继续启动 CDB 和 PDB。


四、确认 ASM 状态

查看 ASM 状态:

复制代码
srvctl status asm

正常类似:

复制代码
ASM is running on node teierp1
ASM is running on node teierp2

如果 ASM 没起来怎么办?

如果 ASM 未运行,先启动 ASM:

复制代码
srvctl start asm

如果只需要启动某个节点 ASM,可以指定节点:

复制代码
srvctl start asm -node 节点名

启动后再次确认:

复制代码
srvctl status asm

也可以查看集群资源状态:

复制代码
crsctl stat res -t

确认 ora.asmONLINE 后,再继续后续步骤。

说明:

复制代码
ASM 是数据库文件、控制文件、redo、归档等底层存储管理组件。
如果 ASM 未正常运行,CDB 数据库通常无法正常启动。

五、确认监听状态

查看本地监听:

复制代码
srvctl status listener

查看 SCAN 监听:

复制代码
srvctl status scan_listener

正常应看到 Listener / SCAN Listener 正常运行。

如果监听没起来怎么办?

启动本地监听:

复制代码
srvctl start listener

启动 SCAN 监听:

复制代码
srvctl start scan_listener

启动后再次确认:

复制代码
srvctl status listener
srvctl status scan_listener

说明:

复制代码
监听未启动时,数据库本身可能已经打开,但客户端、应用或远程连接可能无法正常访问。
RAC 环境建议同时确认本地 Listener 和 SCAN Listener。

六、查询 RAC 中有哪些数据库资源

复制代码
srvctl config database

示例输出:

复制代码
erpcdb
mesadg
UTF8ADG
z16cdb

这里查出来的就是 srvctl -d 后面要填写的数据库资源名,通常也是 CDB / DB_UNIQUE_NAME。


七、查看目标 CDB 状态

erpcdb 为例:

复制代码
srvctl status database -d erpcdb

正常可能看到:

复制代码
Instance erpcdb1 is running on node teierp1
Instance erpcdb2 is running on node teierp2

如果实例未运行,则继续启动 CDB。


八、启动 CDB 数据库资源

复制代码
srvctl start database -d erpcdb

说明:

复制代码
该命令用于启动整个 erpcdb 数据库资源。
只需要在任意一个正常节点执行一次,不需要两个节点分别执行。
Oracle Clusterware 会根据数据库配置,自动启动该数据库对应的 RAC 实例。

启动后确认:

复制代码
srvctl status database -d erpcdb

九、设置 ORACLE_SID 并进入 SQL*Plus

查看当前节点上的实例名:

复制代码
ps -ef | grep pmon | grep -v grep

示例:

复制代码
ora_pmon_erpcdb1

设置当前实例:

复制代码
export ORACLE_SID=erpcdb1

进入数据库:

复制代码
sqlplus / as sysdba

确认当前容器:

复制代码
show con_name;

如果不是 CDB$ROOT,切换到根容器:

复制代码
alter session set container=CDB$ROOT;

十、确认数据库角色和打开状态

复制代码
select name, db_unique_name, database_role, open_mode from v$database;

如果是主库,通常应看到:

复制代码
PRIMARY
READ WRITE

如果是 ADG / 备库,例如:

复制代码
PHYSICAL STANDBY

不要按主库方式强行打开 PDB 为读写状态,需先确认业务要求。


十一、查看 PDB 状态

查看当前实例 PDB 状态:

复制代码
show pdbs;

RAC 环境建议查看所有实例上的 PDB 状态:

复制代码
set lines 200
col name for a30
col open_mode for a20

select inst_id, con_id, name, open_mode
from gv$pdbs
order by name, inst_id;

说明:

复制代码
RAC 两个实例访问的是同一个 CDB,因此看到的 PDB 名称是一致的。
但 PDB 在不同实例上的打开状态可能不同,所以建议用 gv$pdbs 查看所有实例。

十二、打开指定 PDB

例如要打开 IETQMS

复制代码
alter pluggable database IETQMS open instances=all;

说明:

复制代码
instances=all 表示在 RAC 所有实例上打开该 PDB。
RAC 环境建议加上 instances=all,避免只在当前实例打开。

十三、保存 PDB 自动打开状态

如果希望下次 CDB 启动后,该 PDB 自动打开:

复制代码
alter pluggable database IETQMS save state instances=all;

十四、最终确认 PDB 状态

复制代码
select inst_id, con_id, name, open_mode
from gv$pdbs
where name = 'IETQMS'
order by inst_id;

正常应看到各实例上该 PDB 为:

复制代码
READ WRITE

退出 SQL*Plus:

复制代码
exit

十五、快速命令汇总

1. 检查集群、ASM、监听

复制代码
su - oracle

crsctl stat res -t

srvctl status asm
srvctl status listener
srvctl status scan_listener

2. ASM 未启动时

复制代码
srvctl start asm
srvctl status asm

3. 监听未启动时

复制代码
srvctl start listener
srvctl start scan_listener

srvctl status listener
srvctl status scan_listener

4. 查询并启动 CDB

复制代码
srvctl config database

srvctl status database -d erpcdb
srvctl start database -d erpcdb
srvctl status database -d erpcdb

5. 进入数据库

复制代码
ps -ef | grep pmon | grep -v grep

export ORACLE_SID=erpcdb1

sqlplus / as sysdba

6. 打开指定 PDB

复制代码
show con_name;
alter session set container=CDB$ROOT;

select name, db_unique_name, database_role, open_mode from v$database;

show pdbs;

select inst_id, con_id, name, open_mode
from gv$pdbs
order by name, inst_id;

alter pluggable database IETQMS open instances=all;

alter pluggable database IETQMS save state instances=all;

select inst_id, con_id, name, open_mode
from gv$pdbs
where name = 'IETQMS'
order by inst_id;

exit

十六、一句话总结

复制代码
RAC 环境启动指定 PDB 的生产顺序:

先确认 Grid 正常;
再确认 ASM 正常;
再确认 Listener / SCAN Listener 正常;
然后 srvctl start database -d CDB资源名 启动 CDB;
最后进入 CDB$ROOT 执行 alter pluggable database PDB名 open instances=all。

需要替换的内容只有三个:

复制代码
CDB资源名:例如 erpcdb
当前节点实例名:例如 erpcdb1
PDB名:例如 IETQMS

这版就是生产速查版,重点够用,不绕。实际干活时就按顺序:先看底座,再拉 CDB,最后开 PDB

相关推荐
kingwebo'sZone1 小时前
在Cent上安装Mysql 8.0的遇到的问题和解决办法
数据库·mysql·adb
Shingmc31 小时前
【Linux】多路转接之select
linux·网络
幽络源小助理1 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
luweis1 小时前
企智孪生 ETA(3.3 认知算法层:ETA 的思维内核 3.4 基础架构:算力与弹性)【浙江联保网络 卢伟舜】
大数据·运维·线性代数·ai·矩阵·学习方法
小白考证进阶中2 小时前
Oracle OCP证书报考&考试全指南
数据库·oracle·oracle ocp·ocp认证·oracle认证·甲骨文认证·oracle ocp题库
极客老王说Agent2 小时前
屏幕理解能力是下一代自动化的关键吗?2026年自动化范式演进深度解析
运维·人工智能·ai·chatgpt·自动化
LT10157974442 小时前
2026年电商RPA选型指南:电商运营全流程自动化测评
运维·自动化·rpa
木古古182 小时前
搞一个高效的c/c++开发环境,工具VIm+自研vim插件+Shell脚本
linux·编辑器·vim
Leon-Ning Liu3 小时前
【真实经验分享】 ORA-600 [qesmaGetTblSeg1]
数据库·oracle