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