程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle LogMiner分析工具的應用介紹

Oracle LogMiner分析工具的應用介紹

編輯:Oracle數據庫基礎

我們大家都知道Oracle LogMiner作為集成在Oracle8i和Oracle9i數據庫的產品的相關日志的分析工具,我們通過此工具可以清楚的分析重做相關日志與歸檔日志中的所有事務變化,並能准確地確定各種DML和DDL操作的具體時間和SCN值。

對重做日志和歸檔日志進行分析的目的是為了恢復由於執行了誤操作而丟失的數據。

使用LogMiner可實現:

①確定數據邏輯損壞的時間。例如,用戶執行了DROP TABLE和TRUNCATE TABLE命令等誤操作後,使用LogMiner可以准確定位執行這些誤操作的具體時間。注意:Oracle8i只能還原DML操作,不能還原DDL操作;Oracle9i可以還原DDL以及DML操作。

②跟蹤用戶執行的事務變化操作。使用Oracle LogMiner不僅可以跟蹤用戶所執行的各種DML操作和 DDL操作,而且還可以取得數據變化。

③跟蹤表的DML操作,使用LogMiner可以跟蹤在表上所發生的所有事務變化。

下面以Oracle8i(8.1.5)for Windows 2000/NT為例說明如何使用Oracle LogMiner對重做日志和歸檔日志進行分析。本文進行的所有操作均在該環境下驗證通過,文中使用的數據庫 名為phj,Oracle_sid為phj。

一、日志操作模式

Oracle數據庫 對日志的管理模式有兩種,即:非歸檔模式和歸檔模式。在建立或安裝Oracle數據庫 時,如果沒有指定日志操作模式,則默認為非歸檔模式(NOARCHIVELOG)。數據庫 建立之後,用戶可以根據需要修改數據庫 日志的操作模式。

1.非歸檔模式(NOARCHIVELOG)

非歸檔模式是指不保存重做日志的日志操作模式,這種日志操作模式只能用於保護實例失敗(如系統斷電),而不能用於保護介質失敗(數據庫 物理文件損壞)。

非歸檔模式的工作過程如下:假設數據庫 只有兩個日志組,且當前日志組為日志組一,日志序列號為1。當事務變化填滿日志組一時,系統會切換到日志組二,並且LGWR進程將事務變化寫入該日志組,日志序列號變為2;而當事務變化填滿日志組二時,系統又自動切換回日志組一,此時日志序列號變為3,並且日志序列號3所對應的事務變化會覆蓋日志序列號1所對應的事務變化,依此類推。

2.歸檔模式(ARCHIVELOG)

歸檔模式是指將重做日志內容保存到歸檔日志中的日志操作模式。在這種日志操作模式下,當進行日志切換時ARCH進程會將重做日志的內容復制到歸檔日志中。例如,假設數據庫 只包含兩個日志組,LGWR進程首先將事務變化寫入日志組一,此時日志序列號為1;

當事務變化填滿日志組一時,系統將自動切換到日志組二,並將事務變化寫入日志組二,此時日志序列號變為2,同時後台進程ARCn會將日志組一的內容保存到歸檔日志文件1中;

而當事務變化填滿日志組二時,系統自動切換回日志組一,並將事務變化寫入日志組一,此時日志序列號變為3,同時後台進程ARCn會將日志組二的內容保存到歸檔日志文件2中,依此類推。

3.改變日志的操作模式為自動歸檔模式

①修改數據庫 的參數文件,在參數文件後添加如下參數:

  1. log_archive_start = true 
  2. log_archive_dest_1 = "location=C:\Oracle\phj\archive" 
  3. log_archive_format = "T%TS%S.ARC" 

說明:第一個參數在重啟數據庫 時將自動啟動ARCH進程;第二個參數指出歸檔日志存放的位置;第三個參數說明歸檔日志的文件名格式,%T取重做線程號,%S取日志序列號;

②重啟並裝載數據庫

  1. sqlplus internal/Oracle@phj  
  2. shutdown immediate  
  3. startup mount pfile=%Oracle_Home%\database\initphj.ora  
  4. alter database archivelog  
  5. alter database open 

4.生成歸檔日志

下面以分析TMP表的DDL和DML操作為例,介紹使用Oracle LogMiner分析重做日志和歸檔日志的全過程。我們首先執行以下語句在表TMP上執行DDL以及DML操作,並生成歸檔日志:

  1. sqlplus internal/Oracle@phj  
  2. create table tmp(name varchar2(10),no number(3));  
  3. alter system switch logfile;  
  4. insert into tmp values(‘liming’,112);  
  5. update tmp set no=200;  
  6. commit;  
  7. alter system switch logfile;  
  8. delete from tmp;  
  9. alter system switch logfile; 

通過上面的操作會產生三個連續的歸檔日志文件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved