LogMiner的安裝和使用
Oracle LogMiner安裝和使用
轉載自:http://blog.csdn.net/binbin8765/archive/2009/02/12/3883012.aspx
Oracle LogMiner 是Oracle公司從產品8i以後提供的一個實際非常有用的分析工具,使用該工具可以輕鬆獲得Oracle 重作日誌檔案(歸檔日誌檔案)中的具體內容,特別是,該工具可以分析出所有對於資料庫操作的DML(insert、update、delete等)語句,另外還可分析得到一些必要的回滾SQL語句。該工具特別適用於除錯、審計或者回退某個特定的事務。
總的說來,LogMiner工具的主要用途有:
1. 跟蹤資料庫的變化:可以離線的跟蹤資料庫的變化,而不會影響線上系統的效能。
2. 回退資料庫的變化:回退特定的變化資料,減少point-in-time recovery的執行。
3. 最佳化和擴容計劃:可透過分析日誌檔案中的資料以分析資料增長模式。
下面簡單介紹LogMiner的安裝及使用,我的環境是WIN2000+ORACLE10R2。
LogMiner安裝:
要安裝LogMiner工具,必須首先要執行下面這樣兩個指令碼,這兩個指令碼必須均以SYS使用者身份執行。其中第一個指令碼用來建立DBMS_LOGMNR包,該包用來分析日誌檔案。第二個指令碼用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。
1.$ORACLE_HOME/rdbms/admin/dbmslm.sql
2.$ORACLE_HOME/rdbms/admin/dbmslmd.sql.
SQL> conn as sysdba
已連線。
SQL> @$oracle_home/rdbms/admin/dbmslm.sql
SP2-0310: 無法開啟檔案 "$oracle_home/rdbms/admin/dbmslm.sql"
SQL> @d:\oracle\product\10.2.0\db_2\RDBMS\ADMIN\dbmslm.sql
程式包已建立。
授權成功。
SQL> @d:\oracle\product\10.2.0\db_2\RDBMS\ADMIN\dbmslmd.sql
程式包已建立。
使用LogMiner工具
1.建立資料字典檔案(data-dictionary)
資料字典檔案是一個文字檔案,使用包DBMS_LOGMNR_D來建立。如果我們要分析的資料庫中的表有變化,影響到庫的資料字典也發生變化,這時就需要重新建立該字典檔案。另外一種情況是在分析另外一個資料庫檔案的重作日誌時,也必須要重新生成一遍被分析資料庫的資料字典檔案。
在ORACLE8I的時候,首先在init.ora初始化引數檔案中,指定資料字典檔案的位置,也就是新增一個引數UTL_FILE_DIR,該引數值為伺服器中放置資料字典檔案的目錄。如:
UTL_FILE_DIR = (e:\Oracle\logs)
ORACLE9I後,推薦使用SPFILE啟動,可以動態調整引數;
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE\PRODUCT\10.2.0\DB_2\
DATABASE\SPFILESGTEST2.ORA
SQL> alter system set utl_file_dir='d:\oracle\logs' scope=spfile;
系統已更改。
SQL> startup force
ORACLE 例程已經啟動。
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 96469672 bytes
Database Buffers 188743680 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string d:\oracle\logs
然後建立資料字典檔案
SQL> @d:\dbms_logmnr_d.build.txt
PL/SQL 過程已成功完成。
指令碼dbms_logmnr_d.build.txt
BEGIN
dbms_logmnr_d.build(
dictionary_filename => 'logminer_dict.dat',
dictionary_location => 'd:\oracle\logs');
END;
/
2.建立要分析的日誌檔案列表
Oracle的重作日誌分為兩種,線上(online)和離線(offline)歸檔日誌檔案,我這裡主要分析歸檔日誌,線上日誌原理一樣。
A.建立列表
SQL> @d:\dbms_logmnr.add_logfile.txt
PL/SQL 過程已成功完成。
指令碼dbms_logmnr.add_logfile.txt
BEGIN
dbms_logmnr.add_logfile(
options => dbms_logmnr.new,
logfilename=> 'D:\oracle\product\10.2.0\flash_recovery_area\SGTEST2\ARCHIVELOG\2006_11_10\O1_MF_1_35_2O7JY3M1_.ARC');
END;
/
B.新增另外的日誌檔案到列表
SQL> @d:\dbms_logmnr.add_logfile2.txt
PL/SQL 過程已成功完成。
指令碼dbms_logmnr.add_logfile2.txt
BEGIN
dbms_logmnr.add_logfile(
options => dbms_logmnr.addfile,
logfilename => 'D:\oracle\product\10.2.0\flash_recovery_area\SGTEST2\ARCHIVELOG\2006_11_09\O1_MF_1_34_2O55BFH4_.ARC');
END;
/
注意Options=>dbms_logmnr.new(addfile、removefile)的三個引數,分別是新建、新增、刪除日誌。
3.使用LogMiner進行日誌分析
(1)無限制條件
BEGIN
dbms_logmnr.start_logmnr(
dictfilename => 'd:\oracle\logs\logminer_dict.dat');
END;
/
(2)有限制條件
透過對過程DBMS_ LOGMNR.START_LOGMNR中幾個不同引數的設定(引數含義見表1),可以縮小要分析日誌檔案的範圍。
引數 引數型別 預設值 含義
StartScn 數字型(Number) 0 分析重作日誌中SCN>=StartScn日誌檔案部分
EndScn 數字型(Number) 0 分析重作日誌中SCN<=EndScn日誌檔案部分
StartTime 日期型(Date) 1998-01-01 分析重作日誌中時間戳>=StartTime的日誌檔案部分
EndTime 日期型(Date) 2988-01-01 分析重作日誌中時間戳<=EndTime的日誌檔案部分
DictFileName 字元型(VARCHAR2) 字典檔案,該檔案包含一個資料庫目錄的快照。使用該檔案可以使得到的分析結果是可以理解的文字形式,而非系統內部的16進位制
Options BINARY_INTEGER 0 系統除錯引數,實際很少使用
例如我沒只需要分許2006年11月10日0點-2006年11月10日2點之間的日誌
BEGIN
dbms_logmnr.add_logfile(
options => dbms_logmnr.addfile,
logfilename=> 'D:\oracle\product\10.2.0\flash_recovery_area\SGTEST2\ARCHIVELOG\2006_11_09\O1_MF_1_34_2O55BFH4_.ARC');
END;
/
4.觀察分析結果(v$logmnr_contents)
到現在為止,我們已經分析得到了重作日誌檔案中的內容。動態效能檢視v$logmnr_contents包含LogMiner分析得到的所有的資訊。
SELECT sql_redo FROM v$logmnr_contents;
如果我們僅僅想知道某個使用者對於某張表的操作,可以透過下面的SQL查詢得到,該查詢可以得到使用者DB_ZGXT對錶SB_DJJL所作的一切工作。
SQL>; SELECT sql_redo FROM v$logmnr_contents WHERE username='DB_ZGXT' AND tablename='SB_DJJL';
需要強調一點的是,檢視v$logmnr_contents中的分析結果僅在我們執行過程'dbms_logmrn.start_logmnr'這個會話的生命期中存在。這是因為所有的LogMiner儲存都在PGA記憶體中,所有其他的程式是看不到它的,同時隨著程式的結束,分析結果也隨之消失。
最後,使用過程DBMS_LOGMNR.END_LOGMNR終止日誌分析事務,此時PGA記憶體區域被清除,分析結果也隨之不再存在。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-624669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 安裝和使用LogMiner工具
- 轉:LogMiner安裝和使用的一些心得
- logminer如何安裝配置使用
- 安裝oracle 的LogMinerOracle
- LogMiner 字典安裝
- Go的安裝和使用Go
- yarn的安裝和使用Yarn
- CMake的安裝和使用
- azkaban的安裝和使用
- FTP的安裝和使用FTP
- GitLab 的安裝和使用Gitlab
- Python的安裝和使用Python
- webpack的安裝和基本使用Web
- geoserver PostGIS的安裝和使用Server
- VMware Workstation 的安裝和使用
- Jetty的安裝、配置和使用Jetty
- oswatch的安裝和使用
- LOGMNR的安裝和使用
- tcping的安裝和使用TCP
- ElasticSearch的安裝和使用,Postman的安裝,Kibana的安裝,EShead外掛的安裝ElasticsearchPostman
- Elasticsearch 安裝和使用Elasticsearch
- hydra 安裝和使用
- ActiveMq安裝和使用MQ
- httprunner 安裝和使用HTTP
- docker安裝和使用Docker
- nginx 安裝和使用Nginx
- goaccess安裝和使用Go
- PyMongo安裝和使用Go
- Webmin 安裝和使用Web
- 使用Logminer工具分析DML和DDL操作
- oracle之logminer的使用Oracle
- Orbeon form 的安裝和使用教程ORBORM
- windows下Redis的安裝和使用WindowsRedis
- pyenv的安裝和簡單使用
- mongodb macos 下的安裝和使用MongoDBMac
- ubuntu下ndk的安裝和使用Ubuntu
- vim 中Ctags的安裝和使用
- tcpdump的本機安裝和使用TCP