必須配置Utl_file_dir初始化參數,并保證日志路徑與Utl_file_dir路徑一致或者是其中一個

靜海網站制作公司哪家好,找創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設公司等網站項目制作,到程序開發,運營維護。創新互聯公司自2013年起到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯公司。
CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2)
IS
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
BEGIN
深入分析Oracle數據庫日志文件
作為Oracle DBA,我們有時候需要追蹤數據誤刪除或用戶的惡意操作情況,此時我們不僅需要查出執行這些操作的數據庫賬號,還需要知道操作是由哪臺客戶端(IP地址等)發出的。針對這些問題,一個最有效實用而又低成本的方法就是分析Oracle數據庫的日志文件。本文將就Oracle日志分析技術做深入探討。
一、如何分析即LogMiner解釋
從目前來看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner來進行, Oracle數據庫的所有更改都記錄在日志中,但是原始的日志信息我們根本無法看懂,而LogMiner就是讓我們看懂日志信息的工具。從這一點上看,它和tkprof差不多,一個是用來分析日志信息,一個則是格式化跟蹤文件。通過對日志的分析我們可以實現下面的目的:
1、查明數據庫的邏輯更改;
2、偵察并更正用戶的誤操作;
3、執行事后審計;
4、執行變化分析。
不僅如此,日志中記錄的信息還包括:數據庫的更改歷史、更改類型(INSERT、UPDATE、DELETE、DDL等)、更改對應的SCN號、以及執行這些操作的用戶信息等,LogMiner在分析日志時,將重構等價的SQL語句和UNDO語句(分別記錄在V$LOGMNR_CONTENTS視圖的SQL_REDO和SQL_UNDO中)。這里需要注意的是等價語句,而并非原始SQL語句,例如:我們最初執行的是delete a where c1 cyx;,而LogMiner重構的是等價的6條DELETE語句。所以我們應該意識到V$LOGMNR_CONTENTS視圖中顯示的并非是原版的現實,從數據庫角度來講這是很容易理解的,它記錄的是元操作,因為同樣是delete a where c1 cyx;語句,在不同的環境中,實際刪除的記錄數可能各不相同,因此記錄這樣的語句實際上并沒有什么實際意義,LogMiner重構的是在實際情況下轉化成元操作的多個單條語句。
另外由于Oracle重做日志中記錄的并非原始的對象(如表以及其中的列)名稱,而只是它們在Oracle數據庫中的內部編號(對于表來說是它們在數據庫中的對象ID,而對于表中的列來說,對應的則是該列在表中的排列序號:COL 1, COL 2 等),因此為了使LogMiner重構出的SQL語句易于識別,我們需要將這些編號轉化成相應的名稱,這就需要用到數據字典(也就說LogMiner本身是可以不用數據字典的,詳見下面的分析過程),LogMiner利用DBMS_LOGMNR_D.BUILD()過程來提取數據字典信息。
LogMiner包含兩個PL/SQL包和幾個視圖:
1、dbms_logmnr_d包,這個包只包括一個用于提取數據字典信息的過程,即dbms_logmnr_d.build()過程。
2、dbms_logmnr包,它有三個過程:
add_logfile(name varchar2, options number) - 用來添加/刪除用于分析的日志文件;
start_logmnr(start_scn number, end_scn number, start_time number,end_time number, dictfilename varchar2, options number) - 用來開啟日志分析,同時確定分析的時間/SCN窗口以及確認是否使用提取出來的數據字典信息。
end_logmnr() - 用來終止分析會話,它將回收LogMiner所占用的內存。
與LogMiner相關的數據字典。
1、v$logmnr_dictionary,LogMiner可能使用的數據字典信息,因logmnr可以有多個字典文件,該視圖用于顯示這方面信息。
2、v$logmnr_parameters,當前LogMiner所設定的參數信息。
3、v$logmnr_logs,當前用于分析的日志列表。
4、v$logmnr_contents,日志分析結果。
二、Oracle9i LogMiner的增強:
1、支持更多數據/存儲類型:鏈接/遷移行、CLUSTER表操作、DIRECT PATH插入以及DDL操作。在V$LOGMNR_CONTENTS的SQL_REDO中可以看到DDL操作的原句(CREATE USER除外,其中的密碼將以加密的形式出現,而不是原始密碼)。如果TX_AUDITING初始化參數設為TRUE,則所有操作的數據庫賬號將被記錄。
2、提取和使用數據字典的選項:現在數據字典不僅可以提取到一個外部文件中,還可以直接提取到重做日志流中,它在日志流中提供了操作當時的數據字典快照,這樣就可以實現離線分析。
3、允許對DML操作按事務進行分組:可以在START_LOGMNR()中設置COMMITTED_DATA_ONLY選項,實現對DML操作的分組,這樣將按SCN的順序返回已經提交的事務。
4、支持SCHEMA的變化:在數據庫打開的狀態下,如果使用了LogMiner的DDL_DICT_TRACKING選項,Oracle9i的LogMiner將自動對比最初的日志流和當前系統的數據字典,并返回正確的DDL語句,并且會自動偵察并標記當前數據字典和最初日志流之間的差別,這樣即使最初日志流中所涉及的表已經被更改或者根本已經不存在,LogMiner同樣會返回正確的DDL語句。
5、在日志中記錄更多列信息的能力:例如對于UPDATE操作不僅會記錄被更新行的情況,還可以捕捉更多前影信息。
6、支持基于數值的查詢:Oracle9i LogMiner在支持原有基于元數據(操作、對象等)查詢的基礎上,開始支持基于實際涉及到的數據的查詢。例如涉及一個工資表,現在我們可以很容易地查出員工工資由1000變成2000的原始更新語句,而在之前我們只能選出所有的更新語句。
三、Oracle8i/9i的日志分析過程
LogMiner只要在實例起來的情況下都可以運行,LogMiner使用一個字典文件來實現Oracle內部對象名稱的轉換,如果沒有這個字典文件,則直接顯示內部對象編號,例如我們執行下面的語句:
delete from "C"."A" where "C1" = ‘gototop’ and ROWID = AAABg1AAFAAABQaAAH;
如果沒有字典文件,LogMiner分析出來的結果將是:
delete from "UNKNOWN"."OBJ# 6197" where "COL 1" = HEXTORAW(d6a7d4ae) and ROWID
= AAABg1AAFAAABQaAAH;
顯示歸檔日志信息
1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機器要歸檔的日志序列號等信息.
2顯示日志操作模式
SELECT name,log_mode FROM v$database;
3,顯示Oracle歸歸檔日志信息.
Col name format a46
Select name, swquence#, first_change# FROM v$archived_log;
Name用于表示Oracle歸歸檔日志文件名,sequence#用于表示歸檔日志對應的日志序列號,firs_change#用于標識歸檔日志的起始SCN值.
4、執行介質 恢復 時,需要使用歸檔日志文件,此四必須準確定位歸檔日志的存放位置.通過查詢動態性能視圖v$archive_dest可以取得歸檔日志所在目錄.
SELECT destination FROM v$archive dest;
5,顯示日志歷史信息
SELECT * FROM v$loghist;
THREAD#用于標識重做線程號,SEQUNCE#用于標識日志序列號,FIRST_CHANGE#用于標識日志序列號對應的起始SCN值,FIRST_TIME用于標識起始SCN的發生時間.SWICTH_CHANGE#用于標識日志切換的SCN值.
6.顯示歸檔進程信息.
進行日志切換時,ARCH進程會自動將重做日志內容復制到Oracle歸歸檔日志中,為了加快歸檔速度,應該啟用多個ARCH進程.通過查詢動態性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進程的信息!
SELECT * FROM v$archive_processes;
Porcess用于標識ARCH進程的編號,status用于標識ARCH進程的狀態(ACTIVE:活動,STOPPED:未啟動),log_sequence用于標識正在進行歸檔的日志序列號,state用于標識ARCH進程的工作狀態
分享題目:oracle怎么建立日志,oracle怎么看日志
標題網址:http://www.kartarina.com/article10/hdpjdo.html
成都網站建設公司_創新互聯,為您提供手機網站建設、微信公眾號、移動網站建設、品牌網站制作、ChatGPT、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯