Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03

Oracle Health Check巡检脚本使用SOP V1.0https://blog.csdn.net/weixin_45806267/article/details/161506734?spm=1001.2014.3001.5501

一、适用范围

本 SOP 适用于 Linux/Unix 类操作系统上的 Oracle 数据库服务器巡检

说明:

  • 本文示例以 Linux 系统为准;

  • Windows 环境不适用 oscheck.sh,应使用对应的 Windows/PowerShell 版本脚本;

  • 本脚本适用于 Oracle CDB/PDB 架构和非 CDB 架构数据库巡检。


二、脚本组成与关系

本次巡检使用 3 个脚本:

脚本名称 作用
oscheck.sh 巡检入口脚本,负责采集主机 OS、Oracle 环境、监听、补丁、RAC/GI 信息,并自动调用数据库巡检 SQL
dbcheck_cdb.sql Oracle CDB/PDB 架构数据库巡检 SQL
dbcheck_noncdb.sql Oracle 非 CDB 架构数据库巡检 SQL

三个脚本之间不是内容包含关系 ,而是调用关系

复制代码
oscheck.sh
   ├── 采集主机 OS、Oracle 环境、监听、补丁、RAC/GI 信息
   └── 自动调用对应的 dbcheck 脚本
        ├── CDB/PDB 架构:调用 dbcheck_cdb.sql
        └── 非 CDB 架构:调用 dbcheck_noncdb.sql

注意:

  • oscheck.sh 是总入口;

  • dbcheck_cdb.sqldbcheck_noncdb.sql 是被调用脚本;

  • oscheck.sh 不包含两个 dbcheck 脚本的完整内容;

  • 三个脚本必须放在同一目录下。


三、ODA 多 CDB 执行原则

在 ODA 环境中,可能存在一套 ODA 上部署多个 CDB 的情况,例如:

复制代码
一套 ODA
├── CDB1
│   ├── PDB1
│   └── PDB2
└── CDB2
    ├── PDB1
    └── PDB2

该场景下,巡检按 CDB 维度 执行:

  • 一个 CDB 执行一次巡检;

  • CDB 下的 PDB 信息由 dbcheck_cdb.sql 自动采集;

  • 不需要对每个 PDB 单独执行;

  • 如果一套 ODA 上有 2 个 CDB,则需要分别执行 2 次巡检。

-o 参数后面填写的是当前节点本地 Oracle 实例名,即 ORACLE_SID

不要填写:

  • PDB 名;

  • 业务系统名称;

  • 数据库资源名。

ODA 多 CDB 示例

先在当前节点确认本机正在运行的 Oracle 实例:

复制代码
ps -ef | grep "[p]mon"

示例输出:

复制代码
ora_pmon_ERPCDB1
ora_pmon_MESDB1

说明:

ora_pmon_ 后面的内容就是当前节点本地实例名,也就是需要设置的 ORACLE_SID

根据上面示例,当前节点有两个 CDB 实例:

CDB/数据库 当前节点本地实例名 巡检方式
ERPCDB ERPCDB1 设置 ORACLE_SID=ERPCDB1 后执行
MESDB MESDB1 设置 ORACLE_SID=MESDB1 后执行

第一次巡检 ERPCDB:

复制代码
export ORACLE_SID=ERPCDB1
bash oscheck.sh -o $ORACLE_SID

第二次巡检 MESDB:

复制代码
export ORACLE_SID=MESDB1
bash oscheck.sh -o $ORACLE_SID

如果在另一个节点执行,也要先确认当前节点本地实例名。例如另一个节点可能显示:

复制代码
ora_pmon_ERPCDB2
ora_pmon_MESDB2

则对应执行:

复制代码
export ORACLE_SID=ERPCDB2
bash oscheck.sh -o $ORACLE_SID

export ORACLE_SID=MESDB2
bash oscheck.sh -o $ORACLE_SID

四、脚本部署

脚本目录可根据现场实际情况选择,/data/check 只是示例路径。

例如可以使用:

复制代码
/data/check
/u01/check
/home/oracle/check

本文以 /data/check 为例。

使用 root 用户创建目录:

复制代码
mkdir -p /data/check

将以下 3 个脚本上传到同一目录:

复制代码
oscheck.sh
dbcheck_cdb.sql
dbcheck_noncdb.sql

检查脚本:

复制代码
cd /data/check
ll

正常应看到:

复制代码
oscheck.sh
dbcheck_cdb.sql
dbcheck_noncdb.sql

五、脚本授权

使用 root 用户执行:

复制代码
cd /data/check
chown -R oracle:oinstall /data/check
chmod 750 /data/check
chmod 750 oscheck.sh
chmod 640 dbcheck_cdb.sql dbcheck_noncdb.sql

如果现场 Oracle 用户组不是 oinstall,以实际查询结果为准:

复制代码
id oracle

授权后权限示例:

复制代码
-rwxr-x--- 1 oracle oinstall oscheck.sh
-rw-r----- 1 oracle oinstall dbcheck_cdb.sql
-rw-r----- 1 oracle oinstall dbcheck_noncdb.sql

六、执行前检查

切换到 oracle 用户:

复制代码
su - oracle
cd /data/check

确认 Oracle 环境:

复制代码
echo $ORACLE_SID
echo $ORACLE_HOME
ps -ef | grep "[p]mon"

确认要求:

  • ORACLE_HOME 正确;

  • ORACLE_SID 为当前节点本地实例名;

  • ORACLE_SID 应与 ora_pmon_ 后面的实例名一致。

如果当前 ORACLE_SID 不正确,先手动指定:

复制代码
export ORACLE_SID=当前节点本地实例名

七、执行巡检

执行命令:

复制代码
bash oscheck.sh -o $ORACLE_SID

也可以明确指定实例名:

复制代码
bash oscheck.sh -o yjcs

说明:

  • -o 后面填写 Oracle 实例名;

  • RAC/ODA 环境填写当前节点本地实例名;

  • CDB/PDB 架构下只需要对 CDB 实例执行;

  • PDB 不需要单独执行巡检。

执行过程中,如检测到 CDB 架构,会显示:

复制代码
检测到 CDB 架构,使用 dbcheck_cdb.sql

八、查看结果

执行完成后,在脚本目录查看结果:

复制代码
ls -lh /data/check

正常会生成:

复制代码
dbcheck_主机名_日期/
dbcheck_主机名_日期.tar.gz

其中 .tar.gz 文件就是最终巡检结果包。

ODA 多 CDB 场景下,如果同一天在同一目录连续巡检多个 CDB,结果包名称可能相同。建议每个 CDB 使用独立目录,或执行完成后按 CDB 名称单独保存结果包,例如:

复制代码
dbcheck_ERPCDB1_主机名_日期.tar.gz
dbcheck_MESDB1_主机名_日期.tar.gz

九、注意事项

  1. 本脚本主要适用于 Linux/Unix 类 Oracle 数据库服务器;

  2. 不建议使用 root 用户直接执行 oscheck.sh

  3. 三个脚本必须放在同一目录;

  4. /data/check 只是示例路径,实际可按现场目录调整;

  5. ODA 多 CDB 场景下,按 CDB 维度执行巡检;

  6. -o 后填写当前节点本地实例名,即 ORACLE_SID

  7. PDB 不需要单独执行巡检;

  8. 建议在业务低峰期执行;

  9. 巡检结果包含主机、数据库、用户、权限、表空间、补丁等敏感信息,应妥善保存;

  10. 本脚本属于巡检采集类脚本,不属于数据库变更脚本。


十、标准执行流程汇总

1. root 用户准备

复制代码
mkdir -p /data/check
cd /data/check

chown -R oracle:oinstall /data/check
chmod 750 /data/check
chmod 750 oscheck.sh
chmod 640 dbcheck_cdb.sql dbcheck_noncdb.sql

2. oracle 用户执行

复制代码
su - oracle
cd /data/check

echo $ORACLE_HOME
ps -ef | grep "[p]mon"

export ORACLE_SID=当前节点本地实例名
bash oscheck.sh -o $ORACLE_SID

3. 查看结果

复制代码
ls -lh /data/check

十一、附录:涉及的脚本源码

说明:以下源码仅用于留档和版本核对。日常执行时按前文 SOP 操作即可,不建议把源码插入到操作步骤中。

附录 A:oscheck.sh

此处粘贴 oscheck.sh 脚本全文。

复制代码
请私信本人获取

附录 B:dbcheck_cdb.sql

此处粘贴 dbcheck_cdb.sql 脚本全文。

复制代码
请私信本人获取

附录 C:dbcheck_noncdb.sql

此处粘贴 dbcheck_noncdb.sql 脚本全文。

复制代码
请私信本人获取
相关推荐
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
大耳朵-小飞象10 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技11 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
Cloud云卷云舒11 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
HLC++11 小时前
Linux的进程间通信
android·linux·服务器
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
华清远见IT开放实验室13 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
oradh14 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
生活爱好者!14 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器