在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文件中的漢字解釋均為作者所加,不是系統自動生成。