資料庫(Oracle)運維工作內容及常用指令碼命令

sqysl發表於2016-06-09

1、系統資源狀況:
--記憶體及CPU資源
  --linux,solaris,aix
    vmstat 5
  --說明:
    1)觀察空閒記憶體的數量多少,以及空閒記憶體量是否穩定,如果不穩定就得想辦法來解決,怎麼解決還得看具體情況,一般可以透過調整相關記憶體引數來解決,各種作業系統輸出指標、解釋及記憶體調整引數及方法不完全一樣;
    2)觀察CPU資源利用情況,首先,需要觀察CPU上執行的任務數,也就是vmstat輸出中位於第一列上的指標,如果該指標持續大於CPU核心數,應該引起注意;如果該指標持續大於CPU核心數的兩倍,那麼應該引起重視;如果持續為CPU核心數的多倍,系統一般會出現應用可感知的現象,必須立刻想辦法解決。當然,在觀察該指標的同時,還要結合CPU利用率的指標情況,如:使用者使用百分比,系統使用百分比,空閒百分比等指標,如果空閒百分比持續低於20%,應該引起注意;如果持續低於10%,應該引起重視;如果持續為0,系統一般會出現應用可感知的現象,應該立刻想辦法解決問題;
    3)CPU使用者使用百分比和系統使用百分比的比例,也是應該注意的。一般來說,在一個狀態正常的系統上,使用者使用百分比應該比系統使用百分比大很多,幾倍到十幾倍甚至更高,如果系統使用百分比持續接近使用者使用百分比,甚至大於使用者使用百分比,說明系統的狀態是不正常的,可能是硬體或者作業系統問題,也可能是應用問題。有關vmstat輸出中各指標及解釋等,可以參照本人部落格中相關文章: http://blog.csdn.net/tuning_optmization
--IO狀況
  --linux,solaris
    iostat -dx 5
  --aix
    iostat 5
  --說明:
    1)該命令主要用來觀察系統儲存裝置的負載和效能狀況,首先,需要觀察系統各儲存裝置的繁忙程度,如果該繁忙程度指標持續超過80%,那麼應該引起注意;如果持續超過90%,應該引起重視;如果持續100%,一般會出現應用感知的現象,應該立刻想辦法解決問題;
    2)其次,需要注意的是系統上各儲存裝置的IO能力,就是每秒鐘各儲存裝置的輸入、輸出的資料量,這個和具體裝置的硬體及配置有關,沒有一個嚴格的標準,效能好點的能達到每秒上G,甚至幾個G,差的只能到每秒幾十兆甚至十幾兆;
    3)最後,需要觀察儲存裝置完成每次讀寫操作耗費的時間,這個也是和具體裝置硬體和配置相關的,好的裝置可能不到1毫秒,差的能到幾十毫秒甚至上百毫秒;iostat的輸出,在各種作業系統上的輸出和解釋也不盡相同,具體可以參照本人部落格的相關文章。

2、磁碟空間及使用率
   df -k
   --說明:
     1)該命令會輸出系統上各儲存裝置的裝置名,總空間量,已使用空間量及百分比,可用空間量及百分比,及掛載點名字等,這裡儲存空間的單位為K;

3、檢視系統日誌
   --說明:
     1)需要檢視的日誌名字及具體位置,和具體的作業系統及你的關注點有關,具體可以參照相關文章;

4、檢視資料庫告警日誌(alert.log)
   --說明:
     1)不同的資料庫版本,該日誌的位置也會不同,一般來說,10g的資料庫上,在ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log;而11g資料庫上,在ORACLE_BASE/diag/rdbms/ORACLE_SID/ORACLE_SID/trace/alert_ORACLE_SID.log,具體可以登入資料庫並透過以下命令查詢:
select value from v$diag_info where name ='Diag Trace';
     2)找到alert.log日誌後,可以檢查是否有異常情況,例如:報錯,可疑告警,可疑命令等,如果有這些異常,可以將這些資訊報告專業DBA,由專業DBA結合其他資訊進一步跟蹤、分析,直到找到引起異常的原因,並妥善解決為止;

5、檢視資料庫表空間
   --說明:
     1)最重要的是,檢視資料庫的空間使用率,資料庫各表空間的空間使用情況,可以用以下命令查詢,如果發現表空間使用率異常,應該引起注意,需進一步調查是正常使用還是異常使用,如果正常使用引起的空間不夠,可以考慮對錶空間擴容或其他措施解決,否則,就得看看什麼問題導致了表空間的異常使用,查明原因後解決;
Select d.tablespace_name,space "sum_space(m)",blocks sum_blocks,
         space-nvl(free_space,0) "used_space",round((1-nvl(free_space,0)/space)*100,2) "used_rate(%)",
         Free_space "free_space(M)"
    From (select tablespace_name,round(sum(bytes)/(1024*1024),2) space,sum(blocks) blocks
            From dba_data_files
           Group by tablespace_name) d,
         (select tablespace_name,round(sum(bytes)/(1024*1024),2) free_space
            From dba_free_space
           Group by tablespace_name) f
           Where d.tablespace_name=f.tablespace_name(+)
  Union all
  Select d.tablespace_name,space "sum_space(M)",blocks sum_blocks,used_space "used_space(M)",round(nvl(used_space,0)/space*100,2) "used_rate(%)",
         Nvl(free_space,0) "free_space(m)"
    From
         (select tablespace_name,round(sum(bytes)/(1024*1024),2) space,
                 Sum(blocks) blocks
            From dba_temp_files
           Group by tablespace_name) d,
         (select tablespace_name,round(sum(bytes_used)/(1024*1024),2) used_space,round(sum(bytes_free)/(1024*1024),2) free_space
            From v$temp_space_header
           Group by tablespace_name) f
    Where d.tablespace_name=f.tablespace_name(+)
    order by tablespace_name;
     2)其次,要檢視錶空間的設定及狀態,最該注意的是使用者資料表空間資料檔案的自動擴充套件設定,一般來說,建議關閉使用者資料表空間資料檔案的自動擴充套件,這樣,可以避免意外事件的發生,例如:表空間異常使用導致的系統空間耗盡等;關閉資料檔案自動增長,當表空間耗盡時,繼續使用資料庫會在使用者端報錯,從而可以起到空間告警的作用,表空間資料檔案可以查詢ba_data_files及dba_temp_files等檢視;

6、檢視資料庫使用者
   --說明:
     1)可以檢視dba_users檢視來了解資料庫使用者的情況,如果發現異常資訊,及時通知專業DBA等相關人員,並進一步跟蹤、分析,直到找到引起異常的原因並妥善解決,例如:發現了新的資料庫使用者;原來被鎖定的使用者被開啟了;使用者預設表空間發生了變化;使用者預設資源配置梗概或資源消耗組發生了變化等。

7、檢視使用者許可權及審計資訊
   --說明:
     1)檢視使用者許可權,看使用者許可權是否發生了變化,是否存在過度授權的情況,檢視使用者擁有的所有許可權可以用以下語句:
SELECT 'ROLE' TYPE,grantee,granted_role privilege,admin_option ad,
         '/' table_name,'/' column_name,'/' owner
    FROM dba_role_privs
   WHERE grantee = UPPER ('&&1')
  UNION ALL
  SELECT 'SYSTEM' TYPE,grantee,privilege privilege,admin_option ad,
         '/' table_name,'/' column_name,'/' owner
    FROM dba_sys_privs
   WHERE grantee = UPPER ('&&1')
  UNION ALL
  SELECT 'TABLE' TYPE,grantee,privilege privilege,grantable ad,
         table_name,'/' column_name,owner
    FROM dba_tab_privs
   WHERE grantee = UPPER ('&&1')
  UNION ALL
  SELECT 'COLUMN' TYPE,grantee,privilege privilege,
         grantable ad,table_name,column_name,owner
    FROM dba_col_privs
   WHERE grantee = UPPER ('&&1')
   ORDER BY 1;
     2)如果系統啟用了審計功能,根據審計具體配置的不同,可以檢視相應表、檢視、字典或作業系統檔案;

8、檢視系統會話數及會話情況
   --說明:
     1)檢視系統會話數,可以多次執行以下命令檢視,看看總會話數是否穩定,也可以分使用者檢視會話數,並檢視各使用者會話數是否穩定,並和之前的資料進行對比,如果發現不穩定或異常,及時通知專業DBA等相關人員,並進一步跟蹤、分析,直至找到出現異常的原因並妥善解決,例如:會話的異常增長等。
       select count(*) from v$session;
       select username,count(*) from v$session group by username;
     2)大體檢視會話,看看是否有異常資訊,如果發現異常情況,及時通知專業DBA等相關人員,並進一步跟蹤、分析,直到找到出現異常的原因並妥善解決,例如:異常主機的登入;異常使用者的登入等;
       select * from v$session;

9、檢視資料庫等待事件
   --說明:
     1)資料庫等待事件,可以反映資料庫目前的執行狀態,可以用以下命令查詢,如果發現異常資訊,及時通知專業DBA等相關人員,並進一步跟蹤、分析,知道找到出現異常的原因並妥善解決,此外,由於該項檢查專業性比較強,很多時候,最好由專業DBA或者運維人員與專業DBA一起檢查該專案,以便及時準確的發現和解決問題,具體事件及解釋可以參照本人部落格相關文章: http://blog.csdn.net/tuning_optmization
Select event "wait event",sum(seconds_in_wait) "waited so far(sec)",
         Count(sid) "num sess waiting"
    From v$session_wait
   Group by event
   order by "waited so far(sec)" desc,"num sess waiting" desc;

10、檢查使用者密碼情況
    --說明:
      1)檢查作業系統使用者密碼,檢查各使用者密碼是否變化,如果發現異常,及時通知系統管理員等相關人員,並進一步跟蹤、分析,直到找到異常的原因並妥善解決,最好定期修改密碼;
      2)檢查資料庫使用者密碼,檢查資料庫各使用者密碼是否變化,如果發現異常,及時通知專業DBA等相關人員,並進一步跟蹤、分析,直到找到異常的原因並妥善解決,最好定期修改密碼;

11、定期獲取AWR報告並分析
    --說明:
      1)AWR報告是oracle資料庫支援的一個功能,可以反映資料庫相應時段的負載和效能等狀態,系統預設保留一週的快照以生成相應AWR,快照粒度為1小時;
      2)AWR包含資訊非常全面,專業DBA可以根據它瞭解到相應時段資料庫乃至伺服器的整體狀態,分析AWR報告的工作需要專業DBA或者請專業DBA配合來做,一旦發現異常,及時通知相關人員,並進一步跟蹤、分析,直到找到異常的原因並妥善解決,獲取及分析AWR報告的方法,可以參照本人的部落格相關文章: http://blog.csdn.net/tuning_optmization,禁止轉載。

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

相關文章