巡檢工具涉及腳本註解

1.使用echo “ ”|sqlplus -S ‘/as sysdba’的方法無法設置列寬
所以在chk_ora這個函數中

2.表空間使用率腳本

SELECT total.tablespace_name,
       Round(( 1 - free.MB / total.MB ) * 100, 2)
       || '%'                       AS Used_Pct
FROM   (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_free_space
        GROUP  BY tablespace_name) free,
       (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_data_files
        GROUP  BY tablespace_name) total
WHERE  free.tablespace_name = total.tablespace_name;
12c中上面的sql可能會由於回收站或者執行計劃導致很卡,建議用下面的sql
SELECT d.TABLESPACE_name,dt.STATUS,used_space*8/1024/1024 USED_GB,tablespace_size*8/1024/1024 TOTAL_GB,used_percent FROM DBA_TABLESPACE_USAGE_METRICS d ,dba_tablespaces dt
      where d.TABLESPACE_NAME = dt.TABLESPACE_NAME
      ORDER BY d.used_percent DESC;


3.從dba_segments中找出佔用SYSTEM表空間中排名前10位的大對象:
 SELECT * FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'SYSTEM' GROUP BY SEGMENT_NAME ORDER BY 2 DESC) WHERE ROWNUM < 10;

4.#Check redo buffer allocation retries and redo entries
關於log buffer的注意
a.    MAX(0.5M, (128K * number of cpus))
b.    On most systems, sizing the log buffer larger than 1M does not provide any
  performance benefit.It merely uses extra memory.

c.    查看redo buffer allocation retries,當值爲0的時候比較合適,否則就要重設redo log
 buffer
select name,value from v$sysstat where name='redo entries' or name='redo buffer allocation retries' order by NAME;
d.    log buffer space wait even 如果這個等待事件是主要的event 之一,說明log buffer 大小需要考慮下調整下大小了
  ----log_buffer 參數的修改需要重啓服務器才能生效
  show parameter log_buffer
  alter system set log_buffer=xxx scope=spfile;

5.enqueue deadlocks
發生過的死鎖次數
oracle提供兩種lock,一種是latch,一種是enqueue。

6.libary cache(命中率)


Library cache是Shared pool的一部分
Library cache需要解決三個問題:

a.    快速定位的問題:Library cache中對象衆多,Oracle如何管理這些對象,以便服務進程可以迅速找到他們需要的信息。比如某個服務進程需要迅速定位某個SQL是否存在於Library cache中。

b.    關係依賴的問題:Library cache中的對象存在複雜的依賴關係,當某個objec失效時,可以迅速將依賴其的對象也置爲失效狀態。比如某個表發生了結構變化,依賴其的SQL語句需要重新解析。

c.    併發控制的問題:Library cache中必須有一個併發控制的機構,比如鎖機制,來管理大量共享對象的併發訪問和修改的問題,比如某個SQL在重新編譯的同時,其所依賴的對象不能被修改。

lc的命中率通常在98%以上,否則,需要要考慮加大共享池,綁定變量,修改cursor_sharing等參數。

  1.  DB buffer cache 命中率

命中率計算公式


Hit Radio=1-physical reads/(db block gets+consistent gets)
先查詢db block gets、physical reads、consistent gets
select name,value from v$sysstat where name in('db block gets','consistent gets','physical reads');
然後根據公式計算出結果

SQL> show parameter db_block_buffers

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers                     integer     0

由於10G中引入了SGA自動管理,所以show parameter 查出來的db_block_buffers爲 0

查看當前buffer cache size

SQL> select name ,bytes/1024/1024 Mb from v$sgainfo where name ='Buffer Cache Size';


NAME                                     MB
-------------------------------- ----------
Buffer Cache Size                       288    這個buffer cache size 指的是 default + keep +recycle 的和


如果一個長期運行的database 長期的 Hit Radio<90%,那麼就應該考慮多分配點內存給buffer cache ,同時增加物理內存,或者SQL調優
彙總命令是
select (1-(sum(decode(name,'physical reads',value,0))/(sum(decode(name,'db block gets',value,0))+sum(decode(name,'consistent gets',value,0)))))*100 "Hit_Ratio" from v$sysstat;



理想的hit radio 應該在 95%以上

8. v$log_history

 V$LOG_HISTORY

這個視圖包含來自控制文件的歷史信息。 

                                                  數據類型                      說明

 

    THREAD#

NUMBER

歸檔日誌線程號

    SEQUENCE#

NUMBER

歸檔日誌序列號

    FIRST_TIME

NUMBER

歸檔日誌中的第一項的時間(最低SCN)。此列以前名爲TIME

    FIRST_CHANGE#

NUMBER

日誌中最低SCN。這個列以前名爲FIRST_CHANGE#

    NEXT_CHANGE#

NUMBER

日誌中最高SCN。這個列以前名爲HOGH_CHANGE#

    RECID

NUMBER

控制文件記錄ID

    STAMP

NUMBER

控制文件記錄時間戳


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章