首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle系統級觸發器實作:用戶登入登出審計追蹤

     編輯:Oracle 資料庫基礎

利用Oracle系統級觸發器建立用戶活動審計機制

自Oracle 8i起,資料庫引入系統級觸發器,包含資料庫啟動觸發器、DDL觸發器、以及用戶登入/登出觸發器。本文詳細說明如何設計審計表與觸發器,有效追蹤終端用戶的登入登出活動與會話資訊。

一、審計表設計

為避免登入/登出資訊分散在兩張表導致關聯困難,採用單一表記錄完整會話生命週期:

  • 登入資訊:用戶ID、會話ID、主機名、登入時間(精確至毫秒)
  • 登出資訊:最後執行程序、最後活動、最後模組、登出時間、會話持續時間(觸發器預先計算)

此設計簡化查詢、利於報表產生,並能直接分析用戶使用模式。

二、登入觸發器實作

利用SYS_CONTEXT('USERENV', 'SESSIONID')取得會話ID,SYS_CONTEXT('USERENV', 'HOST')取得主機名,SYSTIMESTAMP記錄精確登入時間。並將日期與時間分欄位儲存,提升報表可讀性。

三、登出觸發器實作

  1. 以會話ID為鍵值定位審計表對應記錄
  2. 透過V$SESSION視圖的ACTION、MODULE、PROGRAM屬性更新最後活動資訊
  3. 記錄登出時間並計算會話持續時間

四、實用報表範例

  • 用戶活動報表:統計每日/每時用戶會話總時長,識別系統使用熱區
  • 詳細登入報表:任意時間點的並發會話數統計,可匯出Excel繪製趨勢圖,輔助資源規劃

五、結語

系統級觸發器雖功能持續增強,但善用登入/登出觸發器已能建立輕量可靠的審計機制,為DBA提供豐富的用戶行為洞察,支援效能調校與安全稽核。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved