oracle10g的rat模拟,Oracle 10g Logminer 研究及测试
LogMiner提供了一個處理重做日志文件并將其內容翻譯成代表對數據庫的邏輯操作的SQL語句的過程。LogMiner運行在Oracle版本8.1或者更高版本中。
一,如何使用Logminer:
先要安裝logminer的兩個包;以SYS用戶運行下面兩個腳本,其中第一個腳本dbmslm.sql用來創建DBMS_LOGMNR包,該包用來分析日志文件。第二個腳本dbmslmd.sql用來創建DBMS_LOGMNR_D包,該包用來創建數據字典文件。
D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on星期五4月10 17:49:02 2009
Copyright (c) 1982, 2007, Oracle.All Rights Reserved.
SQL> connsys/oracle as sysdba
已連接。
SQL>
SQL> @dbmslm.sql
程序包已創建。
授權成功。
SQL>
SQL> @dbmslmd.sql
程序包已創建。
二,創建數據字典文件
數據字典文件是一個文本文件,使用包DBMS_LOGMNR_D來創建,如果我們要分析的數據庫中的表有變化(比如表結構有變化等),影響到庫的數據字典也發生變化。另外一種情況是在分析另外一個數據庫文件的重做日志時,也必須要重新生成一遍被分析數據庫的數據字典文件。
首先需要修改參數UTL_FILE_DIR ,該參數值為服務器中放置數據字典文件的目錄,10g中我們通過動態修改參數的方式來修改,然后重新啟動數據庫生效。其中logs_utl_file目錄先期建立好。
SQL> alter system set UTL_FILE_DIR='d:\oracle\product\10.2.0\oradata\test\logs_utl_file'scope=spfile;系統已更改。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE例程已經關閉。
SQL>
SQL> startup
ORACLE例程已經啟動。
Total System Global Area167772160 bytes
Fixed Size1295608 bytes
Variable Size125831944 bytes
Database Buffers33554432 bytes
Redo Buffers7090176 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL>
SQL> show parameter UTL_FILE
NAMETYPE
------------------------------------ -------------
VALUE
------------------------------
utl_file_dirstring
d:\oracle\product\10.2.0\orada
ta\test\logs_utl_file
SQL>
然后創建數據字典文件:
BEGIN
dbms_logmnr_d.build(
dictionary_filename => ' logminer_dict.ora',
dictionary_location => ' D:\oracle\product\10.2.0\oradata\test\logs_utl_file');
END;
/
OK ,可以看到在logs_ult_file中已經生成了logminer_dict.ora數據字典文件。數據字典文件是可以打開的文本文件。有興趣可以打開看看。
創建數據字典是讓logminer引用實際到內部數據字典中的部分是使用對象的名稱,而不是系統內部的16進制的ID.
三,創建要分析的日志文件(在線日志或歸檔日志)的列表
(1)分析在線的重做日志
A。建立列表
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\test\redo01.log', ptions=>dbms_logmnr.new);
PL/SQL過程已成功完成。
B。添加其他日至文件到列表
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\test\redo02.log', ptions=>dbms_logmnr.addfile);
PL/SQL過程已成功完成。
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\test\redo03.log', ptions=>dbms_logmnr.addfile);
PL/SQL過程已成功完成。
(2)分析歸檔的重做日志
A。建立列表
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\archive\ARC00052_0684166863.001', ptions=>dbms_logmnr.new);
PL/SQL過程已成功完成。
B。添加其他日志文件到列表
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\archive\ARC00053_0684166863.001', ptions=>dbms_logmnr.addfile);
PL/SQL過程已成功完成。
如果你覺得不需要分析已經在列表中的在線或歸檔日志,可以通過removefile命令刪除:
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad
ata\archive\ARC00053_0684166863.001', ptions=>dbms_logmnr.removefile);
PL/SQL過程已成功完成。
四,使用Logminer進行日志分析
無限制條件:
SQL> execute dbms_logmnr.start_logmnr(DictFileName=> 'D:\oracle\product\10.2.0\o
radata\test\logs_utl_file\logminer_dict.ora') ;
PL/SQL過程已成功完成。
有限制條件:
通過對過程DBMS_LOGMNR.START_LOGMNR中的時間或者SCN參數的設置,可以縮小分析日志文件的范圍:
如我們僅僅分析2009年2月23日到2005年7月26日的日志:
SQL> execute dbms_logmnr.start_logmnr(
DictFileName => ' D:\oracle\product\10.2.0\o
radata\test\logs_utl_file\logminer_dict.ora ',
StartTime => to_date('2009-2-23 00:00:00','YYYY-MM-DD HH24:MI:SS')
EndTime => to_date(''2009-2-26 23:59:59','YYYY-MM-DD HH24:MI:SS '));
相關的參數如下:
參數參數類型默認值含義
StartScn數字型0分析重作日志中SCN≥StartScn日志文件部分
EndScn數字型0分析重作日志中SCN≤EndScn日志文件部分
StartTime日期型1998-01-01分析重作日志中時間戳≥StartTime的日志文件部分
EndTime日期型2988-01-01分析重作日志中時間戳≤EndTime的日志文件部分
DictFileName字符型字典文件該文件包含一個數據庫目錄的快照。
使用該文件可以使得到的分析結果是可以理解的文本形式,
而非系統內部的16進制
Options BINARY_INTEGER 0系統調試參數,實際很少使用
五,得到分析結果:
到現在為止,我們已經分析得到了重作日志文件中的內容。動態性能視圖v$logmnr_contents包含LogMiner分析得到的所有的信息。
SELECT sql_redo FROM v$logmnr_contents;
如果我們僅僅想知道某個用戶對于某張表的操作,可以通過下面的SQL查詢得到,該查詢可以得到用戶TONY對表R_WIP_TST所作的一切工作。
SQL>; SELECT sql_redo FROM v$logmnr_contents WHERE username='TONY' AND tablename='R_WIP_TST';
需要強調一點的是,視圖v$logmnr_contents中的分析結果僅在我們運行過程'dbms_logmrn.start_logmnr'這個會話的生命期中存在(如果執行了DBMS_LOGMNR.END_LOGMNR分析結果將消失)。這是因為所有的LogMiner存儲都在PGA內存中,所有其他的進程是看不到它的,同時隨著進程的結束,分析結果也隨之消失。
如果需要,可以通過removefile命令刪除日志分析文件。
SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\oradata\archive\ARC00052_0684166863.001', ptions=>dbms_logmnr.removefile);
六,使用DBMS_LOGMNR.END_LOGMNR結束日志分析過程,釋放內存。
最后,使用過程DBMS_LOGMNR.END_LOGMNR終止日志分析事務,此時PGA內存區域被清除,分析結果也隨之不再存在。
SQL> execute dbms_logmnr.end_logmnr;
總結
以上是生活随笔為你收集整理的oracle10g的rat模拟,Oracle 10g Logminer 研究及测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 参数到不进oracle,Oracle对于
- 下一篇: c语言第一次作业,C语言培训班第一次作业