【轉】oracle學習筆記(三)之檢查Oracle的告警日誌檔案

奮奮熊發表於2013-04-19

作為一個 DBA,或者哪怕僅僅是和 Oracle 資料庫打交道的技術人員,你都必須知道告警日誌是什麼,在何處。 
而對於 DBA來說,實時的監控資料庫的告警日誌是必須進行的工作,監控並且應該根據不同的嚴重級別,傳送不同級別的告警資訊(通過郵件、簡訊) ,這可以幫助我們及時瞭解資料庫的變化與異常,及時響應並介入處理。

 

告警檔案錯誤檢查

每日應檢查應用資料庫警報日誌檔案(Alert_SID.log),檢查是否存在資料庫系統錯誤提示資訊,檢視有無“ORA-”,Error”,“Failed”等出錯資訊。根據錯誤資訊進行分析並解決。告警日誌檔案的路徑檢視:show parameter background_dump_dest

清除告警日誌內容

將每天的告警日誌備份好進行清除。具體方法:在$ORACLE_HOME/SID/bdump/   目錄下開啟alert_ORACLE_SID.LOG這個檔案,然後檢查裡面是否有錯誤資訊,之後每天把它按日期另存為如:alert_ORACLE_SID070416.LOG。再開啟alert_ORACLE_SID.LOG檔案可清除掉裡面的內容,這樣便於檢視告警日誌內容。

檢查Oracle物件的狀態

主要介紹如何檢查相關Oracle物件的狀態,內容共分六個部分,分別為:檢查Oracle控制檔案狀態;檢查Oracle線上日誌狀態;檢查Oracle表空間的狀態;檢查Oracle所有表、索引、儲存過程、觸發器、包等物件的狀態。

檢查Oracle控制檔案狀態

輸入:>sqlplus “/as sysdba”

select * from v$controlfile;

   輸出:

       STATUS   NAME

-------------------------------------

D:/ORACLE/ORADATA/SFYXF/CONTROL01.CTL

D:/ORACLE/ORADATA/SFYXF/CONTROL02.CTL

D:/ORACLE/ORADATA/SFYXF/CONTROL03.CTL
分析:輸出結果應該有3條以上(包含3條)的記錄,“STATUS”應該為空。狀態為空表示控制檔案狀態正常。

檢查Oracle線上日誌狀態

select * from v$logfile;

輸出:

GROUP# STATUS TYPE  MEMBER

---------- ------- --------------------------------------------

3    ONLINE D:/ORACLE/ORADATA/SFYXF/REDO03.LOG

2   ONLINE D:/ORACLE/ORADATA/SFYXF/REDO02.LOG

1   ONLINE D:/ORACLE/ORADATA/SFYXF/REDO01.LOG

分析:輸出結果應該有3條以上(包含3條)記錄,“STATUS”應該為非“INVALID”,非“DELETED”。 注:“STATUS”顯示為空表示正常。
檢查Oracle表空間的狀態

select tablespace_name,status from dba_tablespaces;

輸出:

TABLESPACE_NAME STATUS

------------------------------ ---------

SYSTEM ONLINE

TOOLS ONLINE

RBS ONLINE

TEMP ONLINE

USERS ONLINE

INDX ONLINE

DRSYS ONLINE

WACOS ONLINE

IPAS_SUB_DATA ONLINE

IPAS_SUB_IDX ONLINE

IPAS_USG_DATA ONLINE

IPAS_USG_IDX ONLINE

IPAS_ACCT_DATA ONLINE

IPAS_ACCT_IDX ONLINE

NMS ONLINE

NMS_STAT_DATA ONLINE

NMS_STAT_IDX ONLINE

分析:其中“STATUS”應該都為“ONLINE”, 如果“STATUS”值為“OFFLINE”時應該及時分析其狀態原因,並將其改為“ONLINE”狀態。

輸入:select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';

輸出: no rows selected

 分析:如果有記錄返回,則說明存在無效的物件。若這些物件與我們應用相關,那麼需要重新生成這個物件。具體生成方法可以尋求ORACLE的技術支援。

檢查Oracle各個表空間的增長情況

view plain
  1. select A.tablespace_name, (1 - (A.total) / B.total) * 100 used_percent  
  2.   from (select tablespace_name, sum(bytes) total  
  3.           from dba_free_space  
  4.          group by tablespace_name) A,  
  5.        (select tablespace_name, sum(bytes) total  
  6.           from dba_data_files  
  7.          group by tablespace_name) B  
  8.  where A.tablespace_name = B.tablespace_name;  

輸出:

       TABLESPACE_NAME USED_PERCENT

------------------------------ ------------

DRSYS   30.7578125

FS     .19375

INDX   .00390625

IPAS_ACCT_DATA  1.2

IPAS_ACCT_IDX   2.2

IPAS_SUB_DATA   7.4

IPAS_SUB_IDX   7.25

IPAS_USG_DATA   12.378125

IPAS_USG_IDX   20.603125

NMS   5.221875

NMS_STAT_DATA   4.5

NMS_STAT_IDX   1.5125

RBS   27.0009766

SA   .0375

SYSTEM  34.265625

TEMP   2.71972656

TOOLS   .00390625

USERS   608473558

WACOS   10.621875

19 rows selected.

分析:如果使用率“USED_PERCENT”在90%以上,則注意要增加資料檔案來擴充套件表空間而不要是用資料檔案的自動擴充套件功能。

檢查system表空間內的內容

view plain
  1. select distinct (owner)  
  2.   from dba_tables  
  3.  where tablespace_name = 'SYSTEM'  
  4.    and owner != 'SYS'  
  5.    and owner != 'SYSTEM'  
  6. union  
  7. select distinct (owner)  
  8.   from dba_indexes  
  9.  where tablespace_name = 'SYSTEM'  
  10.    and owner != 'SYS'  
  11.    and owner != 'SYSTEM';  

輸出:no rows selected

分析:如果有記錄返回,則表明system表空間記憶體在一些非system和sys使用者的物件。應該進一步檢查這些物件是否與我們應用相關。如果相關請把這些物件移到非System表空間,同時應該檢查這些物件屬主的預設表空間值。


轉載:http://blog.csdn.net/lpioneer/article/details/5935533

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26077805/viewspace-758829/,如需轉載,請註明出處,否則將追究法律責任。

相關文章