oracle10g的rat模拟,Oracle 10g Logminer 研究及测试
LogMiner提供了一個(gè)處理重做日志文件并將其內(nèi)容翻譯成代表對(duì)數(shù)據(jù)庫的邏輯操作的SQL語句的過程。LogMiner運(yùn)行在Oracle版本8.1或者更高版本中。
一,如何使用Logminer:
先要安裝logminer的兩個(gè)包;以SYS用戶運(yùn)行下面兩個(gè)腳本,其中第一個(gè)腳本dbmslm.sql用來創(chuàng)建DBMS_LOGMNR包,該包用來分析日志文件。第二個(gè)腳本dbmslmd.sql用來創(chuàng)建DBMS_LOGMNR_D包,該包用來創(chuàng)建數(shù)據(jù)字典文件。
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
程序包已創(chuàng)建。
授權(quán)成功。
SQL>
SQL> @dbmslmd.sql
程序包已創(chuàng)建。
二,創(chuàng)建數(shù)據(jù)字典文件
數(shù)據(jù)字典文件是一個(gè)文本文件,使用包DBMS_LOGMNR_D來創(chuàng)建,如果我們要分析的數(shù)據(jù)庫中的表有變化(比如表結(jié)構(gòu)有變化等),影響到庫的數(shù)據(jù)字典也發(fā)生變化。另外一種情況是在分析另外一個(gè)數(shù)據(jù)庫文件的重做日志時(shí),也必須要重新生成一遍被分析數(shù)據(jù)庫的數(shù)據(jù)字典文件。
首先需要修改參數(shù)UTL_FILE_DIR ,該參數(shù)值為服務(wù)器中放置數(shù)據(jù)字典文件的目錄,10g中我們通過動(dòng)態(tài)修改參數(shù)的方式來修改,然后重新啟動(dòng)數(shù)據(jù)庫生效。其中l(wèi)ogs_utl_file目錄先期建立好。
SQL> alter system set UTL_FILE_DIR='d:\oracle\product\10.2.0\oradata\test\logs_utl_file'scope=spfile;系統(tǒng)已更改。
SQL> shutdown immediate
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE例程已經(jīng)關(guān)閉。
SQL>
SQL> startup
ORACLE例程已經(jīng)啟動(dòng)。
Total System Global Area167772160 bytes
Fixed Size1295608 bytes
Variable Size125831944 bytes
Database Buffers33554432 bytes
Redo Buffers7090176 bytes
數(shù)據(jù)庫裝載完畢。
數(shù)據(jù)庫已經(jīng)打開。
SQL>
SQL> show parameter UTL_FILE
NAMETYPE
------------------------------------ -------------
VALUE
------------------------------
utl_file_dirstring
d:\oracle\product\10.2.0\orada
ta\test\logs_utl_file
SQL>
然后創(chuàng)建數(shù)據(jù)字典文件:
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中已經(jīng)生成了logminer_dict.ora數(shù)據(jù)字典文件。數(shù)據(jù)字典文件是可以打開的文本文件。有興趣可以打開看看。
創(chuàng)建數(shù)據(jù)字典是讓logminer引用實(shí)際到內(nèi)部數(shù)據(jù)字典中的部分是使用對(duì)象的名稱,而不是系統(tǒng)內(nèi)部的16進(jìn)制的ID.
三,創(chuàng)建要分析的日志文件(在線日志或歸檔日志)的列表
(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過程已成功完成。
如果你覺得不需要分析已經(jīng)在列表中的在線或歸檔日志,可以通過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進(jìn)行日志分析
無限制條件:
SQL> execute dbms_logmnr.start_logmnr(DictFileName=> 'D:\oracle\product\10.2.0\o
radata\test\logs_utl_file\logminer_dict.ora') ;
PL/SQL過程已成功完成。
有限制條件:
通過對(duì)過程DBMS_LOGMNR.START_LOGMNR中的時(shí)間或者SCN參數(shù)的設(shè)置,可以縮小分析日志文件的范圍:
如我們僅僅分析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 '));
相關(guān)的參數(shù)如下:
參數(shù)參數(shù)類型默認(rèn)值含義
StartScn數(shù)字型0分析重作日志中SCN≥StartScn日志文件部分
EndScn數(shù)字型0分析重作日志中SCN≤EndScn日志文件部分
StartTime日期型1998-01-01分析重作日志中時(shí)間戳≥StartTime的日志文件部分
EndTime日期型2988-01-01分析重作日志中時(shí)間戳≤EndTime的日志文件部分
DictFileName字符型字典文件該文件包含一個(gè)數(shù)據(jù)庫目錄的快照。
使用該文件可以使得到的分析結(jié)果是可以理解的文本形式,
而非系統(tǒng)內(nèi)部的16進(jìn)制
Options BINARY_INTEGER 0系統(tǒng)調(diào)試參數(shù),實(shí)際很少使用
五,得到分析結(jié)果:
到現(xiàn)在為止,我們已經(jīng)分析得到了重作日志文件中的內(nèi)容。動(dòng)態(tài)性能視圖v$logmnr_contents包含LogMiner分析得到的所有的信息。
SELECT sql_redo FROM v$logmnr_contents;
如果我們僅僅想知道某個(gè)用戶對(duì)于某張表的操作,可以通過下面的SQL查詢得到,該查詢可以得到用戶TONY對(duì)表R_WIP_TST所作的一切工作。
SQL>; SELECT sql_redo FROM v$logmnr_contents WHERE username='TONY' AND tablename='R_WIP_TST';
需要強(qiáng)調(diào)一點(diǎn)的是,視圖v$logmnr_contents中的分析結(jié)果僅在我們運(yùn)行過程'dbms_logmrn.start_logmnr'這個(gè)會(huì)話的生命期中存在(如果執(zhí)行了DBMS_LOGMNR.END_LOGMNR分析結(jié)果將消失)。這是因?yàn)樗械腖ogMiner存儲(chǔ)都在PGA內(nèi)存中,所有其他的進(jìn)程是看不到它的,同時(shí)隨著進(jìn)程的結(jié)束,分析結(jié)果也隨之消失。
如果需要,可以通過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結(jié)束日志分析過程,釋放內(nèi)存。
最后,使用過程DBMS_LOGMNR.END_LOGMNR終止日志分析事務(wù),此時(shí)PGA內(nèi)存區(qū)域被清除,分析結(jié)果也隨之不再存在。
SQL> execute dbms_logmnr.end_logmnr;
總結(jié)
以上是生活随笔為你收集整理的oracle10g的rat模拟,Oracle 10g Logminer 研究及测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 参数到不进oracle,Oracle对于
- 下一篇: c语言第一次作业,C语言培训班第一次作业