1. 程式人生 > >Oracle日誌檔案管理與檢視

Oracle日誌檔案管理與檢視

1.查詢系統使用的是哪一組日誌檔案:

  select * from v$log;

  2.查詢正在使用的組所對應的日誌檔案:

  select * from v$logfile;

  3.強制日誌切換:

  alter system switch logfile;

  4.查詢歷史日誌:

  select * from v$log_history;

  5.查詢日誌的歸檔模式:

  select dbid,name,created,log_mode from v$database;

  6.查詢歸檔日誌的資訊:

  select recid,stamp,thread#,sequence#,name from v$archived_log;

  7.增加與刪除日誌檔案組

  alter database add logfile group 1 ('/home1/oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log') size 100M;

  alter database drop logfile group 1;

  8.增加與刪除日誌成員

  alter database add logfile member '/home1/oracle/oradata/ora8i/log1a.log' to group 1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;

  alter database drop logfile member '/home1/oracle/oradata/ora8i/log1a.log' ;

  9.日誌檔案移動

  alter database rename file '/home1/oracle/oradata/ora8i/log1a.log' to '/home2/oracle/oradata/ora8i/log1a.log';

  執行該命令之前必須保證該日誌檔案物理上已經移動到新目錄

  10.清除日誌檔案

  alter database clear logfile '/home1/oracle/oradata/ora8i/log1a.log';

  該命令用於不能用刪除組及組成員命令刪除日誌時使用

======================================================

Oracle日誌檢視

一.Oracle日誌的路徑:

登入:sqlplus "/as sysdba"

檢視路徑:SQL> select * from v$logfile;

SQL> select * from v$logfile;(#日誌檔案路徑)

二.Oracle日誌檔案包含哪些內容:(日誌的數量可能略有不同)

control01.ctl example01.dbf redo02.log   sysaux01.dbf undotbs01.dbf

control02.ctl redo03.log   system01.dbf users01.dbf

control03.ctl redo01.log     SHTTEST.dbf temp01.dbf

三.Oracle日誌的檢視方法:

SQL>select * from v$sql   (#檢視最近所作的操作)

SQL>select * fromv $sqlarea(#檢視最近所作的操作)

Oracle 資料庫的所有更改都記錄在日誌中,從目前來看,分析Oracle日誌的唯一方法就是使用Oracle公司提供的LogMiner來進行,因為原始的日誌資訊我們根本無法看懂,Oracle8i後續版本中自帶了LogMiner,而LogMiner就是讓我們看懂日誌資訊的工具,通過這個工具可以:查明資料庫的邏輯更改,偵察並更正使用者的誤操作,執行事後審計,執行變化分析。 

四.LogMiner的使用:

1、建立資料字典檔案(data-dictionary)

1).首先在init.ora初始化引數檔案中,新增一個引數UTL_FILE_DIR,該引數值為伺服器中放置資料字典檔案的目錄。如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新啟動資料庫,使新加的引數生效:

SQL> shutdown;

SQL>startup;

2).然後建立資料字典檔案 
   SQL> connect /as sysdba 
   SQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/data1/oracle/logs');

PL/SQL procedure successfully completed

2、建立要分析的日誌檔案列表 
   1).建立分析列表,即所要分析的日誌 
     SQL>execute dbms logmnr.add logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new); 
     PL/SQL procedure successfully completeds    
   2).新增分析日誌檔案,一次新增1個為宜 
     SQL>execute dbms_ logmnr.add_ logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.ADDFILE); 
     PL/SQL procedure successfully completed

3、使用LogMiner進行日誌分析(具體要查詢什麼內容可以自己修改)
(1)無限制條件
SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName=>'/data1/oracle/logs/v816dict.ora '); 
(2)有限制條件
     通過對過程DBMS_ LOGMNR.START_LOGMNR中幾個不同引數的設定,可以縮小要分析日誌檔案的範圍。通過設定起始時間和終止時間引數我們可以限制只分析某一時間範圍的日誌。如下面的例子,我們僅僅分析2007年9月18日的日誌:
SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName => ' /data1/oracle/logs/ v816dict.ora ', 
StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')
EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS ')); 
也可以通過設定起始SCN和截至SCN來限制要分析日誌的範圍:
SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName => ' /data1/oracle/logs/ v816dict.ora ',
StartScn => 20,
EndScn => 50); 
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記憶體區域被清除,分析結果也隨之不再存在。
5、檢視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