oracle歸檔日誌增長過快處理方法
oracle歸檔日誌一般由dml語句產生,所以增加太快應該是dml太頻繁
首先查詢以下每天的歸檔產生的情況:
SELECT TRUNC(FIRST_TIME) "TIME",
SUM(BLOCK_SIZE * BLOCKS) / 1024 / 1024 / 1024 "SIZE(GB)"
FROM V$ARCHIVED_LOG
GROUP BY TRUNC(FIRST_TIME);
從而好判斷那個時間段開始歸檔比較異常
從以下兩種方式分析歸檔日誌的情況
方法一:使用logminer
1,使用指令碼建立相關的包
@$ORACLE_HOME/rdbms/admin/dbmslm.sql
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql;
第一個指令碼用來建立DBMS_LOGMNR包,該包用來分析日誌檔案。
第二個指令碼用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。
2.指定要分析的日誌檔案
exec sys.dbms_logmnr.add_logfile(logfilename => '/archivelog/node/1_771348_78836667000.arc',options => dbms_logmnr.new);
3.使用本地的線上資料字典分析歸檔日誌
exec sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);
4,查詢分析出來的歸檔日誌內容,例如統計最大修改量的Schema
select seg_owner,count(*) from v$logmnr_contents group by seg_owner;
select count(1),substr(sql_redo,1,30) from v$logmnr_contents group by substr(sql_redo,1,30) order by count(1) desc ;
5.增加別的日誌檔案
exec sys.dbms_logmnr.add_logfile(logfilename=>'/archivelog/node/1_773333_78836667000.arc');
exec sys.dbms_logmnr.add_logfile(logfilename=>'/archivelog/node1/1_773334_78836667000.arc');
6.結束分析歸檔日誌
exec sys.dbms_logmnr.end_logmnr;
方法二:使用toad工具檢視日誌資訊
在database 找到logminer 然後把要分析的日誌放進去,裡面有詳細的資料庫執行記錄,很直觀的看到產生歸檔的語句
查出來語句後,然後給開發一塊商量還是否可以降低一些dml語句的執行頻率