熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫LogMiner工具的使用方法

2013-11-13 22:09:01  來源: Oracle 

  Logminer(DBMS_LOGMNR和DBMS_LOGMNR_D)package可以用來分析Oracle的重做日志文件Logminer是oracle從i開始提供的工具

  我們可以使用logminer分析其它instance(版本可不一致)的重做日志文件但是必須遵循以下要求

  LogMiner日志分析工具僅能夠分析Oracle 以後的產品

  LogMiner必須使用被分析數據庫實例產生的字典文件且安裝LogMiner數據庫的字符集必須和被分析數據庫的字符集相同

  被分析數據庫平台必須和當前LogMiner所在數據庫平台一樣且block size相同

  使用logminer

  安裝logminer

  要安裝LogMiner工具必須首先要運行下面這樣兩個腳本          $ORACLE_HOME/rdbms/admin/dbmslmsql
        $ORACLE_HOME/rdbms/admin/dbmslmdsql

  這兩個腳本必須均以SYS用戶身份運行

  創建數據字典文件

  首先在initora初始化參數文件中添加參數UTL_FILE_DIR該參數值為服務器中放置數據字典文件的目錄          UTL_FILE_DIR = (D:\Oracle\logs)

  重新啟動數據庫使新加的參數生效然後創建數據字典文件          SQL> EXECUTE dbms_logmnr_dbuild(
        dictionary_filename => logmn_oradat
        dictionary_location => D:\Oracle\logs );

  創建數據字典是讓LogMiner引用涉及到內部數據字典中的部分時使用對象的名稱而不是系統內部的進制的ID如果我們要分析的數據庫中的表有變化影響到庫的數據字典也發生變化就需要重新創建該字典

  添加要分析的日志文件

  Logminer可以用來分析在線的重做日志文件和歸檔日志文件但是我們一般建議使用歸檔的日志文件

  a添加新的日志文件          SQL> EXECUTE dbms_logmnradd_logfile(
        LogFileName=> D:\database\oracle\oradata\ora\archive \ ARC Options=>dbms_logmnrnew);

  b添加另外的日志文件到列表          SQL> EXECUTE dbms_logmnradd_logfile(
        LogFileName=> D:\database\oracle\oradata\ora\archive \ ARC Options=>dbms_logmnraddfile);

  c 移去一個日志文件          SQL> EXECUTE dbms_logmnradd_logfile(
        LogFileName=> D:\database\oracle\oradata\ora\archive \ ARC Options=>dbms_logmnr REMOVEFILE);

  創建了要分析的日志文件就可以對其進行分析

   進行日志分析          SQL> EXECUTE dbms_logmnrstart_logmnr(
        DictFileName=> D:\Oracle\logs\ logmn_oradat );

  可以使用相應的限制條件

  時間范圍對dbms_logmnrstart_logmnr使用StartTime和EndTime參數

  SCN范圍對dbms_logmnrstart_logmnr使用StartScn和EndScn參數

  觀察結果

  主要是查詢v$logmnr_contents          SQL> desc v$logmnr_contents;

  名稱 空? 類型

           SCN NUMBER
        TIMESTAMP DATE
        THREAD# NUMBER
        LOG_ID NUMBER
        XIDUSN NUMBER
        XIDSLT NUMBER
        XIDSQN NUMBER
        RBASQN NUMBER
        RBABLK NUMBER
        RBABYTE NUMBER
        UBAFIL NUMBER
        UBABLK NUMBER
        UBAREC NUMBER
        UBASQN NUMBER
        ABS_FILE# NUMBER
        REL_FILE# NUMBER
        DATA_BLK# NUMBER
        DATA_OBJ# NUMBER
        DATA_OBJD# NUMBER
        SEG_OWNER VARCHAR()
        SEG_NAME VARCHAR()
        SEG_TYPE NUMBER
        SEG_TYPE_NAME VARCHAR()
        TABLE_SPACE VARCHAR()
        ROW_ID VARCHAR()
        SESSION# NUMBER
        SERIAL# NUMBER
        USERNAME VARCHAR()
        SESSION_INFO VARCHAR()
        ROLLBACK NUMBER
        OPERATION VARCHAR()
        SQL_REDO VARCHAR()
        SQL_UNDO VARCHAR()
        RS_ID VARCHAR()
        SSN NUMBER
        CSF NUMBER
        INFO VARCHAR()
        STATUS NUMBER
        PH_NAME VARCHAR()
        PH_REDO VARCHAR()
        PH_UNDO VARCHAR()
        PH_NAME VARCHAR()
        PH_REDO VARCHAR()
        PH_UNDO VARCHAR()
        PH_NAME VARCHAR()
        PH_REDO VARCHAR()
        PH_UNDO VARCHAR()
        PH_NAME VARCHAR()
        PH_REDO VARCHAR()
        PH_UNDO VARCHAR()
        PH_NAME VARCHAR()
        PH_REDO VARCHAR()
        PH_UNDO VARCHAR()

  通過字段sql_redo可以得到該日志文件中進行過的sql操作通過sql_undo可以得到撤銷的sql語句

  還可以用這樣的sql對日志文件中的所有的操作分類統計          select operationcount(*)from v$logmnr_contents group by operation;

  視圖v$logmnr_contents中的分析結果僅在我們運行過程dbms_logmrnstart_logmnr這個會話的生命期中存在這是因為所有的LogMiner存儲都在PGA內存中所有其他的會話是看不到它的同時隨著會話的結束而清除分析結果

  最後使用過程DBMS_LOGMNREND_LOGMNR終止日志分析事務PGA內存區域將被清除


From:http://tw.wingwit.com/Article/program/Oracle/201311/18334.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.