使用LogMiner分析oracle的redo日誌和歸檔

來源:互聯網
上載者:User

標籤:logminer

  Oracle LogMiner 是Oracle公司從產品8i以後提供的一個實際非常有用的分析工具,使用該工具可以輕鬆獲得Oracle 線上/歸檔記錄檔中的具體內容,特別是該工具可以分析出所有對於資料庫操作的DML和DDL語句。該工具特別適用於調試、審計或者回退某個特定的事務。

  LogMiner分析工具實際上是由一組PL/SQL包和一些動態視圖(Oracle8i內建包的一部分)組成,它作為Oracle資料庫的一部分來發布是8i產品提供的一個完全免費的工具。但該工具和其他Oracle內建工具相比使用起來顯得有些複雜,主要原因是該工具沒有提供任何的圖形化使用者介面(GUI)。

1、安裝LogMiner

在使用LogMiner之前需要確認Oracle是否帶有進行LogMiner分析包,一般來說Windows作業系統Oracle10g以上都預設包含。如果不能確認,可以DBA身份登入系統,查看系統中是否存在運行LogMiner所需要的dbms_logmnr、dbms_logmnr_d包,如果沒有需要安裝LogMiner工具,必須首先要運行下面這樣兩個指令碼:

a.$ORACLE_HOME/rdbms/admin/dbmslm.sql

b.$ORACLE_HOME/rdbms/admin/dbmslmd.sql

這兩個指令碼必須均以DBA使用者身份運行。其中第一個指令碼用來建立DBMS_LOGMNR包,該包用來分析記錄檔。第二個指令碼用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。

2、修改資料庫參數

--資料庫版本[email protected]>select * from v$version;BANNER-----------------------------------------------------------CORE11.2.0.4.0ProductionTNS for Linux: Version 11.2.0.4.0 - ProductionNLSRTL Version 11.2.0.4.0 - Production--為資料庫添加最小附加日誌[email protected]>alter database add supplemental log data;Database altered.[email protected]>select supplemental_log_data_min from v$database;SUPPLEMENTAL_LOG_DATA_MI------------------------YES--設定utl_file_dir參數[email protected]>alter system set utl_file_dir=‘/home/oracle/logminer‘ scope=spfile;System altered.--重啟資料庫[email protected]>shutdown immediate[email protected]>startup[email protected]>show parameter utl_file_dirNAME     TYPE       VALUE------------------------------------ --------------------------------- ------------------------------utl_file_dir     string       /home/oracle/logminer

3、準備測試資料

[email protected]>conn zx/zxConnected.[email protected]>create table log_miner (id number,name varchar2(10));Table created.[email protected]>insert into log_miner values(1,‘zx‘);1 row created.[email protected]>insert into log_miner values(1,‘lx‘);1 row created.[email protected]>insert into log_miner values(1,‘xx‘);1 row created.[email protected]>commit;Commit complete.

4、建立資料字典

[email protected]>conn / as sysdbaConnected.[email protected]>desc dbms_logmnr_dPROCEDURE BUILD Argument NameTypeIn/Out Default? ------------------------------ ----------------------- ------ -------- DICTIONARY_FILENAMEVARCHAR2IN     DEFAULT DICTIONARY_LOCATIONVARCHAR2IN     DEFAULT OPTIONSNUMBERIN     DEFAULTPROCEDURE SET_TABLESPACE Argument NameTypeIn/Out Default? ------------------------------ ----------------------- ------ -------- NEW_TABLESPACE VARCHAR2IN[email protected]>exec dbms_logmnr_d.build(DICTIONARY_FILENAME=>‘dictionary.ora‘,DICTIONARY_LOCATION=>‘/home/oracle/logminer‘);LogMnr Dictionary Procedure startedLogMnr Dictionary File OpenedProcedure executed successfully - LogMnr Dictionary CreatedPL/SQL procedure successfully completed.[email protected]>!ls -l /home/oracle/logminer/dictionary.ora-rw-r--r-- 1 oracle oinstall 41483316 Nov 11 21:08 /home/oracle/logminer/dictionary.ora

LogMiner工具實際上是由兩個新的PL/SQL內建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四個V$動態效能檢視(視圖是在利用過程DBMS_LOGMNR.START_LOGMNR啟動LogMiner時建立)組成。在使用LogMiner工具分析redo log檔案之前,可以使用DBMS_LOGMNR_D 包將資料字典匯出為一個文字檔。該字典檔案是可選的,但是如果沒有它,LogMiner解釋出來的語句中關於資料字典中的部分(如表名、列名等)和數值都將是16進位的形式,我們是無法直接理解的。例如,下面的sql語句:

INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, ‘張三‘);

LogMiner解釋出來的結果將是下面這個樣子:

insert into Object#308(col#1, col#2) values (hextoraw(‘c30rte567e436‘), hextoraw(‘4a6f686e20446f65‘));

建立資料字典的目的就是讓LogMiner引用涉及到內部資料字典中的部分時為他們實際的名字,而不是系統內部的16進位。資料字典檔案是一個文字檔,使用包DBMS_LOGMNR_D來建立。如果我們要分析的資料庫中的表有變化,影響到庫的資料字典也發生變化,這時就需要重新建立該字典檔案。另外一種情況是在分析另外一個資料庫檔案的重作日誌時,也必須要重建一遍被分析資料庫的資料字典檔案。

5、確認當前處理聯機狀態的redo日誌

[email protected]>select group#,status from v$log;    GROUP# STATUS---------- ------------------------------------------------ 1 INACTIVE 2 CURRENT 3 INACTIVE[email protected]>select group#,member from v$logfile;    GROUP# MEMBER---------- ---------------------------------------------------------------------------------------------------- 3 /u02/app/oracle/oradata/orcl/redo03.log 2 /u02/app/oracle/oradata/orcl/redo02.log 1 /u02/app/oracle/oradata/orcl/redo01.log

可以看出redo02處於current狀態

6、加入需要分析的日誌

--第一個記錄檔使用dbms_logmnr.new[email protected]>exec dbms_logmnr.add_logfile(LOGFILENAME=>‘/u02/app/oracle/oradata/orcl/redo02.log‘,OPTIONS=>dbms_logmnr.new);PL/SQL procedure successfully completed.--如果需要加入其他的日誌使用如下語句exec dbms_logmnr.add_logfile(LOGFILENAME=>‘/u02/app/oracle/oradata/orcl/redo03.log‘,OPTIONS=>dbms_logmnr.addfile);

7、使用LogMiner進行分析

[email protected]>exec dbms_logmnr.start_logmnr(DICTFILENAME=>‘/home/oracle/logminer/dictionary.ora‘);PL/SQL procedure successfully completed.[email protected]>col seg_name for a15[email protected]>col seg_owner for a15[email protected]>col operation for a20[email protected]>col sql_redo for a180[email protected]>set linesize 200[email protected]>select seg_owner,seg_name,operation,sql_redo from v$logmnr_contents where seg_owner=‘ZX‘ and seg_name=‘LOG_MINER‘;SEG_OWNERSEG_NAMEOPERATION     SQL_REDO--------------- --------------- -------------------- --------------------------------------------------------------------------------ZXLOG_MINERDDL     create table log_miner (id number,name varchar2(10));ZXLOG_MINERINSERT     insert into "ZX"."LOG_MINER"("ID","NAME") values (‘1‘,‘zx‘);ZXLOG_MINERINSERT     insert into "ZX"."LOG_MINER"("ID","NAME") values (‘1‘,‘lx‘);ZXLOG_MINERINSERT     insert into "ZX"."LOG_MINER"("ID","NAME") values (‘1‘,‘xx‘);

以上為分析線上redo日誌的過程,分析歸檔日誌的步驟同樣,只是在添加記錄檔的時候把線上redo日誌換為歸檔日誌即可。歸檔日誌也可以傳輸到其他資料庫伺服器上進行資料分析,但分析時需要使用源庫的字典檔案。

LogMiner使用注意事項:

  1. 源庫與Mining資料庫必須運行在同樣的硬體平台上,windows的不可以傳到Linux上進行分析

  2. Mining資料庫的版本大於等於源庫的資料庫版本

  3. Mining資料庫的字元集需要與源庫一致或是源庫的超集

參考文檔:http://www.cnblogs.com/shishanyuan/p/3140440.html

官方文檔:http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1557

本文出自 “DBA Fighting!” 部落格,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1871934

使用LogMiner分析oracle的redo日誌和歸檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.