在Oracle 8i版本之前,使用internal使用者來執行資料庫的啟動和關閉以及create database等操作;從8i版本以後,Oracle已經逐漸淘汰了internal使用者,採用授與sysdba或者sysoper角色的使用者才可以執行資料庫的啟動和關閉等操作,為保持使用者習慣在8i中依舊保留了internal使用者和svrmgrl,但已完全可以不使用svrmgrl工具和internal使用者了。最新發行的oracle 9i已經完全淘汰了svrmgrl工具和internal使用者。由於具有角色sysdba的使用者權限很大,可以執行資料庫的啟動和關閉等操作,所以要對具有這些角色的使用者進行監控
在unix平台的Oracle資料庫產品中,每次當使用者以sysdba許可權登陸資料庫時,系統就自動建立一個名為ora_.aud的檔案,該檔案預設在$ORACLE_HOME/rdbms/audit目錄下。該檔案的自動建立根本不需要系統開啟審計功能。在這個檔案中記錄了串連的使用者,終端機器的名稱以及登陸時間等資訊。根據這些資訊,我們可以很容易地監控到是何人在何時以sysdba許可權登陸資料庫。下面是一個例子:
1. 首先在用戶端sqlplus中以sysdba串連資料庫伺服器:
SQL> conn sys@gs1 as sysdba
請輸入口令:********
已串連。
2. 查看伺服器端$ORACLE_HOME/rdbms/audit目錄下最新的ora_.aud檔案內容:
nbtax1> cat ora_589980.aud Audit file /ora1/oracle/app/product/8.1.6/rdbms/audit/ora_589980.aud Oracle8i Enterprise Edition Release 8.1.6.3.0 - Production With the Partitioning and Parallel Server options JServer Release 8.1.6.3.0 - Production ORACLE_HOME = /ora1/oracle/app/product/8.1.6 System name: OSF1 -- 系統名稱 Node name: nbtax1 -- 節點名稱 Release: V5.1 -- 作業系統版本號碼 Version: 732 Machine: alpha -- 伺服器名稱 Instance name: nbgs1 -- 執行個體名稱 Redo thread mounted by this instance: 1 Oracle process number: 247 -- Oracle 進程號 Unix process pid: 589980, image: oracle@nbtax1 (TNS V1-V3) Fri Sep 21 10:26:57 2001 -- 登陸時間 ACTION : 'connect internal' OSPRIV : DBA -- 執行何種操作 CLIENT USER: Administrator -- 用戶端使用者名稱稱 CLIENT TERMINAL: XIAOFEISHI -- 用戶端終端名稱 |
從上面檔案中的內容我們可以看到,該檔案詳細記錄了登陸時間,執行的操作,用戶端使用者的名稱,以及登陸伺服器終端機器的名稱。根據這些資訊我們就很容易確定何人何時以sysdba許可權登陸過資料庫伺服器。注意ora_589980.aud檔案中的漢字解釋均為作者所加,不是系統自動產生。