真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

LogMiner的知識(shí)點(diǎn)有哪些

這篇文章主要講解了“Log Miner的知識(shí)點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Log Miner的知識(shí)點(diǎn)有哪些”吧!

成都創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都做手機(jī)網(wǎng)站等網(wǎng)站方面業(yè)務(wù)。

| Log Miner簡(jiǎn)介

Log Miner是Oracle自O(shè)racle 8i以后推出的一個(gè)可以分析數(shù)據(jù)庫(kù)redo log和archivelog內(nèi)容的工具,可以通過(guò)日志分析所有對(duì)數(shù)據(jù)庫(kù)的DDL和DML操作,也可以分析出操作的時(shí)間與操作時(shí)的SCN和進(jìn)行操作的機(jī)器,對(duì)于DML操作還可以查詢出還原操作的sql。

| Log Miner組成

  • 源數(shù)據(jù)庫(kù)產(chǎn)生LogMiner分析的所有重做日志文件的數(shù)據(jù)庫(kù)

  • 挖掘數(shù)據(jù)庫(kù)是執(zhí)行LogMiner分析時(shí)使用的數(shù)據(jù)庫(kù)。

  • LogMiner數(shù)據(jù)字典是LogMiner使用字典將內(nèi)部對(duì)象標(biāo)識(shí)符和數(shù)據(jù)類型轉(zhuǎn)換為可讀數(shù)據(jù)。如果沒(méi)有字典,Log Miner分析的結(jié)果會(huì)顯示為二進(jìn)制數(shù)據(jù)。

| Log Miner數(shù)據(jù)字典選項(xiàng)

當(dāng)LogMiner分析重做數(shù)據(jù)時(shí),需要一個(gè)數(shù)據(jù)字典將日志的對(duì)象ID轉(zhuǎn)換為可讀數(shù)據(jù)。LogMiner提供了三個(gè)使用數(shù)據(jù)字典的方式。

1、使用在線目錄( Online Catalog) 

使用catalog的數(shù)據(jù)字典,必須在源數(shù)據(jù)庫(kù)執(zhí)行。啟動(dòng)命令為:

SQL> execute dbms_logmnr.start_logmnr (options=>dbms_logmnr.dict_from_online_catalog);

2、將LogMiner字典提取到archive log。啟動(dòng)命令為:

SQL> execute dbms_logmnr_d.build(options=>dbms_logmnr_d.store_in_redo_logs);
使用這種操作的

3、將LogMiner字典提取到操作系統(tǒng)文件。啟動(dòng)命令為:

SQL> execute dbms_logmnr_d.build ('directory_name','/xxx/xxx/',dbms_logmnr_d.store_in_flat_file);
使用這種方式的話,需要設(shè)置utl_file_dir參數(shù),該參數(shù)需要重啟才能生效。

這個(gè)工具使用起來(lái)并不復(fù)雜。由于將Log Miner數(shù)據(jù)字典提取到操作系統(tǒng)文件在未設(shè)置參數(shù)的情況下需要重啟數(shù)據(jù)庫(kù),使用場(chǎng)景比較狹隘,所以以下測(cè)試場(chǎng)景為使用Online catalog數(shù)據(jù)字典模式和將字典提取到redo log。

| 測(cè)試場(chǎng)景

1、確認(rèn)數(shù)據(jù)庫(kù)開啟了補(bǔ)充日志

sys@RAC11G>select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEME
--------
YES
--如果返回結(jié)果為no,通過(guò)以下命令開啟
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

注意:在使用Log Miner分析的日志文件之前,必須啟用補(bǔ)充日志。 
啟用補(bǔ)充日志時(shí),會(huì)在重做日志流中記錄其他信息。如果不開啟,LogMiner的挖掘的一些信息無(wú)法正常顯示。

2、創(chuàng)建測(cè)試表,并做一些DML與DDL操作

sys@RAC11G> create table test1 (NAME varchar2(20), ID number);
Table created.
sys@RAC11G>insert into test1 values('x','1');
1 row created.
sys@RAC11G>insert into test1 values('xx','2');
1 row created.
sys@RAC11G>insert into test1 values('xxx','3');
1 row created.
sys@RAC11G>commit;
Commit complete.
sys@RAC11G>update test1 set name = 'xxxx' where id =3;
1 row updated.
sys@RAC11G>commit;
Commit complete.
sys@RAC11G>truncate table test1;
Table truncated.

3、切換歸檔日志

sys@RAC11G>alter system switch logfile;
System altered.
sys@RAC11G>alter system switch logfile;
System altered.
--然后查看最后生成的歸檔日志
sys@RAC11G>select * from (select name  from v$archived_log where name like '%archive%'  order by SEQUENCE# desc ) where rownum <3;
NAME
---------------------------------------------------------------------------------------------------------------------------------------
+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_293.847.989533723
+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_292.846.989533631

4、Log Miner添加需要分析的歸檔日志

--添加日志
sys@RAC11G> execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_293.847.989533723',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
--添加多個(gè)日志,使用DBMS_LOGMNR.ADDFILE選項(xiàng)
sys@RAC11G>execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_292.846.989533631',options=>DBMS_LOGMNR.ADDFILE);
PL/SQL procedure successfully completed.

5、啟動(dòng)Log Miner

sys@RAC11G>execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.

6、通過(guò)視圖v$logmnr_contents進(jìn)行分析結(jié)果查詢

v$logmnr_contents只有在開啟了Log Miner后才可以進(jìn)行查詢

select to_char(timestamp,'yyyy-mm-dd hh34:mm:ss'),
operation,
username,
SESSION_INFO,
sql_redo 
from v$logmnr_contents
where table_name = 'TEST1';
TO_CHAR(TIMESTAMP,' OPERATION                USERNAME        SESSION_INFO                                SQL_REDO
------------------- -------------------------------- --------------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------
2018-10-14 22:10:50 DDL                  SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS  create table test1 (NAME varchar2(20), ID number);
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V
                                 1-V3)
2018-10-14 22:10:29 INSERT               SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS insert into "SYS"."TEST1"("NAME","ID") values ('x','1');
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V
                                 1-V3)
2018-10-14 22:10:33 INSERT               SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS insert into "SYS"."TEST1"("NAME","ID") values ('xx','2');
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V
                                 1-V3)
2018-10-14 22:10:37 INSERT               SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS insert into "SYS"."TEST1"("NAME","ID") values ('xxx','3');
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V
                                 1-V3)
2018-10-14 22:10:51 UPDATE               SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS update "SYS"."TEST1" set "NAME" = 'xxxx' where "NAME" = 'xxx' and ROWID = '
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V AAAE6eAABAAAKHBAAC';
                                 1-V3)
2018-10-14 22:10:12 DDL                  SYS         login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS truncate table test1;
                                 _terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@11gnode1 (TNS V
                                 1-V3)
.

7、關(guān)閉Log Miner

EXECUTE DBMS_LOGMNR.END_LOGMNR();

注意:Log Miner的數(shù)據(jù)只存在PGA中,如果查詢的會(huì)話斷開連接,Log Miner也會(huì)隨之關(guān)閉。

8、將數(shù)據(jù)字典提取到redo log

sys@RAC11G>EXECUTE DBMS_LOGMNR_D.BUILD (OPTIONS => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
PL/SQL procedure successfully completed.
根據(jù)字典的大小,它可能包含在多個(gè)歸檔文件中。如果已歸檔相關(guān)的重做日志文件,則可以找出包含提取的字典的開頭和結(jié)尾的歸檔日志??梢圆樵僔$ARCHIVED_LOG視圖
sys@RAC11G>SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';
NAME
---------------------------------------------------------------------------------------------------------------------------------------
+DATADG/rac11g/archivelog/2018_10_15/thread_1_seq_308.869.989570647
sys@RAC11G>SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END='YES';
NAME
---------------------------------------------------------------------------------------------------------------------------------------
+DATADG/rac11g/archivelog/2018_10_15/thread_1_seq_309.871.989570649

9、添加包含數(shù)據(jù)字典的歸檔日志以及需要分析的歸檔日志

sys@RAC11G>execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_15/thread_1_seq_308.869.989570647',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
sys@RAC11G>execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_15/thread_1_seq_309.871.989570649',options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.
sys@RAC11G>execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_293.847.989533723',options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.
sys@RAC11G>execute dbms_logmnr.add_logfile(logfilename=>'+DATADG/rac11g/archivelog/2018_10_14/thread_1_seq_292.846.989533631',options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.

10、啟動(dòng)Log Miner

sys@RAC11G> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.DICT_FROM_REDO_LOGS);
PL/SQL procedure successfully completed.

11、通過(guò)視圖v$logmnr_contents進(jìn)行分析結(jié)果查詢

select to_char(timestamp,'yyyy-mm-dd hh34:mm:ss'),
operation,
username,
SESSION_INFO,
sql_redo 
from v$logmnr_contents
7    where table_name = 'TEST1';
TO_CHAR(TIMESTAMP,' OPERATION                USERNAME
------------------- -------------------------------- ------------------------------
SESSION_INFO
---------------------------------------------------------------------------------------------------------------------------------------
SQL_REDO
---------------------------------------------------------------------------------------------------------------------------------------
2018-10-14 22:10:50 DDL                  SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
create table test1 (NAME varchar2(20), ID number);
2018-10-14 22:10:29 INSERT               SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
insert into "SYS"."TEST1"("COL 1","COL 2") values (HEXTORAW('78'),HEXTORAW('c102'));
2018-10-14 22:10:33 INSERT               SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
insert into "SYS"."TEST1"("COL 1","COL 2") values (HEXTORAW('7878'),HEXTORAW('c103'));
2018-10-14 22:10:37 INSERT               SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
insert into "SYS"."TEST1"("COL 1","COL 2") values (HEXTORAW('787878'),HEXTORAW('c104'));
2018-10-14 22:10:51 UPDATE               SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
update "SYS"."TEST1" set "COL 1" = HEXTORAW('78787878') where "COL 1" = HEXTORAW('787878') and ROWID = 'AAAE6eAABAAAKHBAAC';
2018-10-14 22:10:12 DDL                  SYS
login_username=SYS client_info= OS_username=oracle Machine_name=11gnode1 OS_terminal=pts/5 OS_process_id=17273 OS_program_name=sqlplus@
11gnode1 (TNS V1-V3)
truncate table test1;

| Log Miner的一些限制

當(dāng)然,這個(gè)工具也有一定的限制

  • 源數(shù)據(jù)庫(kù)與挖掘數(shù)據(jù)庫(kù)

    • 源數(shù)據(jù)庫(kù)和挖掘數(shù)據(jù)庫(kù)都必須在同一操作系統(tǒng)平臺(tái)上運(yùn)行。

    • 挖掘數(shù)據(jù)庫(kù)可以與源數(shù)據(jù)庫(kù)相同或完全獨(dú)立。

    • 挖掘數(shù)據(jù)庫(kù)必須運(yùn)行與源數(shù)據(jù)庫(kù)相同的版本或更高版本的Oracle數(shù)據(jù)庫(kù)軟件。

    • 挖掘數(shù)據(jù)庫(kù)必須使用源數(shù)據(jù)庫(kù)使用的相同字符集(或字符集的超集)。

  • Log Miner 數(shù)據(jù)字典

    • 數(shù)據(jù)字典必須由源數(shù)據(jù)庫(kù)生成。

  • 歸檔日志

    • 每次分析的所有歸檔日志必須由相同的源數(shù)據(jù)生成。

    • 必須與同一數(shù)據(jù)庫(kù)關(guān)聯(lián)RESETLOGS SCN。

    • 必須來(lái)自8i或更高版本的Oracle數(shù)據(jù)庫(kù)。

這些限制都不算苛刻,如果靈活使用這個(gè)工具的話,可以使歸檔日志利用最大化,在關(guān)鍵時(shí)間有非常大的作用。

感謝各位的閱讀,以上就是“Log Miner的知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Log Miner的知識(shí)點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站欄目:LogMiner的知識(shí)點(diǎn)有哪些
分享地址:http://weahome.cn/article/podjeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部