<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    beauty_beast

    上善若水 厚德載物

    Oracle logminer工具的使用

    Posted on 2006-02-14 11:40 柳隨風(fēng) 閱讀(614) 評(píng)論(0)  編輯  收藏 所屬分類: oracle日常管理
    關(guān)于logminer的使用,轉(zhuǎn)載一篇從oracle中國(guó)用戶討論組的文章,自己也方便查找

    一、logminer的用途

      日志文件中存放著所有進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)的數(shù)據(jù),記錄了針對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)的每一個(gè)變化,也就是對(duì)數(shù)據(jù)庫(kù)操作的所有DML語句。

      logminer 工具即可以用來分析在線,也可以用來分析離線日志文件,即可以分析本身自己數(shù)據(jù)庫(kù)的重作日志文件,也可以用來分析其他數(shù)據(jù)庫(kù)的重作日志文件。

      總的說來,logminer工具的主要用途有:

       1 跟蹤數(shù)據(jù)庫(kù)的變化:可以離線的跟蹤數(shù)據(jù)庫(kù)的變化,而不會(huì)影響在線系統(tǒng)的性能。

       2 回退數(shù)據(jù)庫(kù)的變化:回退特定的變化數(shù)據(jù),減少point-in-time recovery的執(zhí)行。

       3 優(yōu)化和擴(kuò)容計(jì)劃:可通過分析日志文件中的數(shù)據(jù)以分析數(shù)據(jù)增長(zhǎng)模式。

     

    二、安裝logminer

      要安裝logminer工具,必須首先要運(yùn)行下面這樣兩個(gè)腳本,

       l $ORACLE_HOME/rdbms/admin/dbmslm.sql

       2 $ORACLE_HOME/rdbms/admin/dbmslmd.sql

      這兩個(gè)腳本必須均以SYS用戶身份運(yùn)行。其中第一個(gè)腳本用來創(chuàng)建DBMS_LOGMNR包,該包用來分析日志文件。第二個(gè)腳本用來創(chuàng)建DBMS_LOGMNR_D包,該包用來創(chuàng)建數(shù)據(jù)字典文件。

     

    三、使用logminer工具

      下面將詳細(xì)介紹如何使用logminer工具。

      1、創(chuàng)建數(shù)據(jù)字典文件(data-dictionary

      前面已經(jīng)談到,logminer工具實(shí)際上是由兩個(gè)新的PL/SQL內(nèi)建包((DBMS_LOGMNR DBMS_ LOGMNR_D)和四個(gè)V$動(dòng)態(tài)性能視圖(視圖是在利用過程DBMS_LOGMNR.START_LOGMNR啟動(dòng)logminer時(shí)創(chuàng)建)組成。在使用logminer工具分析redo log文件之前,必須使用DBMS_LOGMNR_D 包將數(shù)據(jù)字典導(dǎo)出為一個(gè)文本文件。該字典文件是可選的,但是如果沒有它,logminer解釋出來的語句中關(guān)于數(shù)據(jù)字典中的部分(如表名、列名等)和數(shù)值都將是16進(jìn)制的形式,我們是無法直接理解的。例如,下面的sql語句: INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, '張三'); logminer解釋出來的結(jié)果將是下面這個(gè)樣子, insert into Object#308(col#1, col#2) values (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65'));

     

      創(chuàng)建數(shù)據(jù)字典的目的就是讓logminer引用涉及到內(nèi)部數(shù)據(jù)字典中的部分時(shí)為他們實(shí)際的名字,而不是系統(tǒng)內(nèi)部的16進(jìn)制。數(shù)據(jù)字典文件是一個(gè)文本文件,使用包DBMS_LOGMNR_D來創(chuàng)建。如果我們要分析的數(shù)據(jù)庫(kù)中的表有變化,影響到庫(kù)的數(shù)據(jù)字典也發(fā)生變化,這時(shí)就需要重新創(chuàng)建該字典文件。另外一種情況是在分析另外一個(gè)數(shù)據(jù)庫(kù)文件的重作日志時(shí),也必須要重新生成一遍被分析數(shù)據(jù)庫(kù)的數(shù)據(jù)字典文件。

     

      首先指定數(shù)據(jù)字典文件的位置,也就是添加一個(gè)參數(shù)UTL_FILE_DIR,該參數(shù)值為服務(wù)器中放置數(shù)據(jù)字典文件的目錄,這里我們假定目錄為:f\logminer,sys用戶登錄,運(yùn)行以下命令:

    alter system set UTL_FILE_DIR ='f:\logminer' scope=spfile;

    shutdown immediate  "關(guān)閉數(shù)據(jù)庫(kù)

    startup             "重新啟動(dòng)數(shù)據(jù)庫(kù),使新加的參數(shù)生效,然后創(chuàng)建數(shù)據(jù)字典文件:

     

    SQL> CONNECT SYS

    SQL> EXECUTE dbms_logmnr_d.build( 'dictionary.ora', 'f:\logminer');

     

     2、創(chuàng)建要分析的日志文件列表

      Oracle的重作日志分為兩種,在線(online)和離線(offline)歸檔日志文件,下面就分別來討論這兩種不同日志文件的列表創(chuàng)建。

      (1)分析在線重作日志文件

    A.     查詢?cè)诰€日志文件

    select * from v$log   //根據(jù)顯示結(jié)果可知當(dāng)前日志的組號(hào)為1

        GROUP#  SEQUENCE# ARCHIVED STATUS

    ---------- ---------- -------- ----------------

             1          7 NO       CURRENT

             2          3 YES      INACTIVE

             3          6 YES      INACTIVE

             4          4 YES      INACTIVE

             5          5 YES      INACTIVE

    select * from v$logfile  //根據(jù)組號(hào)可以找到對(duì)應(yīng)的日志文件為red0o1.log

         GROUP# STATUS  TYPE    MEMBER

    ---------- ------- ------- --------------------------------------------------------------------------------

             1         ONLINE  F:\ORACLE\ORADATA\SZGOV92\REDO01.LOG

             2         ONLINE  F:\ORACLE\ORADATA\SZGOV92\REDO02.LOG

             3         ONLINE  F:\ORACLE\ORADATA\SZGOV92\REDO03.LOG

             4         ONLINE  F:\ORACLE\ORADATA\SZGOV92\REDO04.LOG

             5         ONLINE  F:\ORACLE\ORADATA\SZGOV92\REDO05.LOG

    B. 創(chuàng)建列表

    SQL> EXECUTE dbms_logmnr.add_logfile(' F:\ORACLE\ORADATA\SZGOV92\REDO01.LOG ', dbms_logmnr.new);

     

    C. 添加其他日志文件到列表

    SQL> EXECUTE dbms_logmnr.add_logfile(' F:\ORACLE\ORADATA\SZGOV92\REDO02.LOG ', dbms_logmnr.addfile);

     

    D.刪除列表中的日志文件

    SQL> EXECUTE dbms_logmnr.add_logfile(' F:\ORACLE\ORADATA\SZGOV92\REDO02.LOG ', dbms_logmnr.remove);

     

     

    2)分析離線日志文件

      A.創(chuàng)建列表

    SQL> EXECUTE dbms_logmnr.add_logfile(

    ' e:\Oracle\oradata\szgov92\archive\ARCARC09108.001', dbms_logmnr.new);

     

      B.添加另外的日志文件到列表

    SQL> EXECUTE dbms_logmnr.add_logfile(

    ' e:\Oracle\oradata\szgov92\archive\ARCARC09109.001', dbms_logmnr.addfile);

     

      關(guān)于這個(gè)日志文件列表中需要分析日志文件的個(gè)數(shù)完全由你自己決定,但這里建議最好是每次只添加一個(gè)需要分析的日志文件,在對(duì)該文件分析完畢后,再添加另外的文件。

     

     

    3、使用logminer進(jìn)行日志分析

      (1)無限制條件

    SQL> EXECUTE dbms_logmnr.start_logmnr( DictFileName=>' f:\logminer\dictionary.ora ');

     

      (2)有限制條件

      通過對(duì)過程DBMS_ LOGMNR.START_LOGMNR中幾個(gè)不同參數(shù)的設(shè)置(參數(shù)含義見表1),可以縮小要分析日志文件的范圍。通過設(shè)置起始時(shí)間和終止時(shí)間參數(shù)我們可以限制只分析某一時(shí)間范圍的日志。如下面的例子,我們僅僅分析2004918的日志,:

    SQL> EXECUTE dbms_logmnr.start_logmnr(

    DictFileName => ' f:\logminer\dictionary.ora',

    StartTime => to_date('2006-02-13 00:00:00','YYYY-MM-DD HH24:MI:SS')

    EndTime => to_date(''2004-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));

     

      也可以通過設(shè)置起始SCN和截至SCN來限制要分析日志的范圍:

    SQL> EXECUTE dbms_logmnr.start_logmnr( DictFileName => ' f:\logminer\dictionary.ora',

    StartScn => 20, EndScn => 50);

     

      表1 DBMS_LOGMNR.START__LOGMNR過程參數(shù)含義

    參數(shù)

    參數(shù)類型

    默認(rèn)值

    含義

    StartScn

    數(shù)字型(Number

    0

    分析重作日志中SCNStartScn日志文件部分

    EndScn

    數(shù)字型(Number

    0

    分析重作日志中SCNEndScn日志文件部分

    StartTime 

     

    日期型(Date)

    1998-01-01

    分析重作日志中時(shí)間戳≥StartTime的日志文件部分

    EndTime

    日期型(Date)

    2988-01-01

    分析重作日志中時(shí)間戳≤EndTime的日志文件部分

    DictFileName

    字符型(VARCHAR2)

    0

    字典文件,該文件包含一個(gè)數(shù)據(jù)庫(kù)目錄的快照。使用該文件可以使得到的分析結(jié)果是可以理解的文本形式,

     

    4、觀察分析結(jié)果(v$logmnr_contents

       一共有四個(gè)表,詳細(xì)說明如下

    V$LOGMNR_DICTIONARY-------查詢使用的數(shù)據(jù)字典文件

    V$LOGMNR_PARAMETERS-------查詢當(dāng)前LogMiner設(shè)定的參數(shù)

    V$LOGMNR_LOGS-------查詢分析的日志文件

    V$LOGMNR_CONTENTS-------日志文件的內(nèi)容

     

    到現(xiàn)在為止,我們已經(jīng)分析得到了重作日志文件中的內(nèi)容。動(dòng)態(tài)性能視圖v$logmnr_contents包含logminer分析得到的所有的信息。

    SELECT scn,timestamp,sql_redo FROM  v$logmnr_contents;

     

      如果我們僅僅想知道某個(gè)用戶對(duì)于某張表的操作,可以通過下面的SQL查詢得到,該查詢可以得到用戶DB_ZGXT對(duì)表SB_DJJL所作的一切工作。

     

    SQL> SELECT sql_redo FROM v$logmnr_contents WHERE username='DB_ZGXT' AND seg_name='SB_DJJL';

     

      需要強(qiáng)調(diào)一點(diǎn)的是,視圖v$logmnr_contents中的分析結(jié)果僅在我們運(yùn)行過程'dbms_logmrn.start_logmnr'這個(gè)會(huì)話的生命期中存在。這是因?yàn)樗械?/SPAN>logminer存儲(chǔ)都在PGA內(nèi)存中,所有其他的進(jìn)程是看不到它的,同時(shí)隨著進(jìn)程的結(jié)束,分析結(jié)果也隨之消失。

     

      最后,使用過程DBMS_LOGMNR.END_LOGMNR終止日志分析事務(wù),此時(shí)PGA內(nèi)存區(qū)域被清除,分析結(jié)果也隨之不再存在。

               

      四、其他注意事項(xiàng)

     

      我們可以利用logminer日志分析工具來分析其他數(shù)據(jù)庫(kù)實(shí)例產(chǎn)生的重作日志文件,而不僅僅用來分析本身安裝logminer的數(shù)據(jù)庫(kù)實(shí)例的redo logs文件。使用logminer分析其他數(shù)據(jù)庫(kù)實(shí)例時(shí),有幾點(diǎn)需要注意:

     

      1. logminer必須使用被分析數(shù)據(jù)庫(kù)實(shí)例產(chǎn)生的字典文件,而不是安裝logminer的數(shù)據(jù)庫(kù)產(chǎn)生的字典文件,另外必須保證安裝logminer數(shù)據(jù)庫(kù)的字符集和被分析數(shù)據(jù)庫(kù)的字符集相同。

     

      2. 被分析數(shù)據(jù)庫(kù)平臺(tái)必須和當(dāng)前logminer所在數(shù)據(jù)庫(kù)平臺(tái)一樣,也就是說如果我們要分析的文件是由運(yùn)行在UNIX平臺(tái)上的Oracle 9i產(chǎn)生的,那么也必須在一個(gè)運(yùn)行在UNIX平臺(tái)上的Oracle實(shí)例上運(yùn)行logminer,而不能在其他如Microsoft NT上運(yùn)行logminer。當(dāng)然兩者的硬件條件不一定要求完全一樣。

     

      3. logminer日志分析工具僅能夠分析Oracle 8以后的產(chǎn)品,對(duì)于8以前的產(chǎn)品,該工具也無能為力。

     

      五、結(jié)語

      logminer對(duì)于數(shù)據(jù)庫(kù)管理員(DBA)來講是個(gè)功能非常強(qiáng)大的工具,也是在日常工作中經(jīng)常要用到的一個(gè)工具,借助于該工具,可以得到大量的關(guān)于數(shù)據(jù)庫(kù)活動(dòng)的信息。其中一個(gè)最重要的用途就是不用全部恢復(fù)數(shù)據(jù)庫(kù)就可以恢復(fù)數(shù)據(jù)庫(kù)的某個(gè)變化。另外,該工具還可用來監(jiān)視或者審計(jì)用戶的活動(dòng),如你可以利用logminer工具察看誰曾經(jīng)修改了那些數(shù)據(jù)以及這些數(shù)據(jù)在修改前的狀態(tài)。我們也可以借助于該工具分析任何Oracle 8及其以后版本產(chǎn)生的重作日志文件。另外該工具還有一個(gè)非常重要的特點(diǎn)就是可以分析其他數(shù)據(jù)庫(kù)的日志文件。總之,該工具對(duì)于數(shù)據(jù)庫(kù)管理員來講,是一個(gè)非常有效的工具,深刻理解及熟練掌握該工具,對(duì)于每一個(gè)數(shù)據(jù)庫(kù)管理員的實(shí)際工作是非常有幫助的。


    補(bǔ)充一下Oracle9i LogMiner的增強(qiáng)功能:

    1、支持更多數(shù)據(jù)/存儲(chǔ)類型:鏈接/遷移行、CLUSTER表操作、DIRECT PATH插入以及DDL操作。在V$LOGMNR_CONTENTS的SQL_REDO中可以看到DDL操作的原句(CREATE USER除外,其中的密碼將以加密的形式出現(xiàn),而不是原始密碼)。如果TX_AUDITING初始化參數(shù)設(shè)為TRUE,則所有操作的數(shù)據(jù)庫(kù)賬號(hào)將被記錄。

    2、提取和使用數(shù)據(jù)字典的選項(xiàng):現(xiàn)在數(shù)據(jù)字典不僅可以提取到一個(gè)外部文件中,還可以直接提取到重做日志流中,它在日志流中提供了操作當(dāng)時(shí)的數(shù)據(jù)字典快照,這樣就可以實(shí)現(xiàn)離線分析。

    3、允許對(duì)DML操作按事務(wù)進(jìn)行分組:可以在START_LOGMNR()中設(shè)置COMMITTED_DATA_ONLY選項(xiàng),實(shí)現(xiàn)對(duì)DML操作的分組,這樣將按SCN的順序返回已經(jīng)提交的事務(wù)。

    4、支持SCHEMA的變化:在數(shù)據(jù)庫(kù)打開的狀態(tài)下,如果使用了LogMiner的DDL_DICT_TRACKING選項(xiàng),Oracle9i的LogMiner將自動(dòng)對(duì)比最初的日志流和當(dāng)前系統(tǒng)的數(shù)據(jù)字典,并返回正確的DDL語句,并且會(huì)自動(dòng)偵察并標(biāo)記當(dāng)前數(shù)據(jù)字典和最初日志流之間的差別,這樣即使最初日志流中所涉及的表已經(jīng)被更改或者根本已經(jīng)不存在,LogMiner同樣會(huì)返回正確的DDL語句。

    5、在日志中記錄更多列信息的能力:例如對(duì)于UPDATE操作不僅會(huì)記錄被更新行的情況,還可以捕捉更多前影信息。

    6、支持基于數(shù)值的查詢:Oracle9i LogMiner在支持原有基于元數(shù)據(jù)(操作、對(duì)象等)查詢的基礎(chǔ)上,開始支持基于實(shí)際涉及到的數(shù)據(jù)的查詢。例如涉及一個(gè)工資表,現(xiàn)在我們可以很容易地查出員工工資由1000變成2000的原始更新語句,而在之前我們只能選出所有的更新語句。









    主站蜘蛛池模板: 一本色道久久88亚洲精品综合| 亚洲国产精品尤物yw在线| 亚洲AV无码成人精品区蜜桃| 亚洲av永久无码| 狠狠久久永久免费观看| 亚洲成在人线在线播放无码| 在线免费视频一区二区| 亚洲AV无码国产一区二区三区| 日韩a级毛片免费视频| 国产成人人综合亚洲欧美丁香花 | 99久久亚洲精品无码毛片| 久久精品成人免费网站| 青青草原精品国产亚洲av| 1000部禁片黄的免费看| 久久亚洲精品专区蓝色区| 午夜成年女人毛片免费观看| 午夜亚洲WWW湿好爽| 亚洲情a成黄在线观看| 中文在线免费观看| 日本久久久久亚洲中字幕| 亚洲免费网站在线观看| 亚洲一区二区三区在线观看网站| 毛片a级毛片免费播放下载| 国产成人亚洲精品播放器下载| 亚洲精品tv久久久久| 国产精品偷伦视频观看免费 | 亚洲成AV人片天堂网无码| 日本最新免费网站| 久久无码av亚洲精品色午夜 | 亚洲一区中文字幕在线电影网| 好吊妞在线新免费视频| 日日躁狠狠躁狠狠爱免费视频| 亚洲国产另类久久久精品| 毛片a级毛片免费播放100| 免费无码午夜福利片| 亚洲人成依人成综合网| 免费看www视频| 人人揉揉香蕉大免费不卡| 亚洲色大18成人网站WWW在线播放| 亚洲性久久久影院| 四虎精品视频在线永久免费观看|