1. 程式人生 > >追溯oracle資料庫內業務使用者密碼被修改異常操作

追溯oracle資料庫內業務使用者密碼被修改異常操作

問題情況描述:

客戶提出業務不能響應,使用者名稱原密碼登入報錯,懷疑密碼被人為修改

環境接受:

作業系統:AIX 5.3

資料庫版本:9.2

資料庫配置:RAC

資料檔案格式:裸裝置

處理過程:

因為資料庫開啟了歸檔,所有資料庫的歷史操作都可以通過挖掘歸檔日誌進行追溯,挖掘工具為oracle自帶的logminer。如果修改了使用者名稱密碼,會將其命令轉化為對資料字典的dml操作。

1.使用sys使用者檢視資料庫是否存在logminer的程式包

SQL>desc dbms_logmnr

⚠️如果不存在,則需要執行指令碼安裝:SQL>@$ORACLE_HOME/rdbms/admin/dbmslm.sql

2.根據客戶提供的上次被修改的時間點,檢視產生的歸檔日誌檔案有哪些:

>select inst_id,name,to_char(first_time,'yyyy-mm-dd hh24:mi:ss'),to_char(next_time,'yyyy-mm-dd hh24:mi:ss'),sequence# from gv$arhcived_log where first_time>=to_data('2018-2-2 00:00:00 yyyy-mm-dd hh24:mi:ss') and first_time<=to_data('2018-2-3 00:00:00 yyyy_mm_dd hh24:mi:ss') order by 3 desc;

省略查詢結果。。。。。。

由於是雙節點RAC,不確定在其中哪個節點進行,需要把兩個節點的歸檔從帶庫restore出來檢視:

run{

allocate channel t1 device type 'set_tape';

restore archivelog sequence# 對應時間發生時最近的一次歸檔 thread 1;

restore archivelog sequence# 對應時間發生時最近的一次歸檔 thread 2;

release channel t1;  

 }

3.利用logminer進行日誌挖掘:

3.1首次加入歸檔日誌:

execute dbms_logmnr.add_logfile(logfilename=>'步驟2 restore回來的歸檔日誌路徑',option=>dbms_logmnr.new);

3.2開始利用當前資料字典進行日誌挖掘

dbms_logmnr.start_logmnr(option=>dbms_logmnr.dict_from_online_catalog);

4.挖掘語句執行結束後,日誌資訊被儲存在v$logmnr_contents檢視中,並對其他使用者不可見。檢查對user$ 進行修改的所有條目:

select * from v$logmnr_contents where seg_name='USER$';

在例項1中的歸檔日誌中未發現此類操作,使用如下命令停止日誌挖掘:

 execute dbms_logmnr.end_logmnr();

按上述步驟繼續挖掘例項2的歸檔,發現異常操作

5.使用如下sql檢視詳細時間

SQL>select to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') from v$logmnr_contents where seg_name='USER$';

查詢結果與客戶回憶的時間相吻合,

⚠️col session_info for 99  "加長顯示操作"

且根據上步驟中的監聽日誌,按主機名過濾條件,在例項二的監聽日誌裡查詢對應的登入記錄,進一步查詢問題原因