麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

logmnr

2024-07-21 02:53:10
字體:
來源:轉載
供稿:網友

重做日志是記錄數據庫所有變更的日志, 只要數據經歷了變更,數據的變更前值 和變更后值均會保存在重做日志里。

當遇到由于閃回技術時間窗過小,數據泵沒有合適的泵出文件,介質恢復沒有合適的備份文件時,重做日志就成為了恢復的最后手段。重做日志挖掘也經常用來實現精確恢復。

v$logmnr_contents視圖

v$logmnr_contents視圖是logminer挖掘日志的接口,每當v$logmnr_contents被訪問一次,相關的重做日志就會被讀取一次。實際上日志挖掘是對v$logmnr_contents視圖的查詢。但是如果在沒有啟動日志挖掘會話之前,對v$logmnr_conten的讀取會報錯。

使用logminer                                                               

logminer的4個元素:源數據庫、挖掘數據庫、logminer字典、重做日志。

1、源數據:指提供需要被挖掘的重做日志的數據庫。

2、挖掘數據庫:只啟動挖掘會話的數據庫。挖掘數據庫與源數據庫可以不是同一個庫,但是其硬件平臺和字符集與源庫一致,挖掘數據庫的版本必須大于或者等于原庫版本。(源庫版本最低Oracle 8i)。

3、logminer字典:logminer字典是將重做記錄中的oracle內部對象翻譯為可讀信息的轉換字典。

4、提供需挖掘的重做日志由源庫產生,或者屬于同一個化身。

使用logminer的前提是開啟補充日志。最起碼應打開最小補充日志。

查看最小補充日志是否打開

SQL> select supplemental_log_data_min from v$database;SUPPLEME--------NO

打開最小補充日志

SQL> alter database add supplemental log data;Database altered.啟動最小補充日子的目的是使用logminer具備識別由update命令導致的行遷移,行移動的能力。不然,所有的非sys用戶的dml命令將無法通過logminer挖掘。當然也可以啟動其他級別的數據庫級補充日志,這樣會隱式啟動最小補充日志。

確定logminr字典的位置

logminer字典來源有三種:源庫日志字典、源庫在線日志、文本文件日志

1、日志字典:

日志字典是指調用dbms_logmnr_d.build存儲過程將logminer字典提取至源數據庫的重做日志里。

SQL> exec dbms_logmnr_d.build(options=>dbms_logmnr_d.store_in_redo_logs);PL/SQL PRocedure successfully completed.可以查看logminer字典被提取到重做日志的那里了。

SQL> select sequence#,name,dictionary_begin,dictionary_end from v$archived_log where dictionary_begin='YES' or dictionary_end='YES'; SEQUENCE#     NAME                                                                                          DIC DIC----------  --------------------------------------------------------------------------------11     /u01/oracle/product/Flash_recovery_area/ORCL/archivelog/2013_06_03/o1_mf_1_11_8tscfj0o_.arc    YES YES

結果表明,日志字典都包含在11號歸檔日志里面。

使用日志字典有兩個好處:

a、不要求挖掘庫與源庫為同一數據庫

b、ddl命名可以更新該字典。使用dll_dict_tracking常量啟動挖掘,能更新日志字典,使挖掘信息得到完全體現。

2、使用源庫在線字典

使用源庫在線數據庫字典,不用調用存儲過程,直接在啟動start_logmnr啟動挖掘會話時,通過options指定continous_mine。使用源庫在線日志字典,源庫和挖掘庫必須是同一個,而且ddl命令無法更新該字典。

3、文本文件字典

文本文件字典,是將字典載入一個文本文件中,需要為utl_file_dir指定一個初始化參數。

SQL> alter system set utl_file_dir='/u01/oracle/product/temp' scope=spfile;

utl_file_dir是靜態參數,需要重啟實例。然后用dbms_logmnr_d.build存儲過程的options指定store_in_flat_file常量。

exec dbms_logmnr_d.build(dictionary_filename=>'logminerorcl.ora',dictionary_location=>'/u01/oracle/product/temp',options=>dbms_logmnr_d.store_in_flat_file);

文本文件/u01/oracle/product/temp/logminerorcl.ora就可以作為logminer字典使用了。

注冊重做日志

手動注冊

SQL> exec dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/product/flash_recovery_area/ORCL/archivelog/2013_06_03/o1_mf_1_11_8tscfj0o_.arc',

    options=>dbms_logmnr.addfile)

在調用add_loggile之后,可以利用v$logmnr_logs查看已注冊的日志;

SQL> select low_scn,thread_id from v$logmnr_logs;自動注冊

自動注冊不用調用dbms_logmnr.add_logfile過程,而是通過dbms_logmnr.start_logmnr啟動挖掘會話的時候對options參數傳入 continuous_mine常量。但是要求:挖掘庫必須與源庫是同一個;啟動會話時,必須制定時間窗(或者SCN)搜索日志;控制文件內必須具有所需日志的記錄。

啟動挖掘會話

調用dbms_logmnr.start_logmnr啟動挖掘會話時,必須明白兩點:1、logminer字典如何提供;2、挖掘日志如何注冊。

情況1:源庫與挖掘庫相同,add_file手動注冊、在線字典

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

情況2:源庫=挖掘庫,在線字典,自動注冊日志

SQL> exec dbms_logmnr.start_logmnr(

                       starttime=>to_date('2013-06-05 22:30:00','yyyy-mm-dd hh24:mi:ss'),

                        endtime=>to_date('2013-06-05 23:30:00','yyyy-mm-dd hh24:mi:ss'),

                         options=>dbms_logmnr.dict_from_online_catalog+

                                         dbms_logmnr.continuous_mine);

情況3:日志字典、aff_file手動注冊日志

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_redo_logs);

情況4:日志字典、自動注冊日志

SQL> exec dbms_logmnr.start_logmnr(

                       starttime=>to_date('2013-06-05 22:30:00','yyyy-mm-dd hh24:mi:ss'),

                        endtime=>to_date('2013-06-05 23:30:00','yyyy-mm-dd hh24:mi:ss'),

                         options=>dbms_logmnr.dict_from_redo_logs+

                                         dbms_logmnr.continuous_mine);

啟動dbms_logmnr.start_logmnr時,options賦予的常量:

1、committed_data_only:表示在v$logmnr_contents視圖時,只返回已經提交了的變更的sql_redo和sql_undo

2、skip_corruption :能夠忽略在查詢v$logmnt_contents視圖時,遭遇到的日志損壞。因為每對該視圖的查詢,就會掃描日志。

3、ddl_dict_tarcking:能夠是logminer日志字典被ddl命令更新。

4、dict_from_online_catalog:聲明logminer字典來源于在線數據字典。此參數與dll_dict_tracking不兼容。

5、dict_from_redo_logs:聲明logminer字典來自日志字典。

6、no_sql_delimiter:能夠將sql_redo和sql_undo后面的分好‘;’ 去掉。

7、print_pretty_sql:簡單格式化sql_redo和sql_undo。

8、continuous_mine:說明挖掘日志支持自動注冊,不要求調用add_logfile手動注冊日志。

9、no_rowid_in_stmt:能夠將sql_redo和sql_undo的where子句中‘rowid=’條件去掉。

10、string_literals_in_stmt:指定sql_redo和sql_undo中的number,日期、時間格式類型按照字面值表示。

挖掘

在dbms_logmnr.start_logmnr成功調用之后,就可以對視圖v$logmnr_contents查詢了。

一把建議建一張與v$logmnr_contents相同的臨時表以存儲挖掘中想要的數據,以便避免對該視圖的多次查詢,畢竟,對該視圖的一次查詢,就會掃描注冊的日志。如果日記較多,是一個比較耗時的過程。

SQL>select rownum sql#,sql_redo,sql_undo from v$logmnr_contents where seg_omner='SCOTT' and seg_name='DEPT';

關閉會話 

exec dbms_logmnr.end_logmnr;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲自拍第二页 | 欧美一级精品 | 国产精品男女 | 三级xxxx| 91婷婷射| 一级精品 | 蜜桃av网 | 成人啪啪18免费网站 | 牛牛碰在线 | 92自拍视频 | 免费毛片随便看 | www.17c亚洲蜜桃 | 久久国产免费 | 亚洲白嫩在线观看 | 国产 一区| 青青青在线免费 | 91av爱爱 | 精品亚洲一 | 亚洲九色 | 亚洲99| 免费视频a| 在线一级片 | 久久第四色| 九九视屏 | 免费国产不卡午夜福在线 | 99精品视频免费看 | 午夜精品毛片 | 女人解衣喂奶电影 | 一级免费观看 | 国产成人精品一区在线播放 | 午夜亚洲视频 | 中文字幕亚洲一区二区三区 | 久久99精品久久久久久小说 | 国产精品中文在线 | 黄色一级电影网 | 久久精品亚洲欧美日韩精品中文字幕 | 成人在线视频在线观看 | 性高潮一级片 | 欧美激情精品久久久久久黑人 | 玩偶姐姐 在线观看 | 成人免费福利视频 |