一種數據庫的審計方法及系統的制作方法
【技術領域】
[0001]本發明涉及計算機系統設計和數據庫術領域,特別是涉及一種數據庫的審計方法及系統。
【背景技術】
[0002]目前,在企業的關鍵業務系統的日常運行過程中,偶爾會出現重要信息缺失的情況,而出現這種情況的絕大部分原因可以歸結到對數據庫的誤操作或是惡意破壞。數據庫的誤操作或是惡意破壞對我們系統的運行是致命的,并且會對我們工程技術人員的事后恢復帶來不少困擾。
[0003]在面對由于誤操作或者是惡意破壞操作導致重要信息缺失的情況時,我們往往會面對以下兩個主要問題:1、用戶在什么時候操作了數據庫;2、用戶的操作影響到數據庫中的哪些表。對于這些情況,通過對數據庫的審計可以有效跟蹤用戶的每一個操作,為我們提供了及時有效的解決方法。
[0004]針對數據庫審計的實現方法,現在市場上有很多第三方審計軟件,但是,這些軟件都是收費的,審計成本較高,并且這些軟件無法集成在數據庫中,需要在數據庫服務器上安裝客戶端工具進行數據審計,給數據庫帶來了額外的性能開銷。
【發明內容】
[0005]有鑒于此,本發明提供了一種數據庫的審計方法及系統,以實現降低審計成本并且減小數據庫的額外的性能開銷目的。
[0006]為解決上述技術問題,本發明提供一種數據庫的審計方法,包括:
[0007]為所述數據庫創建觸發器,并利用所述觸發器記錄用戶的登錄信息;
[0008]獲取所述數據庫的歸檔日志文件;
[0009]利用所述登錄信息和所述歸檔日志文件,對所述數據庫的數據進行審計,得到審計結果。
[0010]上述方法中,優選的,在所述獲取所述數據庫的歸檔日志文件之前,還包括:
[0011 ] 設置所述數據庫為歸檔模式。
[0012]上述方法中,優選的,在所述利用所述登錄信息和所述歸檔日志文件,對所述數據庫的數據進行審計之前,還包括:
[0013]生成所述數據庫的數據字典文件,以便解析所述歸檔日志文件中的數據。
[0014]上述方法中,優選的,利用logminer對所述數據庫的數據進行審計,得到審計結果Ο
[0015]本發明還提供了一種數據庫的審計系統,包括:
[0016]記錄單元,用于為所述數據庫創建觸發器,并利用所述觸發器記錄用戶的登錄信息;
[0017]獲取單元,用于獲取所述數據庫的歸檔日志文件;
[0018]審計單元,用于利用所述登錄信息和所述歸檔日志文件,對所述數據庫的數據進行審計,得到審計結果。
[0019]上述系統中,優選的,還包括:
[0020]設置單元,用于在所述獲取所述數據庫的歸檔日志文件之前,設置所述數據庫為歸檔模式。
[0021]上述系統中,優選的,還包括:
[0022]生成單元,用于在所述利用所述登錄信息和所述歸檔日志文件,對所述數據庫的數據進行審計之前,生成所述數據庫的數據字典文件,以便解析所述歸檔日志文件中的數據。
[0023]上述系統中,優選的,所述審計單元具體用于利用logminer對所述數據庫的數據進行審計,得到審計結果。
[0024]以上本發明提供的一種數據庫的審計方法及系統中,有效利用了數據庫的觸發器來記錄用戶的登錄信息;同時利用所述登錄信息和所述歸檔日志文件,對所述數據庫的數據進行審計,得到審計結果。為數據庫創建觸發器并不需要在數據庫服務器上安裝客戶端工具,因此不會給數據庫帶來額外的性能開銷,并且觸發器可以由本領域技術人員基于現有技術自行創建,并不需要支付額外的費用。顯然,本發明的應用實現了降低審計成本并且減小數據庫的額外的性能開銷目的。
【附圖說明】
[0025]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
[0026]圖1為本發明實施例提供的一種數據庫的審計方法的流程圖;
[0027]圖2為本發明實施例提供的一種數據庫的審計系統的結構框圖示意圖。
【具體實施方式】
[0028]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例?;诒景l明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0029]本發明的核心是提供一種數據庫的審計方法及系統,以實現降低審計成本并且減小數據庫的額外的性能開銷目的。
[0030]為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和【具體實施方式】對本發明作進一步的詳細說明。
[0031]參考圖1,圖1示出了本發明實施例提供的一種數據庫的審計方法的流程圖,該方法具體可以包括如下步驟:
[0032]步驟S100、為數據庫創建觸發器,并利用觸發器記錄用戶的登錄信息;
[0033]具體地,先為數據庫創建觸發器。利用用戶在數據庫上的登錄來觸發該觸發器,并利用該觸發器將用戶錄入的用戶名、密碼等用戶登錄信息記錄下來。
[0034]進一步的,在具體實施過程中,可以參考以下代碼實現觸發器的創建:
[0035]create or replace trigger on_logon_tigger
[0036]after logon on database
[0037]begin
[0038]dbms_appl icat1n_inf0.set_cl ient_info (sys_context (’ userenv’ , ’ ip_address'));
[0039]end ;
[0040]步驟S101、獲取數據庫的歸檔日志文件;
[0041]在實際應用中,為了順利地理解歸檔日志文件中的內容,在對歸檔日志文件進行解析之前,需要生成數據庫的數據字典文件,否則無法讀懂歸檔日志文件中的內容。
[0042]另外,在獲取歸檔日志文件之前,需要將數據庫設置為歸檔模型,進一步地,在具體實施過程中,可以參照以下代碼設置數據庫為歸檔模式:
[0043]ALTER SYSTEM SET log_archive_dest = "D:\oracle\oradata\practice\ARCHIVE";
[0044]ALTER SYSTEM SET log_archive_format = "ARC% S_% R.% T"SC0PE = SPFILE ;
[0045]步驟S102、利用登錄信息和歸檔日志文件,對數據庫的數據進行審計,得到審計結果Ο
[0046]由于歸檔日志文件記錄了對數據庫的所有操作,再加上觸發器記錄的用戶的登錄信息,就可以知道哪個用戶在什么時間對數據庫做了什么樣的操作。
[0047]具體地,我們可以利用logminer對數據庫的數據進行審計,得到審計結果。進一步