解決項目數據庫問題,記錄如下:
問題原因:
總的來說這個數據問題主要是日誌切換頻繁導致髒塊來不及寫入數據文件,以至於數據庫hang住;
問題解決:
將redo文件增加到8組,新增加的3組每組500M大小,降低日誌文件的切換頻率,爲LGWn和DBWn爭取時間;
解決過程:
按照以往的經驗,數據庫慢,可能是某種操作導致一些等待事件,所以先做AWR報告,但是發現所有的快照都沒有,首先想到重啓
過數據庫,但是經詢問和查找數據庫運行時間並沒有,使用EM發現也不能正常使用,所以懷疑是SYSAUX表空間的問題,經查看
SYSAUX表空間的大小爲32G(默認不超過2G),使用率爲100%,alert文件中報不能擴展的問題(由於SYSAUX單個數據文件不能
超過32G限制,所以報這種問題),通select occupant_name, occupant_desc, schema_name, space_usage_kbytes / 1024
from v$sysaux_occupants order by 4 desc;查看到SM/OPTSTAT(統計信息收集信息)竟然使用了29G之多(應該是執行了全庫
的統計信息收集纔會這麼多),統計信息默認保留31天,快照保留7天,所以沒有快照的問題在這裏可以解釋了(6月初就有SYSAUX不
能擴展的問題),此時也看到了alert文件中有好多的checkpoint not complete,但是由於之前加了兩組日誌每組爲100M,所以沒有
往這方面想,受思維定式的影響,覺得是SYSAUX表空間佔滿,導致某個組件不能正常使用所致,將31個組件研究了一遍,並沒有發現
有什麼組件能導致這種問題,又從新思考回到了checkpoint not complete問題,粗略的計算了下,數據庫大約每分鐘有7次日誌切
換,一個日誌51M,那麼一天的日誌總量爲24*60*7*51/1024=502Gb的日誌量,查看了官方文檔,官方建議日誌的切換爲30分鐘
一次,所以加了3組500M的日誌組,經觀察alert中基本沒有checkpoint not complete提示,此問題基本解決,同時添加了一個
SYSAUX數據文件,解決了快照的問題;
解決過程中用到的語句:
--查看統計信息保存時間:
select dbms_stats.get_stats_history_retention from dual;
--修改統計信息保存時間:
execute dbms_stats.alter_stats_history_retention(15);
--查看統計信息能恢復到那個時間點:
select dbms_stats.get_stats_history_availability from dual;