oracle ADG 巡检脚本

   

#!/bin/bash
# 作者:bg9fqp
# 查询oracle 和 ADG运行情况
# 环境变量,需要按照实际环境修改
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH


# 数据库连接参数
adg_ora="sys/password@17.1.7.7:1521/orcldg as sysdba"
new_ora="sys/password@17.1.7.6:1521/orcl as sysdba"

# sql 输出内容格式处理
set_sql="set heading off feedback off pagesize 0 linesize 400 verify off echo off"

# 老集群执行sql命令
adg_exec_sql_query(){
  local sql_query="$1"
  local result=""
  result=$(sqlplus -S "$adg_ora" <<EOF
  $set_sql
  $sql_query
  exit;
EOF
)
echo "$result"

}

# 新集群执行sql命令
new_exec_sql_query(){
  local sql_query="$1"
  local result=""
  result=$(sqlplus -S "$new_ora" <<EOF
  $set_sql
  $sql_query
  exit;
EOF
)
echo "$result"

}

pt(){
  local data=$1
  for i in $data
  do
  if [ $i == "hh" ];then
    echo " ";
  else
    echo $i |awk '{printf("%s ",$0)}'
  fi;
  done
  echo " "
}



# 巡检内容
echo "开始检查Oracle 和 ADG 状态"

# SWITCH OVER角色和状态的检查
sql_cmd="select name,database_role, switchover_status, 'hh' from v\$database;"
adg_status=$(adg_exec_sql_query "$sql_cmd")
new_status=$(new_exec_sql_query "$sql_cmd")
echo "SWITCH OVER角色和状态的检查"
echo "主库状态:  "
pt "$new_status"
echo "备库状态:  "
pt "$adg_status"

# DG环境的保护模式检查
sql_cmd="select database_role, protection_mode, protection_level from v\$database;"
adg_status=$(adg_exec_sql_query "$sql_cmd")
new_status=$(new_exec_sql_query "$sql_cmd")
echo "保护模式检查"
echo "主库模式:  "
pt "$new_status"
echo "备库模式:  "
pt "$adg_status"

# 查看DG环境进程的状态
sql_cmd="select thread#, sequence#,process,status,'hh' from v\$managed_standby;"
adg_status=$(adg_exec_sql_query "$sql_cmd")
new_status=$(new_exec_sql_query "$sql_cmd")
echo "查看DG环境进程的状态"
echo "主库状态:  "
pt "$new_status"
echo "备库状态:  "
pt "$adg_status"


sql_cmd="select archived_thread#,archived_seq#,applied_thread#,applied_seq# from v\$archive_dest_status where  archived_thread# in (1,2);"
adg_status=$(adg_exec_sql_query "$sql_cmd")
new_status=$(new_exec_sql_query "$sql_cmd")
echo "查看日志序列"
echo "主库状态:  "
pt "$new_status"
echo "备库状态:  "
pt "$adg_status"

巡检结果如下图:

image.png

上一篇:
下一篇: 没有了