1. 程式人生 > >Linux/Unix shell 監控Oracle例項(monitor instance)

Linux/Unix shell 監控Oracle例項(monitor instance)

    使用shell指令碼實現對Oracle資料庫的監控與管理將大大簡化DBA的工作負擔,如常見的對例項的監控,監聽的監控,告警日誌的監控,以及資料庫的備份,AWR report的自動郵件等。本文給出Linux 下使用 shell 指令碼來監控 Oracle 例項。

1、監控Oracle例項shell指令碼

  [email protected]:~/dba_scripts/custom/bin> more ck_inst.sh   
  # +-------------------------------------------------------+
  # +    CHECK INSTANCE STATUS AND SEND MAIL                |
  # +    Author : Robinson                                  |
  # +    Blog   : http://blog.csdn.net/robinson_0612        |
  # +    Desc:                                              |
  # +         variable X_DB use to exclude some instance    | 
  # +-------------------------------------------------------+
  
  #!/bin/bash
  
  # --------------------------------------------
  # Set environment vairable and define variable
  # --------------------------------------------
  
  if [ -f ~/.bash_profile ]; then
      . ~/.bash_profile
  fi
  
  ORATAB=/etc/oratab
  TIMESTAMP=`date +%Y%m%d%H%M`    
  MAILPATH=/users/robin/dba_scripts/sendEmail-v1.56
  LOG_DIR=/users/robin/dba_scripts/custom/log             
  LOG_FILE=${LOG_DIR}/ck_inst_$TIMESTAMP.log 
  DBALIST="
[email protected]
;[email protected]" X_DB='SYBO2SZ|CNQDII|CNFO' RETENTION=1 # ---------------------- # Check instance status # ---------------------- if [ -z "$X_DB" ]; then X_DB='DUMMY' fi { echo "`date` " echo "Oracle Database(s) Status on `hostname`" echo "-----------------------------------------" db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "\#" | grep -v "\*"` pslist=`ps -ef | grep pmon | grep -v grep` dblist=`for i in $db; do echo $i; done | grep -vP $X_DB` for i in $dblist; do echo "$pslist" | grep "[oa]*_pmon_$i" > /dev/null 2>&1 if (( $? )); then echo "Oracle Instance - $i: Down" else echo "Oracle Instance - $i: Up" fi done; }|tee -a ${LOG_FILE} 2>&1 # ------------------------ # Send Email # ------------------------ cnt=`cat $LOG_FILE | grep Down | wc -l` if [ "$cnt" -gt 0 ]; then $MAILPATH/sendEmail -f
[email protected]
-t $DBALIST -u "Instance status on `hostname`" -o message-file=$LOG_FILE fi # ------------------------------------------------ # Removing files older than $RETENTION parameter # ------------------------------------------------ find ${LOG_DIR} -name "ck_inst*.*" -mtime +$RETENTION -exec rm {} \; exit
[email protected]
:~/dba_scripts/custom/bin> ./ck_inst.sh Fri Feb 1 15:10:41 CST 2013 Oracle Database(s) Status on SZDB ----------------------------------------- Oracle Instance - CNBO1: Up Oracle Instance - CNBOTST: Down Oracle Instance - CNMMBO: Up Oracle Instance - MMBOTST: Up Oracle Instance - CNMMBOBK: Down Oracle Instance - CI8960U: Up Oracle Instance - CNBO2: Up Feb 01 15:10:41 szdb sendEmail[16024]: Email was sent successfully!

2、補充
  a、上面的指令碼根據/etc/oratab中列出的例項進行監控,可以監控多個例項。
  b、變數X_DB用於排除那些不需要監控的例項,如指令碼中排出了3個例項。也可以將該變數置空。
  c、如果X_DB的值為空時,我們賦予了DUMMY,確保你的資料庫例項名沒有使用DUMMY,否則過濾不掉。
  d、監控指令碼在監控過程中只要有一個例項宕掉,則傳送整個監控報告。
  d、使用了sendEmail郵件傳送程式來發送郵件。參閱:不可或缺的 sendEmail
  e、尾部清除監控過程中產生的保留日期之前的日誌。

更多參考

相關推薦

Linux/Unix shell 監控Oracle例項(monitor instance)

    使用shell指令碼實現對Oracle資料庫的監控與管理將大大簡化DBA的工作負擔,如常見的對例項的監控,監聽的監控,告警日誌的監控,以及資料庫的備份,AWR report的自動郵件等。本文給出Linux 下使用 shell 指令碼來監控 Oracle 例項。1、監控

linux/unix 下修改oracle資料庫例項

1、檢查原來的資料庫例項名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > select instance from v$thread; INS

Linux Unix shell 編程指南學習筆記(第四部分)

fcm 驗證 () only arguments line div 反饋 sed 第十六章 shell腳本介紹 此章節內容較為簡單,跳過。 第十七章 條件測試 test命令 expr命令 test 格式 test condition 或者 [

Linux/Unix shell 指令碼中呼叫SQL RMAN指令碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linuxshell指令碼程式設計例項--遍歷所有檔案,並按月份打成zip包

原始檔案形式如下圖: 經過shell指令碼處理之後,按月生成的zip包如下圖: 完成上述工作的shell指令碼如下: #下面這行程式碼並不是註釋,它的作用是表名該指令碼使用哪個shell直譯器 #! /bin/sh #變數賦值,等號=兩邊不能有空格 #需要處理的檔案目錄

linux中手工新建oracle例項

1、設定ORACLE_SID引數 export ORACLE_SID=fatpase ## fatpase為例項名 2、建立目錄 mkdir -p $ORACLE_BASE/admin/fatpase/adump mkdir -p $ORACLE_BAS

Linux Unix shell 程式設計指南學習筆記(第四部分)

第十六章  shell指令碼介紹 此章節內容較為簡單,跳過。 第十七章   條件測試 test命令 expr命令 test  格式  test  condition     或者  [ condition ]  (注意: condition兩側有空格) 檔案狀態測試:

Linux/Unix shell 引數傳遞到SQL指令碼

在資料庫運維的過程中,Shell 指令碼在很大程度上為運維提供了極大的便利性。而shell 指令碼引數作為變數傳遞給SQL以及SQL指令碼也是DBA經常碰到的情形之一。本文主要討論瞭如何將shell指令碼的引數傳遞到SQL指令碼之中並執行SQL查詢。   有關shell與

Linux\Unix IPC程序通訊例項分析(一):共享記憶體通訊---系統V

前些天看到有個博主寫部落格採用問答式的敘述方法:把很多知識點通過一問一答的形式把文章串起來,我覺得這種形式不錯,便於突出重點。後面我也做下嘗試,一邊寫寫部落格,一邊回顧一下自己對IPC程序通訊的認識。 Q:這些例子來自哪? Q:IBM原文都寫過了,為什麼還要在這裡再寫一

Linux系統資訊監控軟體system-monitor

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

linuxunix 修改Oracle例項

系統環境:CentOS 6.5 ORACLE版本:10.2 1、檢查原來的資料庫例項名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > sele

ctf比賽linux文件監控和恢復shell

shell then bash ctf tdi don 文件恢復 ech 目錄 之前參加ctf比賽時候臨時寫的,有很多不足,不過可以用,就貼出來分享給大家,希望對大家有幫助。 腳本一:記錄當前目錄情況 #!/bin/bashfunction getdir(){ for

Linuxshell腳本監控Tomcat的狀態並實現自動啟動

自動啟動 shell腳本 inux date monit 自動監控 訪問 shel -c 最近公司需要在Linux下監控tomcat的服務,一旦tomcat服務存在異常或者宕機,重啟tomcat保證服務的正常運行,由於Linux下有Shell腳本可以實現此效果,下面是Lin

監控oracle資料庫常用的shell

一.指令碼來監控Oracle資料庫:  1.檢查例項的可用性  2.檢查監聽器的可用性  3.檢查alert日誌檔案中的錯誤資訊  4.在存放log檔案的地方滿以前清空舊的log檔案  5.分析table和index以獲得更好的效能  6.

Linuxshell命令用法和例項總結:du

完整的Linux下Shell命令總結歸檔於IT老兵部落格。 命令格式 du [選項] [檔案] 命令功能 du(disk usage 的簡稱)命令用於檢查計算機上檔案和目錄的磁碟使用情況,可以遞迴顯示檔案和目錄。顯示每個檔案和目錄的磁碟使用空間。 命令引數

shell-監控Linux使用者登入後的操作,記錄history

背景: 公共的介面服務應用伺服器,QA組25人都有root許可權,又不好限制說突然抹了許可權。 但最近一段 時間,時常有更新應用後配置檔案被覆蓋掉。查不到源頭。 排查Ci自動構建後,不會有覆蓋配置檔案的情況。 故做此監控,說實話,加上監控已近3個月,未有發現配置檔案被

Linux/Unix Bash Shell 所有內建命令

對於bash shell本身包含的內建命令,我們如何在Linux / Apple OS X / *BSD / 類Unix作業系統上全部列出他們,並且無需查閱大量得bash手冊? shell 內建命令就是一個命令或一個函式,從 shell 中呼叫,它直接在 shell 中執行。bash shell

Linuxshell程式設計例項

1.用while語句建立一個根據輸入的數值求累加和(1+2+3+。。。。+n)的shell程式。   while           若干個命令列1        do              若干個命令列2        done    結構 #! /bin/b

linux手動建立oracle例項全過程

先理解幾個概念 oracle跟mysql和mssql的不同,提出了例項和表空間等的概念例項:即一個執行的服務,不含任何物理資料和內容資料庫:依託於例項執行,資料庫和例項可以使1對1的關係,也可以是一對多的管理,即可以有不同例項載入資料庫,但是一個例項只能載入一個數據庫一個作業

UNIX/Linux基於docker安裝Oracle 11g express資料庫

第一步 用包管理器安裝Docker平臺 下文的格式為 作業系統 : 安裝命令 安裝視訊 : 點選檢視 Linux(需使用ROOT許可權) archlinux/manjaro :