使用Logminer來分析具體的DML操作日誌

發表於2009-09-28

在Oracle資料庫維護中,常常需要分析原來資料庫都做了哪些刪除、更新、增加資料的操作,所以一般需要用到Logminer這工具來分析歸檔日誌。
環境:AIX5.3+Oracle10.2.0.1 使用IBM的Tivoli Storage Manager把資料庫資料、歸檔日誌備份到帶庫中.

1、確定具體時間的DML操作,把相應的歸檔日誌從帶庫恢復到資料庫中

1)、遠端登陸或本地登陸資料庫伺服器系統:

進入rman的命令介面:

LHXXDBS01:oraoms> rman target/

RMAN>list backup; (把所有的備份都列出來)

如果只提取恢復歸檔日誌,用下面命令即可,然後記住那天歸檔日誌的sequence 號:

RMAN>list backupset of archivelog all; (把所有的歸檔日誌列出來)

或者:

1)在sqlplus用sys超級使用者登陸資料庫中,然後把當前的時間改成'yyyy-mm-dd hh24:mi:ss'格式,這樣可以看清楚歸檔日誌的起始時間:
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

2)v$log_history檢視的sequence#為歸檔日誌序列號,first_time為該歸檔日誌的開始時間。
SQL>select sequence#,first_time from v$log_history;
記下某天的歸檔日誌序列,比如為9700--971
2、選擇存放歸檔日誌的位置,然後執行命令:

RMAN>RUN

{

SET ARCHIVELOG DESTINATION TO '新位置';

RESTORE ARCHIVELOG SEQUENCE XXXX;

}

注:匯出多個歸檔日誌:

RUN
{
SET ARCHIVELOG DESTINATION TO '新位置';

RESTORE ARCHIVELOG SEQUENCE between XX and XX;
}
如:

RUN
{
SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
RESTORE ARCHIVELOG SEQUENCE between 9700 and 9712;
}

3、建立日誌分析列表,把第一個歸檔日誌放到分析列表

示例:

SQL> conn /as sysdba

已連線。
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_9700_644336885.dbf',options=>dbms_logmnr.new);

4、把第二個歸檔日誌放到分析列表(第二個歸檔日誌以後都是下面的格式)
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_9701_644336885.dbf',options=>dbms_logmnr.addfile);

5、啟動LogMiner
SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

6、把分析出來的資料放在logminer_test表中,這樣方便查詢。因為表v$logmnr_contents的資料量很大,選擇一個空閒的表空間
SQL>
create table logminer_test tablespace users
as
select * from v$logmnr_contents;

7、把分析日誌表logminer_test的查詢許可權賦予給read只讀的資料庫使用者,這樣使用第三方工具很方便查詢(plsql等):
SQL>grant select on logminer_test to read;

或者直接檢視日誌分析結果:

SQL> col username format a8

SQL> col sql_redo format a50

SQL> alter session set nls_date_format='yyyy-mm-dd

hh24:mi:ss';

會話已更改。

SQL> select username,timestamp,sql_redo from v$logmnr_contents where seg_name='COMM_MENU_INFO';

8、結束LogMiner

SQL> execute dbms_logmnr.end_logmnr;

PL/SQL 過程已成功完成。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24870090/viewspace-1027446/,如需轉載,請註明出處,否則將追究法律責任。

相關文章