监控目标与总体架构
快速检查与命令行监控
ps -ef | grep ora_top/htop、iostat -xz 1 1、vmstat 1 5、sar -n DEV 1 5、nmonlsnrctl status;启动监听:lsnrctl startnetstat -tlnp | grep <端口号>(如 1521)sqlplus / as sysdbaselect instance_name, status from v$instance;、select name, open_mode from v$database;select count(*), status from v$session group by status;col TABLESPACE_NAME for a20
select tbs_used_info.tablespace_name,
tbs_used_info.alloc_mb,
tbs_used_info.used_mb,
tbs_used_info.max_mb,
tbs_used_info.free_of_max_mb,
tbs_used_info.used_of_max || '%' used_of_max_pct
from (
select a.tablespace_name,
round(a.bytes_alloc/1024/1024) alloc_mb,
round((a.bytes_alloc - nvl(b.bytes_free,0))/1024/1024) used_mb,
round((a.bytes_alloc - nvl(b.bytes_free,0))*100/a.maxbytes) used_of_max,
round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free,0))/1048576) free_of_max_mb,
round(a.maxbytes/1048576) max_mb
from (select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes
from dba_data_files f group by f.tablespace_name) a,
(select f.tablespace_name, sum(f.bytes) bytes_free
from dba_free_space f group by f.tablespace_name) b
where a.tablespace_name = b.tablespace_name(+)
) tbs_used_info
order by tbs_used_info.used_of_max desc;
rman target / list backup;select event, count(*) from v$session_wait group by event order by count(*) desc;select sql_text, executions, elapsed_time from v$sql order by elapsed_time desc where rownum <= 10;企业级与开源监控方案
sqlplus 验证连通性,Zabbix 通过 ODBC 定时抓取指标并告警。关键告警阈值与巡检清单
lsnrctl status 异常(重启监听/网络排障)top/free/df -h/iostat/vmstat/sar/nmon;检查系统日志与内核参数lsnrctl status;netstat -tlnp | grep 1521select instance_name, status, database_status from v$instance;rman target / list backup summary; validate backup;select job_name, next_date, failures from dba_scheduler_jobs where enabled='TRUE';opatch lspatches、sqlplus -version自动化脚本与维护窗口示例
#!/bin/bash
if ! command -v lsnrctl &> /dev/null; then
echo "lsnrctl not found"; exit 1
fi
status=$(lsnrctl status 2>/dev/null)
if echo "$status" | grep -q "LISTENER"; then
echo "Listener is running."
else
echo "Listener is DOWN, starting..."
lsnrctl start
fi
* * * * * /path/to/monitor_listener.sh