在Debian系统上监控Oracle数据库的运行状态可以通过多种方法和工具来实现。以下是一些常用的方法:
select ses.inst_id||chr(58)||ses.sid as inst_sid,
username,
(sysdate - sql_exec_start) day(1) to second(0) as sql_exec_start,
ses.sql_id,
substr(sql.sql_text,1,40) sql_text,
substr(case time_since_last_wait_microwhen 0 then (case wait_class when 'Idle' then 'IDLE: '||event else event end)else 'ON CPU'end,1,33) event,
(case time_since_last_wait_microwhen 0 then wait_time_microelse time_since_last_wait_microend) /1000000 wait_sec
from gv$session ses,
gv$sqlstats sql
where ses.inst_id||chr(58)||ses.sid <> sys_context ('USERENV','INSTANCE')||chr(58)||sys_context ('USERENV','SID')
and username is not null
and status='ACTIVE'
and ses.sql_id=sql.sql_id (+);
#!/bin/bash
export ORACLE_SID=orclexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export PATH=$ORACLE_HOME/bin:$PATH
# Oracle 用户和密码
# 如果监控脚本布置在adg本机 可以不设置DB_USER="sys"DB_PASS="password"TNS_ADMIN="orcl"
# TNS Entry for standby database
# 邮件设置MAIL_TO="xiaoxiangqin@mail.com"SUBJECT="ADG Status Alert"MAIL_LOG="/tmp/adg_alert_mail.log"
# 查询数据库,获取最后应用的日志时间
LAST_APPLIED_TIME=$(sqlplus -s "$DB_USER/$DB_PASS as sysdba" <<EOFSET
HEADING OFFSET FEEDBACK OFF
SELECT TO_CHAR(next_time, 'YYYY-MM-DD HH24:MI:SS')
FROM v\$archived_log
WHERE sequence# = (SELECT MAX(sequence#)
FROM v\$archived_log
WHERE applied = 'YES';
EXIT;
EOF
)
if [ -z "$LAST_APPLIED_TIME" ];then
echo "[$(date)] Error: Unable to retrieve last applied log time." >> $MAIL_LOG
exit 1
fi
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
CURRENT_TIMESTAMP=$(date -d "$CURRENT_TIME" +%s)
TIME_DIFF=$((CURRENT_TIMESTAMP - LAST_APPLIED_TIMESTAMP))
# 时间差是否超过 1 小时(3600 秒)
#这个时间和数据库的负载相关,如果是比较繁忙的系统,可以设置短一些
if [[ "$TIME_DIFF" -gt 3600]];then
echo "[$(date)] Last Applied Log Time: $LAST_APPLIED_TIME" >> $MAIL_LOG
echo "[$(date)] Current Time: $CURRENT_TIME" >> $MAIL_LOG
echo "[$(date)] Time difference exceeds 3 hours, sending alert." >> $MAIL_LOG
mailx -s "$SUBJECT" "$MAIL_TO" <<EOF
Warning: The last applied log on the ADG standby database was applied at $LAST_APPLIED_TIME.
Current time is $CURRENT_TIME.
The time difference exceeds 3 hours.
Please check the ADG status.
EOF
else
echo "[$(date)] ADG is normal. Last applied log time: $LAST_APPLIED_TIME" >> $MAIL_LOG
fi
### 使用系统监控工具
- 可以使用系统监控工具来查看Oracle数据库的活动。例如,使用以下命令可以查看与Oracle相关的进程:
```bash
ps -ef | grep ora_pmon
通过上述方法,可以在Debian系统上有效地监控Oracle数据库的运行状态和性能。根据具体需求选择合适的监控方法和工具,可以确保数据库的高效运行和稳定性。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: Debian下Golang编译速度慢怎么优化