在 Linux 上监控 Oracle 数据库状态,可以从 操作系统层面、Oracle 实例层面 和 性能/告警层面 来做。下面按常用方式系统说明。
sqlplus 查看实例状态su - oracle
sqlplus / as sysdba
SELECT instance_name, status, database_status
FROM v$instance;
常见状态:
OPEN:数据库正常MOUNTED:已挂载未打开STARTED:已启动未挂载SHUTDOWN:未启动查看数据库打开模式:
SELECT name, open_mode FROM v$database;
ps -ef | grep pmon
有 ora_pmon_<SID> 表示实例已启动。
lsnrctl status
查看监听端口:
netstat -tunlp | grep 1521
top
free -h
iostat -x 1
vmstat 1
Oracle 相关进程:
ora_pmon_*(进程监控)ora_dbw0_*(数据写入)ora_lgwr_*(日志写入)SELECT username, status, count(*)
FROM v$session
GROUP BY username, status;
SELECT event, total_waits
FROM v$system_event
ORDER BY total_waits DESC;
SELECT tablespace_name,
round(used_space*8/1024,2) used_mb,
round(tablespace_size*8/1024,2) total_mb
FROM dba_tablespace_usage_metrics;
cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
tail -f alert_$ORACLE_SID.log
lsnrctl status
# 或
tail -f $ORACLE_HOME/network/log/listener.log
@?/rdbms/admin/awrrpt.sql
#!/bin/bash
source ~/.bash_profile
sqlplus -s / as sysdba <<EOF
SELECT instance_name, status FROM v$instance;
EOF
lsnrctl status | grep "STATUS"
如果你能告诉我:
我可以给你更精确的监控方案或脚本。