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
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等參數。
- 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
|
控制文件記錄時間戳
|