LOGMNR的安裝和使用
logmnr的安裝和使用
SQL> conn sys/sys as sysdba
已連線。
SQL> @C:\oracle\ora92\rdbms\admin\dbmslmd.sql
過程已建立。
沒有錯誤。
授權成功。
PL/SQL 過程已成功完成。
程式包已建立。
SQL> @C:\oracle\ora92\rdbms\admin\dbmslms.sql
程式包已建立。
沒有錯誤。
授權成功。
SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename=>'v816dict.ora',dictionary_location=>'e:\oracle\logs');
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo01.log',Options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo02.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo03.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'e:\oracle\logs\v816dict.ora');
PL/SQL procedure successfully completed.
SQL> select sql_REDO from v$logmnr_contents where upper(operation)='DELETE' and upper(sql_redo) like '%GPRS_SER%'
2 /
no rows selected
SQL> ed
Wrote file afiedt.buf
1* select sql_REDO from v$logmnr_contents where upper(operation)='CREATE' and upper(sql_redo) like '%EMP%'
SQL> /
no rows selected
--------------------------------------------------------------------------------------
LogMiner的主要用途
LogMiner工具的主要用途有:
(1)跟蹤資料庫的變化:可以離線的跟蹤資料庫的變化,而不會影響線上系統的效能。
(2)回退資料庫的變化:回退特定的變化資料,減少point-in-time recovery的執行。
(3)優化和擴容計劃:可通過分析日誌檔案中的資料以分析資料增長模式。
Oracle9i LogMiner的增強功能
(1)支援更多資料/儲存型別:連結/遷移行、CLUSTER表操作、DIRECT PATH插入以及DDL操作。
(2)提取和使用資料字典的選項:現在資料字典不僅可以提取到一個外部檔案中,還可以直接提取到重做日誌流中,它在日誌流中提供了操作當時的資料字典快照,這樣就可以實現離線
分析。
(3)允許對DML操作按事務進行分組:可以在START_LOGMNR()中設定COMMITTED_DATA_ONLY選項,實現對DML操作的分組,這樣將按SCN的順序返回已經提交的事務。
(4)支援SCHEMA的變化:在資料庫開啟的狀態下,如果使用了LogMiner的DDL_DICT_TRACKING選項,Oracle9i的LogMiner將自動對比最初的日誌流和當前系統的資料字典,並返回正確的
DDL語句,並且會自動偵察並標記當前資料字典和最初日誌流之間的差別,這樣即使最初日誌流中所涉及的表已經被更改或者根本已經不存在,LogMiner同樣會返回正確的DDL語句。
(5)在日誌中記錄更多列資訊的能力:例如對於UPDATE操作不僅會記錄被更新行的情況,還可以捕捉更多已發生的更新操作資訊。
(6)支援基於數值的查詢:Oracle9i LogMiner在支援原有基於後設資料(操作、物件等)查詢的基礎上,開始支援基於實際涉及到的資料的查詢。例如涉及一個工資表,現在可以很容易
地查出員工工資由1000變成2000的原始更新語句,而在之前只能選出所有的更新語句。
LogMiner的安裝
要安裝LogMiner工具,必須首先要以SYS使用者身份執行下面兩個指令碼檔案:
(l)$Oracle_HOME/rdbms/admin/dbmslmd.sql
用來建立DBMS_LOGMNR包,該包用來分析日誌檔案。
(2)$Oracle_HOME/rdbms/admin/dbmslms.sql
用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。
LogMiner工具的使用
(1)建立資料字典檔案(data-dictionary)
建立資料字典的目的就是讓LogMiner引用涉及到內部資料字典中的部分時為他們實際的名字,而不是系統內部的16進位制。資料字典檔案是一個文字檔案,使用包DBMS_LOGMNR_D
來建立。
首先在init.ora初始化引數檔案中,指定資料字典檔案的位置,也就是新增一個引數UTL_FILE_DIR,該引數值為伺服器中放置資料字典檔案的目錄。如:
UTL_FILE_DIR=e:\Oracle\logs;
重新啟動資料庫,使新加的引數生效,然後建立資料字典檔案:
CONNECT SYS
EXECUTE dbms_logmnr_d.build(dictionary_filename=>'v816dict.ora',dictionary_location=>'e:\oracle\logs');
(2)建立要分析的日誌檔案列表
Oracle的重作日誌分為兩種,線上(online)和離線(offline)歸檔日誌檔案,下面就分別來討論這兩種不同日誌檔案的列表建立。
①分析線上重作日誌檔案
● 建立列表
EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\sxf\redo01.log',Options=>dbms_logmnr.new);
● 新增其他日誌檔案到列表
EXECUTE dbms_logmnr.add_logfile(
LogFileName=>'e:\Oracle\oradata\sxf\redo02.log',
Options=>dbms_logmnr.addfile);
②分析離線日誌檔案
● 建立列表
EXECUTE dbms_logmnr.add_logfile(LogFileName=>'E:\Oracle\oradata\sxf\archive\ARCARC09108.001',Options=>dbms_logmnr.new);
● 新增另外的日誌檔案到列表
EXECUTE dbms_logmnr.add_logfile(
LogFileName=>'E:\Oracle\oradata\sxf\archive\ARCARC09109.001',Options=>dbms_logmnr.addfile);
(3)使用LogMiner進行日誌分析
①無限制條件
EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'e:\oracle\logs\v816dict.ora');
②有限制條件
通過對過程DBMS_ LOGMNR.START_LOGMNR中幾個不同引數的設定,可以縮小要分析日誌檔案的範圍。通過設定起始時間和終止時間引數可以限制只分析某一時間範圍的日誌。
(4)觀察分析結果(v$logmnr_contents)
動態效能檢視v$logmnr_contents包含LogMiner分析後得到的所有的資訊。
與日誌分析相關檢視還有:
①V$LOGMNR_DICTIONARY:查詢使用的資料字典檔案。
②V$LOGMNR_PARAMETERS:查詢當前LogMiner設定的引數。
③V$LOGMNR_FILES:查詢分析的日誌檔案。
④V$LOGMNR_CONTENTS:日誌檔案的內容。
3.其他注意事項
(1)LogMiner必須使用被分析資料庫例項產生的字典檔案,而不是安裝LogMiner的資料庫產生的字典檔案,另外必須保證安裝LogMiner資料庫的字符集和被分析資料庫的字符集相同。
(2)被分析資料庫平臺必須和當前LogMiner所在資料庫平臺一樣。
(3)LogMiner日誌分析工具僅能夠分析Oracle 8以後的產品。
附錄:
一、安裝LogMiner工具,以下兩個指令碼以SYSDBA身份執行
@$ORACLE_HOME\rdbms\admin\dbmslm.sql;
@ $ORACLE_HOME\rdbms\admin\dbmslmd.sql;
第一個指令碼用來建立DBMS_LOGMNR包,該包用來分析日誌檔案。
第二個指令碼用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。
二、使用LogMiner工具
下面將詳細介紹如何使用LogMiner工具。
1、建立資料字典檔案(data-dictionary)
1).首先在init.ora初始化引數檔案中,指定資料字典檔案的位置,也就是新增一個引數UTL_FILE_DIR,該引數值為伺服器中放置資料字典檔案的目錄。如:UTL_FILE_DIR =
($ORACLE_HOME\logs) ,重新啟動資料庫,使新加的引數生效:
2).然後建立資料字典檔案
SQL> connect /as sysdba
SQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => 'G:\oracle\logs');
PL/SQL procedure successfully completed
2、建立要分析的日誌檔案列表
1).建立分析列表,即所要分析的日誌
SQL> execute dbms_logmnr.add_logfile(LogFileName => 'G:\ORACLE\ORADATA\ORADBSP\REDO04.LOG',Options => dbms_logmnr.new);
PL/SQL procedure successfully completeds
2).新增分析日誌檔案,一次新增1個為宜
SQL> execute dbms_logmnr.add_logfile(LogFileName => 'G:\ORACLE\ORADATA\ORADBSP\REDO05.LOG',Options => dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed
3、使用logMiner進行日誌分析
1).無限制條件,即用資料字典檔案對要分析的日誌檔案所有內容做分析
SQL> execute dbms_logmnr.start_logmnr(DictFileName => 'G:\oracle\logs\dict.ora');
PL/SQL procedure successfully completed
2).帶限制條件,可以用scn號或時間做限制條件,也可組合使用
--分析日誌列表中時間從07.02.28從10:00到15:00的內容
SQL> execute dbms_logmnr.start_logmnr(startTime => to_date('20070228100000','yyyy-mm-dd hh24:mi:ss'),endTime => to_date('20070228150000','yyyy-mm-
ddhh24:mi:ss'),DictFileName => 'G:\oracle\logs\dict.ora');
PL/SQL procedure successfully completed
dbms_logmnr.start_logmnr函式的原型為:
PROCEDURE start_logmnr(
startScn IN NUMBER default 0 ,
endScn IN NUMBER default 0,
startTime IN DATE default '',
endTime IN DATE default '',
DictFileName IN VARCHAR2 default '',
Options IN BINARY_INTEGER default 0 );
4.分析後釋放記憶體
SQL> execute dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed
5.其它
1).刪除日誌分析檔案
exec dbms_logmnr.add_logfile('G:\ORACLE\ORADATA\ORADBSP\REDO04.LOG',dbms_logmnr.removefile);
三、檢視LogMiner工具分析結果
SQL> select * from dict t where t.table_name like '%LOGMNR%';--看所有與logmnr相關的檢視
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------------------------------------
GV$LOGMNR_CALLBACK Synonym for GV_$LOGMNR_CALLBACK
GV$LOGMNR_CONTENTS Synonym for GV_$LOGMNR_CONTENTS
GV$LOGMNR_DICTIONARY Synonym for GV_$LOGMNR_DICTIONARY
GV$LOGMNR_LOGFILE Synonym for GV_$LOGMNR_LOGFILE
GV$LOGMNR_LOGS Synonym for GV_$LOGMNR_LOGS
GV$LOGMNR_PARAMETERS Synonym for GV_$LOGMNR_PARAMETERS
GV$LOGMNR_PROCESS Synonym for GV_$LOGMNR_PROCESS
GV$LOGMNR_REGION Synonym for GV_$LOGMNR_REGION
GV$LOGMNR_SESSION Synonym for GV_$LOGMNR_SESSION
GV$LOGMNR_STATS Synonym for GV_$LOGMNR_STATS
GV$LOGMNR_TRANSACTION Synonym for GV_$LOGMNR_TRANSACTION
V$LOGMNR_CALLBACK Synonym for V_$LOGMNR_CALLBACK
V$LOGMNR_CONTENTS Synonym for V_$LOGMNR_CONTENTS
V$LOGMNR_DICTIONARY Synonym for V_$LOGMNR_DICTIONARY
V$LOGMNR_LOGFILE Synonym for V_$LOGMNR_LOGFILE
V$LOGMNR_LOGS Synonym for V_$LOGMNR_LOGS
V$LOGMNR_PARAMETERS Synonym for V_$LOGMNR_PARAMETERS
V$LOGMNR_PROCESS Synonym for V_$LOGMNR_PROCESS
V$LOGMNR_REGION Synonym for V_$LOGMNR_REGION
V$LOGMNR_SESSION Synonym for V_$LOGMNR_SESSION
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------------------------------------
V$LOGMNR_STATS Synonym for V_$LOGMNR_STATS
V$LOGMNR_TRANSACTION Synonym for V_$LOGMNR_TRANSACTION
GV$LOGMNR_LOGS 是分析日誌列表檢視
分析結果在GV$LOGMNR_CONTENTS 檢視中,可按以下語句查詢:
select scn,timestamp,log_id,seg_owner,seg_type,table_space,data_blk#,data_obj#,data_objd#,
session#,serial#,username,session_info,sql_redo,sql_undo
from logmnr3 t
where t.sql_redo like 'create%';
如果不能正常查詢GV$LOGMNR_CONTENTS檢視,並報以下錯誤,ORA-01306: 在從 v$logmnr_contents 中選擇之前必須呼叫 dbms_logmnr.start_logmnr() 。可採用如下方法:
create table logmnr3 as select * from GV$LOGMNR_CONTENTS;
FAQ:
1.建立資料字典的目 : 讓LogMiner引用涉及到內部資料字典中的部分時為他們實際的名字,而不是系統內部的16進位制。資料字典檔案是一個文字檔案,使用包DBMS_LOGMNR_D來建立。如
果我們要分析的資料庫中的表有變化,影響到庫的資料字典也發生變化,這時就需要重新建立該字典檔案。另外一種情況是在分析另外一個資料庫檔案的重作日誌時,也必須要重新生成
一遍被分析資料庫的資料字典檔案。 在使用LogMiner工具分析redo log檔案之前,可以使用DBMS_LOGMNR_D 包將資料字典匯出為一個文字檔案。該字典檔案是可選的,但是如果沒有它,
LogMiner解釋出來的語句中關於資料字典中的部分(如表名、列名等)和數值都將是16進位制的形式,我們是無法直接理解的。例如,下面的sql語句:
INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, '張三');
LogMiner解釋出來的結果將是下面這個樣子,
insert into Object#308(col#1, col#2) values (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65'));
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16978544/viewspace-703635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tcping的安裝和使用TCP
- FTP的安裝和使用FTP
- GitLab 的安裝和使用Gitlab
- yarn的安裝和使用Yarn
- Go的安裝和使用Go
- Python的安裝和使用Python
- CMake的安裝和使用
- azkaban的安裝和使用
- ElasticSearch的安裝和使用,Postman的安裝,Kibana的安裝,EShead外掛的安裝ElasticsearchPostman
- webpack的安裝和基本使用Web
- VMware Workstation 的安裝和使用
- StegSolve安裝和使用
- 安裝和使用 Composer
- docker安裝和使用Docker
- Elasticsearch 安裝和使用Elasticsearch
- httprunner 安裝和使用HTTP
- hydra 安裝和使用
- ActiveMq安裝和使用MQ
- nvm和npm的安裝與使用NPM
- linux下Anaconda的安裝和使用Linux
- Orbeon form 的安裝和使用教程ORBORM
- windows下Redis的安裝和使用WindowsRedis
- pyenv的安裝和簡單使用
- mongodb macos 下的安裝和使用MongoDBMac
- matomo的安裝使用和體驗
- Meilisearch 安裝和使用教程
- Flarum 安裝和使用教程
- Metabase 安裝和使用教程
- 如何安裝和使用DockerDocker
- SSDB安裝和使用初探
- Sass 的入門安裝和基本使用
- Express 腳手架的安裝和使用Express
- vue-canvas-nest的安裝和使用VueCanvas
- IDEA的使用(1):IDEA的安裝和破解Idea
- git安裝及配置教程 windows windows上git的安裝和使用GitWindows
- harbor私有映象安裝和使用
- react-devtools安裝和使用Reactdev
- 使用docker安裝mysql和redisDockerMySqlRedis
- kafka入門安裝和使用Kafka