日常巡检
每日检查清单、检查命令、正常结果示例和异常记录。
巡检清单
值班开始时按表检查,维护或故障处理后复查相关项。点击 SQL 下方的“模拟执行”可查看模拟输出。
| 检查项 | 正常判断 | 异常处理入口 |
|---|---|---|
| 实例与连接 | 角色和打开模式符合预期,业务 PDB 与服务可用 | 监听与连接 |
| 主机与空间 | 资源无持续异常,数据、归档和备份目录有余量 | 数据库慢或卡顿、空间检查 |
| 主备同步 | 延迟持续更新且符合目标,未报告 GAP,应用进程正常 | Data Guard 排查 |
| 备份与作业 | 最近一次计划备份成功,应执行的作业有完成记录 | 备份失败 |
| 错误日志 | 新增错误已核实,遗留异常有人跟进 | 故障排查 |
执行位置
Linux 命令在对应数据库主机执行;SQL 使用已获目录读取权限的账号执行。实例、空间和备份查询在 CDB 根容器执行,Data Guard 查询在物理备库根容器执行。先核对主机、时间、用户和当前容器:
# 确认主机、采集时间和执行用户。
hostname
date '+%F %T %z'
id -un
# 已具备本机操作系统管理认证权限时,连接 SQL*Plus。
sqlplus / as sysdbaOracle.server.TK01
2026-10-26 09:00:00 +0800
oracle
SQL*Plus: Release 19.0.0.0.0 - Production
Connected to: Oracle Database 19c Enterprise Edition
SQL>SHOW CON_NAMECON_NAME
------------------------------
CDB$ROOT主备地址、目录和预期状态见环境配置。RAC 需逐实例检查,或使用对应的 GV$ 视图并保留 INST_ID。
实例与连接
先确认实例已启动,再确认数据库角色、业务 PDB、监听注册和应用连接。
检查 SQL 与监听命令
查看实例状态和启动时间。启动时间发生变化时,核对是否有计划重启:
SELECT instance_name, host_name, status, startup_time
FROM v$instance;INSTANCE_NAME HOST_NAME STATUS STARTUP_TIME
------------- ------------------ ------ -------------------
orcl Oracle.server.TK01 OPEN 2026-10-25 08:00:00实例为 STARTED(NOMOUNT)时,记录状态并核对建设或维护安排;数据库已 MOUNT 或 OPEN 后再查询角色:
SELECT name, db_unique_name, open_mode, database_role, log_mode
FROM v$database;NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE LOG_MODE
---- -------------- ---------- ------------- -----------
ORCL orcl_pri READ WRITE PRIMARY ARCHIVELOG在已打开的主库根容器检查业务 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;CON_ID NAME OPEN_MODE RESTRICTED
------ ---- ---------- ----------
3 PDB1 READ WRITE NO
4 PDB2 READ WRITE NO
NAME NETWORK_NAME
---- ------------
pdb1 pdb1
pdb2 pdb2在主机查看监听及已注册服务;监听名按环境配置替换:
# 查看监听是否运行及监听地址。
lsnrctl status LISTENER
# 查看服务注册和处理程序状态。
lsnrctl services LISTENERLSNRCTL for Linux: Version 19.0.0.0.0
STATUS of the LISTENER
Alias LISTENER
Listening Endpoints Summary...
(ADDRESS=(PROTOCOL=tcp)(HOST=db01)(PORT=1521))
Services Summary...
Service "pdb1" has 1 instance(s).
Instance "orcl", status READY
The command completed successfully再通过实际业务 PDB 服务执行一次连接检查,连接成功后运行:
SELECT 1 AS connection_ok FROM dual;CONNECTION_OK
-------------
1本地 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 09:00:00 up 12 days, 2:30, 2 users, load average: 0.35, 0.28, 0.22
total used free shared buff/cache available
Mem: 62Gi 28Gi 12Gi 1.0Gi 22Gi 32Gi
Swap: 8Gi 0.0Gi 8Gi
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 12582912 1572864 21495808 0 0 2 10 120 260 3 2 94 1 0
Device r/s w/s rMB/s wMB/s await %util
sdb 12.0 8.0 2.40 1.20 3.20 12.00
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 5.0T 3.1T 1.9T 62% /data_oracle
/dev/sdc1 12T 6.6T 5.4T 55% /data_oracle_back
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb1 327680000 9830400 317849600 3% /data_oracle
/dev/sdc1 327680000 6553600 321126400 2% /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;TABLESPACE_NAME USED_PERCENT
--------------- ------------
USERS 68.00
SYSAUX 55.00
SYSTEM 48.00
NAME LIMIT_GB USED_GB RECLAIMABLE_GB USED_PERCENT
------------------------------ -------- ------- -------------- ------------
/data_oracle/fast_recovery_area 500.00 210.00 50.00 42.00表空间百分比按最大可用容量计算,需结合自动扩展和底层存储判断;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');NAME VALUE TIME_COMPUTED DATUM_TIME
------------- ------------- ------------------- -------------------
transport lag +00 00:00:00 2026-10-26 09:00:00 2026-10-26 08:59:59
apply lag +00 00:00:00 2026-10-26 09:00:00 2026-10-26 08:59:59查看当前阻塞应用的日志缺口,以及恢复相关进程的当前动作:
SELECT thread#, low_sequence#, high_sequence#
FROM v$archive_gap;
SELECT role, thread#, sequence#, action
FROM v$dataguard_process
WHERE role LIKE '%recovery%';no rows selected
ROLE THREAD# SEQUENCE# ACTION
------------------ ------- --------- ------------
managed recovery 0 0 IDLE
recovery logmerger 1 2380 APPLYING_LOGWAIT_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;INPUT_TYPE STATUS STARTED_AT ENDED_AT TIME_TAKEN_DISPLAY
---------- --------- ------------------- ------------------- ------------------
DB INCR COMPLETED 2026-10-26 00:15:00 2026-10-26 01:08:00 00:53:00
ARCHIVELOG COMPLETED 2026-10-26 01:08:00 2026-10-26 01:12:00 00:04:00查看近 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;no rows selected在 Oracle 软件属主账号下查看该账号的 cron 计划:
# 只查看,不修改定时任务。
crontab -l15 0 * * * /home/oracle/scripts/rman_incremental_backup.shScheduler 无失败记录不代表作业已经运行;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;no rows selected保留错误原文、时间、容器、重复次数和相关任务。该查询只筛选带 ORA- 的消息,仍需检查监控告警、监听日志和备份脚本日志。
正常结果示例: 本次范围内无新增待处理错误;已有错误有负责人和跟进记录。出现错误时按现象进入故障排查,同时记录业务影响。
巡检记录
每次保留一份记录。未检查填“未检查”,不适用填“不适用”;异常复查后补充结果。
| 记录项 | 示例 |
|---|---|
| 时间、人员 | 2026-10-26 09:00 +0800,值班人员 |
| 主机、实例、角色 | 192.168.55.120 / orcl / PRIMARY |
| 实例与连接 | 实例 OPEN,业务 PDB、监听注册与业务连接正常 |
| 主机与空间 | 数据盘 62%,备份盘 55%,FRA 42%;资源无持续异常 |
| 主备同步 | 121 备库延迟更新、无 GAP,应用状态正常 |
| 备份与作业 | 最近计划备份 COMPLETED,应运行作业已完成 |
| 错误日志 | 无新增待处理错误;遗留问题见工单 |
| 异常与交接 | 现象、发生时间、证据、工单号、负责人、下一次复查时间 |