O Oracle DBA 运维知识库

日常巡检

每日检查清单、检查命令、正常结果示例和异常记录。

巡检清单

值班开始时按表检查,维护或故障处理后复查相关项。点击 SQL 下方的“模拟执行”可查看模拟输出。

检查项正常判断异常处理入口
实例与连接角色和打开模式符合预期,业务 PDB 与服务可用监听与连接
主机与空间资源无持续异常,数据、归档和备份目录有余量数据库慢或卡顿、空间检查
主备同步延迟持续更新且符合目标,未报告 GAP,应用进程正常Data Guard 排查
备份与作业最近一次计划备份成功,应执行的作业有完成记录备份失败
错误日志新增错误已核实,遗留异常有人跟进故障排查

执行位置

Linux 命令在对应数据库主机执行;SQL 使用已获目录读取权限的账号执行。实例、空间和备份查询在 CDB 根容器执行,Data Guard 查询在物理备库根容器执行。先核对主机、时间、用户和当前容器:

# 确认主机、采集时间和执行用户。
hostname
date '+%F %T %z'
id -un
# 已具备本机操作系统管理认证权限时,连接 SQL*Plus。
sqlplus / as sysdba
SHOW CON_NAME

主备地址、目录和预期状态见环境配置。RAC 需逐实例检查,或使用对应的 GV$ 视图并保留 INST_ID。

实例与连接

先确认实例已启动,再确认数据库角色、业务 PDB、监听注册和应用连接。

检查 SQL 与监听命令

查看实例状态和启动时间。启动时间发生变化时,核对是否有计划重启:

SELECT instance_name, host_name, status, startup_time
FROM   v$instance;

实例为 STARTED(NOMOUNT)时,记录状态并核对建设或维护安排;数据库已 MOUNT 或 OPEN 后再查询角色:

SELECT name, db_unique_name, open_mode, database_role, log_mode
FROM   v$database;

在已打开的主库根容器检查业务 PDB 和活动服务:

SELECT con_id, name, open_mode, restricted
FROM   v$pdbs
WHERE  name <> 'PDB$SEED'
ORDER BY con_id;

SELECT name, network_name
FROM   v$active_services
ORDER BY name;

在主机查看监听及已注册服务;监听名按环境配置替换:

# 查看监听是否运行及监听地址。
lsnrctl status LISTENER
# 查看服务注册和处理程序状态。
lsnrctl services LISTENER

再通过实际业务 PDB 服务执行一次连接检查,连接成功后运行:

SELECT 1 AS connection_ok FROM dual;

本地 SYSDBA 连接成功不能代替客户端业务连接检查。静态注册服务显示 UNKNOWN 不直接等于故障,还需实际连接验证。

正常结果示例: 主库为 PRIMARY / READ WRITE,业务 PDB 为 READ WRITE / RESTRICTED=NO,业务连接返回 CONNECTION_OK=1。物理备库可为 MOUNTED 或 READ ONLY WITH APPLY,按预期用途判断;测试库的 NOARCHIVELOG 不单独判为故障。

主机与空间

同时看资源趋势、底层磁盘余量和数据库空间,不能只看一个使用率。

检查 Linux 命令与空间 SQL

在主库、备库分别执行。目录按本机挂载点替换;iostat 由 sysstat 提供:

# 查看运行时间和 1、5、15 分钟平均负载。
uptime
# 查看内存,重点关注 available 和是否持续发生换页。
free -h
# 每秒采样,查看 CPU、换页及 I/O 等待;首行是启动以来的平均值。
vmstat 1 3
# 查看磁盘吞吐、队列和延迟;首组是启动以来的统计,重点看后续采样。
iostat -mxz 1 3
# 查看数据盘、备份盘容量和 inode。
df -h /data_oracle /data_oracle_back
df -i /data_oracle /data_oracle_back

查询表空间使用率和 FRA 配额:

SELECT tablespace_name, ROUND(used_percent, 2) AS used_percent
FROM   dba_tablespace_usage_metrics
ORDER BY used_percent DESC;

SELECT name,
       ROUND(space_limit / POWER(1024, 3), 2) AS limit_gb,
       ROUND(space_used / POWER(1024, 3), 2) AS used_gb,
       ROUND(space_reclaimable / POWER(1024, 3), 2) AS reclaimable_gb,
       ROUND(100 * space_used / NULLIF(space_limit, 0), 2) AS used_percent
FROM   v$recovery_file_dest;

表空间百分比按最大可用容量计算,需结合自动扩展和底层存储判断;UNDO 包含已过期空间。FRA 未配置或配额为 0 时不填“使用率 0%”,应记录“不适用”或核实配置。阈值见监控规则。

正常结果示例: 数据盘使用率 62%、备份盘 55%、inode 3%,最大表空间使用率 68%、FRA 42%;CPU、换页和磁盘延迟未持续偏离正常基线。发现归档空间不足时先记录增长和备库状态,不直接删除文件。

主备同步

仅检查已建成的 Data Guard 主备组。若 181 仍处于等待还原阶段,记录“待还原”,不能填写“同步正常”;独立测试库填“不适用”。

物理备库检查 SQL

在物理备库根容器查看延迟和数据更新时间,间隔一次采集周期后复查 DATUM_TIME 是否推进:

SELECT name, value, time_computed, datum_time
FROM   v$dataguard_stats
WHERE  name IN ('transport lag', 'apply lag');

查看当前阻塞应用的日志缺口,以及恢复相关进程的当前动作:

SELECT thread#, low_sequence#, high_sequence#
FROM   v$archive_gap;

SELECT role, thread#, sequence#, action
FROM   v$dataguard_process
WHERE  role LIKE '%recovery%';

WAIT_FOR_LOG 可表示已追平后等待新日志,需结合延迟更新时间和主库日志生成情况判断。管理恢复进程显示 IDLE 时,应结合其他恢复进程和延迟判断。出现 WAIT_FOR_GAP、恢复进程缺失或延迟持续增加时,转入 Data Guard 排查。

正常结果示例: transport lag 和 apply lag 均为 +00 00:00:00,DATUM_TIME 持续更新,GAP 查询无行;恢复相关进程存在,应用进程为 APPLYING_LOG,或在日志已追平时等待新日志。延迟显示为零但数据时间未更新时,继续核查传输状态。

备份与作业

核对最近一次应该完成的备份和作业,检查完成时间、结果与日志。

备份、Scheduler 与定时任务检查

查看近 7 天 RMAN 作业,按实际计划核对数据库备份和归档备份:

SELECT input_type,
       status,
       TO_CHAR(start_time, 'YYYY-MM-DD HH24:MI:SS') AS started_at,
       TO_CHAR(end_time, 'YYYY-MM-DD HH24:MI:SS') AS ended_at,
       time_taken_display
FROM   v$rman_backup_job_details
WHERE  start_time >= SYSDATE - 7
ORDER BY start_time DESC;

查看近 24 小时未成功的 Scheduler 作业:

SELECT owner, job_name, status, log_date, error#
FROM   dba_scheduler_job_run_details
WHERE  log_date >= SYSTIMESTAMP - INTERVAL '1' DAY
AND    status <> 'SUCCEEDED'
ORDER BY log_date DESC;

在 Oracle 软件属主账号下查看该账号的 cron 计划:

# 只查看,不修改定时任务。
crontab -l

Scheduler 无失败记录不代表作业已经运行;cron 计划存在也不代表执行成功。对照预计结束时间和任务日志核实,COMPLETED WITH WARNINGS、COMPLETED WITH ERRORS 不能直接填写“成功”。

正常结果示例: 00:15 的增量备份在 01:08 以 COMPLETED 结束,归档备份按计划完成,应运行的作业有完成记录。备份恢复能力按备份恢复中的步骤另行验证。

错误日志

从上次巡检结束时间查到本次时间,重点关注新错误、重复错误和未关闭的异常。

查看最近 24 小时 Oracle 错误

在 CDB 根容器及相关业务 PDB 分别查看当前容器的 alert log。下面以最近 24 小时为例;补班或中断后应延长时间范围:

SELECT originating_timestamp, message_text
FROM   v$diag_alert_ext
WHERE  originating_timestamp >= SYSTIMESTAMP - INTERVAL '1' DAY
AND    message_text LIKE '%ORA-%'
ORDER BY originating_timestamp DESC;

保留错误原文、时间、容器、重复次数和相关任务。该查询只筛选带 ORA- 的消息,仍需检查监控告警、监听日志和备份脚本日志。

正常结果示例: 本次范围内无新增待处理错误;已有错误有负责人和跟进记录。出现错误时按现象进入故障排查,同时记录业务影响。

巡检记录

每次保留一份记录。未检查填“未检查”,不适用填“不适用”;异常复查后补充结果。

记录项示例
时间、人员2026-10-26 09:00 +0800,值班人员
主机、实例、角色192.168.55.120 / orcl / PRIMARY
实例与连接实例 OPEN,业务 PDB、监听注册与业务连接正常
主机与空间数据盘 62%,备份盘 55%,FRA 42%;资源无持续异常
主备同步121 备库延迟更新、无 GAP,应用状态正常
备份与作业最近计划备份 COMPLETED,应运行作业已完成
错误日志无新增待处理错误;遗留问题见工单
异常与交接现象、发生时间、证据、工单号、负责人、下一次复查时间

On this page