1. 程式人生 > >oracle歸檔日誌增長過快處理方法

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語句的執行頻率