logminer的安裝配置使用
logminer的安裝配置使用
安裝
環境:linux AS5,oracle 11gR2
2.添加補充日志
如果數據庫需要使用logminer,就應該添加,只有添加這個日志之后的才能捕獲DML
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
3.開啟歸檔(對logminer來說不是必須)
alter system set log_Archive_dest_1='/opt/oracle/flash_recovery_area' scope=both;
shutdown immediate
startup mount
alter database archivelog;
alter database open;
創建DBMS_LOGMNR包
SQL>@?/rdbms/admin/dbmslm.sql
創建相關數據字典
SQL>@?/rdbms/admin/dbmslmd.sql
修改初始化參數UTL_FILE_DIR,指定分析數據的存放處
SQL>alter system set UTL_FILE_DIR='/opt/oracle/oradata/logminer' scope=spfile;
重啟數據庫
SQL>shutdown immediate
SQL>startup
SQL> show parameter utl;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string /opt/oracle/oradata/logminer
生成字典信息文件:
SQL> execute dbms_logmnr_d.build(dictionary_filename=>'/opt/oracle/oradata/logminer/sqltrace.ora',dictionary_location=>'/opt/oracle/oradata/logminer');
PL/SQL 過程已成功完成。
查當前日志組
SQL>select Group#, Status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 INACTIVE
SQL>select Group#, MEMBER from v$logfile;
GROUP# MEMBER
---------- ----------------------------------------
3 /opt/oracle/oradata/orcl/redo03.log
2 /opt/oracle/oradata/orcl/redo02.log
1 /opt/oracle/oradata/orcl/redo01.log
添加需要分析的日志文件(在線日志)
SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/orcl/redo02.log');
#歸檔日志
execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/logminer/1_6356_704818301.dbf');
PL/SQL 過程已成功完成。
SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.addfile,logfilename=>'opt/oracle/oradata/orcl/redo03.log');
PL/SQL 過程已成功完成。
options選項有三個參數可選:
NEW - 表示創建一個新的日志文件列表
ADDFILE - 表示向這個列表中添加日志文件
REMOVEFILE - 和addfile相反。
開始分析
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/opt/oracle/oradata/logminer/sqltrace.ora');
#設置 STARTTIME / ENDTIME
#也可以設置不用數據字典,只是看不到解釋過來,沒有意義了。
begin
dbms_logmnr.start_logmnr(starttime => to_date('2012/09/29-08:55:00','yyyy/mm/dd-hh24:mi:ss'),
endtime => to_date('2012/09/29-15:30:00','yyyy/mm/dd-hh24:mi:ss')
);
PL/SQL 過程已成功完成。
dbms_logmnr.start_logmnr()過程還有其它幾個用于定義分析日志時間/SCN窗口的參數,它們分別是:
STARTSCN / ENDSCN - 定義分析的起始/結束SCN號,
STARTTIME / ENDTIME - 定義分析的起始/結束時間。
查詢分析的日志文件包含的scn范圍和日期范圍。
SQL> select low_time,high_time,low_scn,next_scn from v$logmnr_logs;
LOW_TIME HIGH_TIME LOW_SCN NEXT_SCN
-------------- -------------- ---------- ----------
08-8月 -07 08-8月 -07 626540 637998
08-8月 -07 01-1月 -88 637998 2.8147E+14
SQL> create table ELLINGTON.log_content NOLOGGING Tablespace Users as select timestamp,sql_redo,sql_undo,USERNAME,OS_USERNAME,MACHINE_NAME from v$logmnr_contents;
將內容復制到一張表中查詢并指定存儲表空間,desc v$logmnr_contents
結束分析
SQL> execute dbms_logmnr.end_logmnr;
結束后視圖v$logmnr_contents中的分析結果也不再存在,關閉sqlplus自動結束。
注意:1. LogMiner必須使用被分析數據庫實例產生的字典文件,而不是安裝LogMiner的數據庫產生的字典文件,另外必須保證安裝LogMiner數據庫的字符集和被分析數據庫的字符集相同。
2. 被分析數據庫平臺必須和當前LogMiner所在數據庫平臺一樣,也就是說如果我們要分析的文件是由運行在UNIX平臺上的Oracle 8i產生的,那么也必須在一個運行在UNIX平臺上的Oracle實例上運行LogMiner,而不能在其他如Microsoft NT上運行LogMiner。當然兩者的硬件條件不一定要求完全一樣。
3. 生產庫的歸檔日志拿到測試機上來分析,雖然可以分析,但是由于db_id不同,不能使用數據字典,也就看不到翻譯過的語句(16進制的東西)
安裝
環境:linux AS5,oracle 11gR2
2.添加補充日志
如果數據庫需要使用logminer,就應該添加,只有添加這個日志之后的才能捕獲DML
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
3.開啟歸檔(對logminer來說不是必須)
alter system set log_Archive_dest_1='/opt/oracle/flash_recovery_area' scope=both;
shutdown immediate
startup mount
alter database archivelog;
alter database open;
創建DBMS_LOGMNR包
SQL>@?/rdbms/admin/dbmslm.sql
創建相關數據字典
SQL>@?/rdbms/admin/dbmslmd.sql
修改初始化參數UTL_FILE_DIR,指定分析數據的存放處
SQL>alter system set UTL_FILE_DIR='/opt/oracle/oradata/logminer' scope=spfile;
重啟數據庫
SQL>shutdown immediate
SQL>startup
SQL> show parameter utl;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string /opt/oracle/oradata/logminer
生成字典信息文件:
SQL> execute dbms_logmnr_d.build(dictionary_filename=>'/opt/oracle/oradata/logminer/sqltrace.ora',dictionary_location=>'/opt/oracle/oradata/logminer');
PL/SQL 過程已成功完成。
查當前日志組
SQL>select Group#, Status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 INACTIVE
SQL>select Group#, MEMBER from v$logfile;
GROUP# MEMBER
---------- ----------------------------------------
3 /opt/oracle/oradata/orcl/redo03.log
2 /opt/oracle/oradata/orcl/redo02.log
1 /opt/oracle/oradata/orcl/redo01.log
添加需要分析的日志文件(在線日志)
SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/orcl/redo02.log');
#歸檔日志
execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/logminer/1_6356_704818301.dbf');
PL/SQL 過程已成功完成。
SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.addfile,logfilename=>'opt/oracle/oradata/orcl/redo03.log');
PL/SQL 過程已成功完成。
options選項有三個參數可選:
NEW - 表示創建一個新的日志文件列表
ADDFILE - 表示向這個列表中添加日志文件
REMOVEFILE - 和addfile相反。
開始分析
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/opt/oracle/oradata/logminer/sqltrace.ora');
#設置 STARTTIME / ENDTIME
SQL>execute dbms_logmnr.start_logmnr(dictfilename=>'/u01/app/oracle/logminer/sqltrace.ora',starttime => to_date('2012/11/01-08:00:00','yyyy/mm/dd-hh24:mi:ss'),endtime => to_date('2012/11/02-12:30:00','yyyy/mm/dd-hh24:mi:ss'));
#也可以設置不用數據字典,只是看不到解釋過來,沒有意義了。
begin
dbms_logmnr.start_logmnr(starttime => to_date('2012/09/29-08:55:00','yyyy/mm/dd-hh24:mi:ss'),
endtime => to_date('2012/09/29-15:30:00','yyyy/mm/dd-hh24:mi:ss')
);
PL/SQL 過程已成功完成。
dbms_logmnr.start_logmnr()過程還有其它幾個用于定義分析日志時間/SCN窗口的參數,它們分別是:
STARTSCN / ENDSCN - 定義分析的起始/結束SCN號,
STARTTIME / ENDTIME - 定義分析的起始/結束時間。
查詢分析的日志文件包含的scn范圍和日期范圍。
SQL> select low_time,high_time,low_scn,next_scn from v$logmnr_logs;
LOW_TIME HIGH_TIME LOW_SCN NEXT_SCN
-------------- -------------- ---------- ----------
08-8月 -07 08-8月 -07 626540 637998
08-8月 -07 01-1月 -88 637998 2.8147E+14
SQL> create table ELLINGTON.log_content NOLOGGING Tablespace Users as select timestamp,sql_redo,sql_undo,USERNAME,OS_USERNAME,MACHINE_NAME from v$logmnr_contents;
將內容復制到一張表中查詢并指定存儲表空間,desc v$logmnr_contents
結束分析
SQL> execute dbms_logmnr.end_logmnr;
結束后視圖v$logmnr_contents中的分析結果也不再存在,關閉sqlplus自動結束。
注意:1. LogMiner必須使用被分析數據庫實例產生的字典文件,而不是安裝LogMiner的數據庫產生的字典文件,另外必須保證安裝LogMiner數據庫的字符集和被分析數據庫的字符集相同。
2. 被分析數據庫平臺必須和當前LogMiner所在數據庫平臺一樣,也就是說如果我們要分析的文件是由運行在UNIX平臺上的Oracle 8i產生的,那么也必須在一個運行在UNIX平臺上的Oracle實例上運行LogMiner,而不能在其他如Microsoft NT上運行LogMiner。當然兩者的硬件條件不一定要求完全一樣。
3. 生產庫的歸檔日志拿到測試機上來分析,雖然可以分析,但是由于db_id不同,不能使用數據字典,也就看不到翻譯過的語句(16進制的東西)
posted on 2012-10-25 20:12 gdufo 閱讀(654) 評論(0) 編輯 收藏 所屬分類: Database (oracle, sqlser,MYSQL)