<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    LogMiner的應用實例
    ?
    ??? 從安裝開始,了解一遍LogMiner的實際使用方法。有了這個,基本上LogMiner就沒什么難度了,照著一模一樣做一遍就學會了,呵呵。
    ?
    一、安裝LogMiner
    ?
    ??? 1、創建DBMS_LOGMNR包
    ??????? @D:\oracle\ora92\rdbms\admin\dbmslm.sql;
    ?
    ??????? --指定日志文件名
    ??????? --指定篩選標準
    ??????? --確定LodMiner會話特性
    ?
    ??? 2、創建DBMS_LOGMNR_D包
    ??????? @D:\oracle\ora92\rdbms\admin\dbmslmd.sql;
    ?
    ??????? --該包用來創建數據字典文件
    ??????? --查詢當前數據庫的字典表
    ?
    ?
    二、提取字典
    ?
    ??? 1、提取到平面文件
    ?
    ??? 必須在啟動文件中指定UTL_FILE_DIR參數,以放置字典文件的目錄
    ?
    ??? 執行 DBMS_LOGMNR_D.BUILD('dictionary.ora', 'D:/oracle/logminer', options => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE); 來創建平面文件
    ?
    ??? < 注:不加STORE_IN_FLAT_FILE也可,因為有地址的默認均是FLAT_FILE >
    ?
    ??? 2、提取到重做日志文件
    ?
    ??? DBMS_LOGMNR_D.BUILD(options => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
    ?
    ??? < 注:要提取到重做日志文件時,數據庫必須要運行在ARCHIVELOG模式下 >
    ?
    ?
    三、指定要分析的重做日志文件
    ?
    ??? 1、通過NEW來創建重做日志文件的列表
    ?
    ??????? DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => 'D:\oracle\oradata\kaka\redo01.log', options => DBMS_LOGMNR.NEW);
    ??????? --若再次NEW時,則前面的記錄全部丟棄
    ?
    ??? 2、通過ADDFILE來添加更多的重做日志文件
    ?
    ??????? DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => 'D:\oracle\oradata\kaka\redo02.log', options => DBMS_LOGMNR.ADDFILE);
    ?
    ??? 3、通過REMOVEFILE來刪除列表中的重做日志文件
    ?
    ??????? DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => 'D:\oracle\oradata\kaka\redo02.log', options => DBMS_LOGMNR.REMOVEFILE);
    ?
    ?
    四、啟動LogMiner
    ?
    ??? 使用DBMS_LOGMNR.START_LOGMNR()來啟動LogMiner
    ?
    ??? 1、指定數據字典
    ?
    ??????? DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => 'D:/oracle/logminer/dictionary.ora');
    ?
    ??????? 重做日志:DICT_FROM_REDO_LOGS
    ??????? 聯機字典:DICT_FROM_ONLINE_CATALOG
    ?
    ??? 2、可以指定時間篩選
    ?
    ??????? DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => 'D:/oracle/logminer/dictionary.ora', STARTTIME => TO_DATE('2008-12-15 08:30:00', 'YYYY-MM-DD HH24:MI:SS'), ENDTIME => TO_DATE('2008-12-15 17:30:00', 'YYYY-MM-DD HH24:MI:SS'));
    ?
    ??? 3、使用SCN判斷時間
    ?
    ??????? DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => 'D:/oracle/logminer/dictionary.ora', STARTSCN => 100, ENDSCN => 150);
    ?
    ??? 4、使用OPTIONS參數設置以下特性:
    ?
    ??????? ① COMMITTED_DATA_ONLY:只顯示已提交事務的行
    ??????????? 這個特性可以篩選出回滾事務以及進程中事務,但是若事務長時間運行,將引起“Out of Memory”錯誤
    ?
    ??????? ② SKIP_CORRUPTION:跳過重做日志損壞的地方
    ??????????? 對于每個受損壞的記錄,都會返回一行信息指出跳過多少塊,若第1個信息就損壞則中斷操作
    ?
    ??????? ③ DDL_DICT_TRACKING:使用平面/重做日志數據字典時保持更新
    ??????????? 確保了SQL_REDO和SQL_UNDO的正確性,但對于DICT_FROM_RESET_ONSELECT無效
    ?
    ??????? ④ NO_DICT_RESET_ONSELECT:在查詢V$LOGMNR_CONTENTS時避免重載數據字典
    ??????????? 這個指令與DDL_DICT_TRACKING正好相反,但是優先級大于DDL_DICT_TRACKING
    ?
    ??????? ⑤ DICT_FROM_ONLINE_CATALOG:采用數據庫當前使用的字典
    ??????????? 這個指令優先級小于DDL_DICT_TRACKING,若設置了那個則這個無效
    ?
    ??????? ⑥ DICT_FROM_REDO_LOGS:在重做日志文件列表中找到一個字典
    ??????????? 這個特性有利于分析某一特定時間內的數據
    ?
    ??????? 多個特性列表的舉例:
    ??????? DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DDL_DICT_TRACKING + DBMS_LOGMNR.NODICT_RESET_ONSELECT + ...);
    ?
    ?
    五、分析V$LOGMNR_CONTENTS的輸出
    ?
    ??? 使用SQL查詢V$LOGMNR_CONTENTS視圖,會從重做日志文件中依次獲得記錄返回,直到滿足啟動時指定的篩選標準,或重做日志結束。 除非使用了COMMITTED_DATA_ONLY,否則LogMiner將按SCN返回所有行。
    ?
    ??? 舉例說明SELECT V$LOGMNR_CONTENTS的性質:
    ?
    ??? 第一次查詢:SELECT SQL_REDO FROM V$LOGMNR_CONTENTS;
    ??? SQL_REDO
    ??? -----------------------------------------------------------------------------------------------
    ??? create table scott.t1(id int,name varchar2(30),mark varchar2(100));
    ??? insert into "SCOTT"."T1"("ID","NAME","MARK") vlues (10,'bob','aaaaa');
    ??? insert into "SCOTT"."T1"("ID","NAME","MARK") vlues (11,'tom','bbbbb');
    ??? commit;
    ??? alter table scott.t1 drop(mark);
    ??? insert into "SCOTT"."T1"("ID","NAME") vlues (12,'jac');
    ??? commit;
    ?
    ??? 此時在內部的數據字典中,由于執行了drop,內部字典已經沒有了mark列,若設置了NO_DICT_RESET_ONSELECT,則會出現以下情況:
    ?
    ??? 第二次查詢:SELECT SQL_REDO FROM V$LOGMNR_CONTENTS;
    ??? SQL_REDO
    ??? -----------------------------------------------------------------------------------------------
    ??? create table scott.t1(id int,name varchar2(30),mark varchar2(100));
    ??? insert into "SCOTT"."T1"("COL 1","COL 2","COL 3") vlues (HEXTORAW('78fes78r'),HEXTORAW('vtf43tf4'),HEXTORAW('32f4eff8'));
    ??? insert into "SCOTT"."T1"("COL 1","COL 2","COL 3") vlues (HEXTORAW('4gf3revw'),HEXTORAW('32frdsf3'),HEXTORAW('b432cer3'));
    ??? commit;
    ??? alter table scott.t1 drop(mark);
    ??? insert into "SCOTT"."T1"("ID","NAME") vlues (12,'jac');
    ??? commit;
    ?
    ??? 前面兩個insert語句因為字典中缺少了mark列,所以要使用COL 和 HEXTORAW
    ?
    ??? 所以:若需要多次查詢,則不可以設置NO_DICT_RESET_ONSELECT
    ?
    ?
    六、結束LogMiner
    ?
    ??? DBMS_LOGMNR.END_LOGMNR;
    ?
    ??? ① 當使用該語句時,將關閉所有日志文件,并釋放所有LogMiner分配的數據庫和系統資源。
    ?
    ??? ② 若沒有使用該語句,則會保持分配的資源直到啟動LogMiner的會話結束。
    ?
    ??? ③ 若使用了DDL_DICT_TRACKING或DICT_FROM_REDO_LOGS選項,則務必要使用該語句,否則會造成系統資源的浪費。
    ?
    ?
    ?
    posted on 2008-12-04 23:08 decode360 閱讀(137) 評論(0)  編輯  收藏 所屬分類: 10.DB_Tools
    主站蜘蛛池模板: 免费无码国产V片在线观看| 午夜电影免费观看| 亚洲AV无码一区二区三区国产| 中文字幕乱码一区二区免费| 黄色a三级三级三级免费看| 亚洲另类春色校园小说| 无码欧精品亚洲日韩一区| 免费a级毛片大学生免费观看| 特级做a爰片毛片免费看| 亚洲日本天堂在线| 亚洲综合久久夜AV | 成在人线av无码免费高潮喷水 | 新最免费影视大全在线播放| 亚洲中文字幕无码av永久| 亚洲一级毛片在线观| 亚洲视频一区在线播放| 亚洲AV区无码字幕中文色| 亚洲乱码中文字幕久久孕妇黑人| 久久99毛片免费观看不卡| 色偷偷女男人的天堂亚洲网 | 朝桐光亚洲专区在线中文字幕| 亚洲福利视频一区二区三区| 亚洲AV无码国产在丝袜线观看| 综合亚洲伊人午夜网| 亚洲中文字幕无码专区| 国产亚洲欧洲Aⅴ综合一区 | 国产精品免费看久久久香蕉| 一级做a爱过程免费视| 亚洲大片免费观看| 亚洲电影在线播放| 亚洲一级免费视频| 亚洲影视自拍揄拍愉拍| 亚洲色成人四虎在线观看| 亚洲人成欧美中文字幕| 亚洲av无码专区在线电影天堂| 亚洲成色在线影院| 久久狠狠高潮亚洲精品| 亚洲欧洲精品国产区| 亚洲免费福利在线视频| 亚洲国产成人AV在线播放| 看免费毛片天天看|