熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫可用性和表空間容量

2013-11-13 15:51:12  來源: Oracle 

  很多人都有這樣的了解檢測Oracle的可用性所需要的命令比簡單的ping或者ps ef | grep 等Oracle的命令要多得多有觀點認為它需要一個使用SQL*Net 來驗證監聽器已經開啟並運行的測試訪問Oracle——這是用戶經常用到的訪問通過實際地登錄到實際環境中你可以確認這個實例環境可以接受登錄的如果你只是做了以上的檢測的話你如何才能知道是否登錄沒有被接受只是因為需要等待文檔日志?

  

  

  除了Oracle的激活和可用性之外我們還需要進行檢測以確保它可以用這樣我們還可以檢測表空間的容量

  

  檢測的腳本:

  

  

  假設所有的Oracle環境都已經搭建起來了

  

  

  假設所有的擴展都已經達到了最大的限度

  

  

  假設左右的表空間都缺乏運行的空閒空間

  

  

  下面的腳本可以在你想要的任何時候通過crontab 來中斷另外如果上面的例外情況出現了的話您還可以就這個腳本寫信或者電子郵件給支持人員獲得幫助

  

  

  如果您有什麼其他的測試這個腳本可以讓您輕松地進行修改以加以利用我使用這個Monitororcl 腳本作為模板並且在末尾添加了功能

  

  

  按crontab來調用query_oracle_instancessh 腳本:

  

  #!/bin/ksh /u/home/oracle/profile /u/app/oracle/admin/monitororcl cat /u/app/oracle/admin/Get_Oracle_Instance_List exit

  

  

  

  

  

  

  Get_Oracle_Instance_List 腳本如下:

  

  instance_name tnsname sys_password_for_this_instance instance_name tnsname sys_password_for_this_instance instance_name tnsname sys_password_for_this_instance

  

  

  

  

  

  

  下面是MONITORORCL腳本:

  

  #!/bin/ksh   #script : Rick Stehno   # script will monitor to see if Oracle is up   while [ $ != ]   do   ORACLE_INSTANCE=$   ORACLE_TNS=$   USR_ID=sys   USR_PASS=$   # echo Instance: [$ORACLE_INSTANCE]   # echo TNS [$ORACLE_TNS]   # echo PASS: [$USR_PASS]   LOGFIL=/u/app/oracle/admin/monitordevout   NOTIFY_LIST=useuseriduser   #   # 檢測關鍵的段沒有達到最大限度   sqlplus s <$LOGFIL >/dev/null   $USR_ID/$USR_PASS@$ORACLE_TNS   set pages   select distinct YES from dba_segments   where extents >= (max_extents) and segment_name not like %;   EOF   grep i ^ORA $LOGFIL >/dev/null   if [ $? eq ]   then   echo $ failed: check $ORACLE_INSTANCE for problems | /bin/mailx s ${ORACLE_INSTANCE} : Script failed $NOTIFY_LIST   exit   fi   MAXEXTENTS_REACHED=`awk { print $ } $LOGFIL`   if [ $MAXEXTENTS_REACHED = YES ]   then   echo $ failed: $ORACLE_INSTANCE max extents reached | /bin/mailx s ${ORACLE_INSTANCE} : max extents reached $NOTIFY_LIST   exit   fi   #   # 檢測是否能分配下一個段   sqlplus s <$LOGFIL >/dev/null   $USR_ID/$USR_PASS@$ORACLE_TNS   set pages   select distinct YES from dba_segments ds   where next_extent >   (select max(bytes) from dba_free_space   where tablespace_name = dstablespace_name);   EOF   grep i ^ORA $LOGFIL >/dev/null   if [ $? eq ]   then   echo $ failed: check $ORACLE_INSTANCE for problems | /bin/mailx s ${ORACLE_INSTANCE} : Script failed $NOTIFY_LIST   exit   fi   POSSIBLE_NEXTEXT_FAIL=`awk {print $ } $LOGFIL`   if [ $POSSIBLE_NEXTEXT_FAIL = YES ]   then   echo $ failed: $ORACLE_INSTANCE cannot extend segment | /bin/mailx s ${ORACLE_INSTANCE} : max extents reached $NOTIFY_LIST   exit   fi   shift   # echo shift done   done   echo Successful completion of $ `date`   exit


From:http://tw.wingwit.com/Article/program/Oracle/201311/17406.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.