




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于系統(tǒng)級觸發(fā)器的審計功能從Oracle8i開始,Oracle引入了特殊的觸發(fā)器,這些觸發(fā)器并不是和特殊的DML事件相關(guān)聯(lián)的(DML事件,如,INSERT,UPDATE和DELETE)。這些系統(tǒng)級別的觸發(fā)器包括:l 數(shù)據(jù)庫啟動/關(guān)閉觸發(fā)器l DDL觸發(fā)器l 最終用戶登陸/注銷觸發(fā)器l
2、160; 系統(tǒng)錯誤觸發(fā)器l DDL觸發(fā)器使用這些觸發(fā)器,可以對數(shù)據(jù)庫發(fā)生的一些重要事件進(jìn)行審計。當(dāng)觸發(fā)事件發(fā)生的時候,可以啟動觸發(fā)器。在觸發(fā)器中,可以通過DML操作將審計操作記錄在日志表中,或者通過拋出一個EXCEPTION來制止某種操作。在觸發(fā)器中,可以通過使用系統(tǒng)事件函數(shù)(Event Attribute Functions)來獲取一些信息。以下是系統(tǒng)事件函數(shù)的詳細(xì)情況:系統(tǒng)事件函數(shù)函數(shù)名稱類型描述備注ora_client_ip_addr
3、ess VARCHAR2 客戶端的IP地址 ora_database_name VARCHAR2(50) 數(shù)據(jù)庫名稱 ora_dict_obj_name VARCHAR2(30) DDL發(fā)生的對象名稱 ora_dict_obj_owner VARCHAR2(30) DDL發(fā)生對象的宿主 ora_dict_obj_type VARCHAR2(20) 對象類別 ora_is_alter_column(column_name INVARCHAR2) BOOLEAN 當(dāng)某列被修改的時候返回真,否則返回假 ora_is_drop_column(
4、column_name INVARCHAR2) BOOLEAN 當(dāng)某列被刪除的時候返回真,否則返回假 ora_login_user VARCHAR2(30) 登錄的用戶名 ora_sysevent VARCHAR2(20) 系統(tǒng)事件的名稱 is_servererror(error_num in integer)BOLEAN返回系統(tǒng)是否產(chǎn)生某個錯誤 ORACLE 8I開始,提供了一個新的函數(shù)“SYS_CONTEXT”。通過使用SYS_CONTEXT函數(shù)可以獲得一些和用戶相關(guān)的信息,比如:SELECT sys_context('USERENV'
5、;,'TERMINAL') FROM DUAL;用戶環(huán)境的取值包括:l TERMINAL:客戶端操作系統(tǒng)終端的名稱 l LANGUAGE:NLS_LANG的值 l LANG :ISO字符集的名稱. l
6、 SESSIONID:SESSION的IDl INSTANCE:實例的IDl ISDBA:是否具有DBA權(quán)限l CLIENT_INFO:64字節(jié)的用戶信息,可以用DBMS_APPLICATION_INFO設(shè)置的值:l
7、 NLS_TERRITORY :當(dāng)前SESSION的 territoryl NLS_CURRENCY:當(dāng)前SESSION的貨幣符l NLS_CALENDAR:當(dāng)前SESSION的歷法l NLS_DATE_FORMAT:當(dāng)前SES
8、SION的日期格式l NLS_DATE_LANGUAGE :顯示日期的語言l NLS_SORT:排序方式(BINARY 或者linguistic)l CURRENT_USER:當(dāng)前SESSION擁有權(quán)限的用戶的名稱(比如說當(dāng)前SESSION是SYS,但是正在執(zhí)行system.myproc,那么current_u
9、ser就是system)l CURRENT_USERID :當(dāng)前SESSION擁有的權(quán)限的用戶的IDl SESSION_USER:session所屬的用戶名l SESSION_USERID:當(dāng)前SESSION所屬的用戶idl
10、160; CURRENT_SCHEMA:當(dāng)前SESSION缺省的SCHEMA名稱,可以用SESSION SET CURRENT_SCHEMA 語句修改. l CURRENT_SCHEMAID :當(dāng)前SESSION缺省的SCHEMA的IDl PROXY_USER:打開當(dāng)前SESSION的用戶的名稱l
11、PROXY_USERID:打開當(dāng)前SESSION的用戶的IDl DB_DOMAIN:當(dāng)前數(shù)據(jù)庫的DOMAINl DB_NAME:當(dāng)前數(shù)據(jù)庫的名稱l HOST:客戶端的主機(jī)名稱l OS_USER:客戶端的操作系統(tǒng)用戶名
12、l EXTERNAL_NAME:用戶的外部名稱。對于SSL用戶,使用v.503協(xié)議,返回的值是證書中的DNl IP_ADDRESS:客戶端的IP地址l NETWORK_PROTOCOL:連接串中的PROTOCOL=protocol指明的網(wǎng)絡(luò)協(xié)議l
13、60; BG_JOB_ID :如果當(dāng)前的SESSION是由ORACLE后臺進(jìn)程啟動的,那么返回JOB_ID,否則返回空值l FG_JOB_ID:如果當(dāng)前SESSION是由ORACLE客戶端進(jìn)程啟動的一個JOB,那么返回JOB_ID,否則返回空值 l AUTHENTICATION_TYPE:返回數(shù)據(jù)庫鑒權(quán)的方法,返回值包括:l
14、; DATABASE: 使用數(shù)據(jù)庫的用戶名口令l OS:使用操作系統(tǒng)外部用戶鑒權(quán)l(xiāng) NETWORK:網(wǎng)絡(luò)鑒權(quán)l(xiāng) PROXY:OCI的代理連接鑒權(quán) l AUT
15、HENTICATION_DATA:使用X.503證書鑒權(quán)的時候,返回HEX2的證書 oracle 8i新增的數(shù)據(jù)庫事件觸發(fā)器從ORALCE 8i開始,用戶可以通過常見系統(tǒng)級觸發(fā)器來追蹤一些系統(tǒng)事件。通過這些觸發(fā)器,用戶可以進(jìn)行一些操作,包括審計、把一些對象PIN入共享池、進(jìn)行一些維護(hù)操作等。以下是一些系統(tǒng)級觸發(fā)器的類型: 觸發(fā)器觸發(fā)時間觸發(fā)條件LogonAfter用戶登錄成功后LogoffBefore用戶退出登錄前StartupAfter數(shù)據(jù)庫啟動后ShutdownBefore數(shù)據(jù)庫關(guān)閉前ServererrorAfter系統(tǒng)發(fā)生故障后Logon/Logoff觸
16、發(fā)器可以用來記錄用戶等入和退出的時間。數(shù)據(jù)庫啟動和關(guān)閉觸發(fā)器可以用來進(jìn)行一些數(shù)據(jù)庫啟動后和關(guān)閉前的前處理和后處理。比如在數(shù)據(jù)庫啟動的時候把一些PL/SQL對象固定倒內(nèi)存中。Servererror觸發(fā)器可以用于記錄某些重要的錯誤信息,以便于跟蹤系統(tǒng),發(fā)現(xiàn)故障。在使用系統(tǒng)級觸發(fā)器前,首先要確認(rèn)系統(tǒng)參數(shù)_system_trig_enabled是否設(shè)置為TRUE。 DDL觸發(fā)器概述通過DDL觸發(fā)器可以記錄特定的DDL操作。DDL觸發(fā)器是從ORACLE 8i開始具有的觸發(fā)器類型。在ORACLE 9i中,DDL觸發(fā)器得到了加強(qiáng)。DDL觸發(fā)器的觸發(fā)事件括:l &
17、#160; BEFORE / AFTER ALTERl BEFORE / AFTER CREATEl BEFORE / AFTER DROPl BEFORE / AFTER RENAMEl
18、160; BEFORE / AFTER ANALYZEl BEFORE / AFTER ASSOCIATE STATISTICSl BEFORE / AFTER DISASSOCIATE STATISTICSl BEFORE / AFTER AUDITl
19、; BEFORE / AFTER NOAUDITl BEFORE / AFTER COMMENTl BEFORE / AFTER DDLl BEFORE / AFTER GRANTl
20、; BEFORE / AFTER REVOKEl BEFORE / AFTER TRUNCATEl AFTER SUSPEND要創(chuàng)建DDL觸發(fā)器,需要一定的系統(tǒng)權(quán)限,這些權(quán)限包括:l create triggerl &
21、#160; create any triggerl administer database triggerl alter any triggerl drop any triggerDDL觸發(fā)器可以用于細(xì)化的DDL操作審計。一般的做法是設(shè)計一張日志表,當(dāng)DDL觸發(fā)器激活后,通過系統(tǒng)相關(guān)的系統(tǒng)事件函數(shù)獲
22、取鎖需要的信息,然后把數(shù)據(jù)插入日志表中。這樣,就可以記錄系統(tǒng)中需要審計的DDL操作。DDL觸發(fā)器可以針對Database級或者SCHEMA級要注意的是,DDL觸發(fā)器僅對以下的對象有效:cluster, function, index, package, procedure, role, sequence, synonym, table, tablespace, trigger, type, view, user。 使用系統(tǒng)級觸發(fā)器審計用戶登錄情況 本節(jié)的例子介紹了使用系統(tǒng)的LOGON/LOGOFF觸發(fā)器來審計用戶登錄的情況。對于需要掌
23、握用戶在線時間的系統(tǒng)中十分有用。首先要創(chuàng)建一張表,該表保存用戶登錄的信息。然后創(chuàng)建三個觸發(fā)器,分別對LOGON/LOGOFF和相關(guān)的SERVERERROR進(jìn)行審計。創(chuàng)建審計記錄表:CREATE TABLE log_audit (login_date DATE, logoff_date date,username VARCHAR2(20),user_ip varchar2(20),error_code varchar2(15); 創(chuàng)建記錄登錄錯誤的觸發(fā)器:CREATE OR REPLACE TRIGGER log_errors AFTER SERVERERROR ON DATABAS
24、E BEGIN IF (IS_SERVERERROR (1017) THEN insert into system.log_audit (login_date,error_code) values(sysdate,'ORA-1017'); END IF; END; 創(chuàng)建登錄審計觸發(fā)器:CREATE OR REPLACE TRIGGER logon_audit AFTER LOGON ON DATABASE BEGIN insert into system.log_audit(login_date,username,u
25、ser_ip) values(sysdate,user,ora_client_ip_address); END; 創(chuàng)建退出審計觸發(fā)器:CREATE OR REPLACE TRIGGER logoff_audit BEFORE LOGOFF ON DATABASE BEGIN insert into system.log_audit (logoff_date,username,user_ip) values(sysdate,user,ora_client_ip_address); END; / 本例子可以對數(shù)據(jù)庫的登錄和退出記錄日志。當(dāng)
26、觸發(fā)器發(fā)生故障的時候(比如log_audit表所在的表空間滿的時候,會導(dǎo)致用戶登錄失敗。此時,需要使用具有ADMINISTER DATABASE TRIGGER權(quán)限的帳號登錄,然后將審計所使用的觸發(fā)器disabale,或者修正觸發(fā)器的錯誤。因此在使用系統(tǒng)事件觸發(fā)器的時候要十分謹(jǐn)慎。 使用系統(tǒng)級觸發(fā)器禁用DDL語句對于一個上線運(yùn)行的系統(tǒng),使用DDL操作是十分謹(jǐn)慎的。為了防止不必要的誤操作,可以通過DDL觸發(fā)器對某些表禁用DDL操作??梢栽谛枰沟牟僮黝愋蜕鲜褂胷aise_application_error函數(shù)來禁止操作,比如:CREATE OR REPLACE TRIGGER DD
27、L_FB before ALTER OR DROP OR RENAME on schema BEGIN Raise_application_error(-20030,此系統(tǒng)已經(jīng)運(yùn)行,不允許對表進(jìn)行DDL維護(hù));end;對于設(shè)置了這類觸發(fā)器的用戶,如果需要修改表結(jié)構(gòu),那么需要首先把這個觸發(fā)器關(guān)掉。 使用系統(tǒng)級觸發(fā)器審計重要帳號的DDL語句如果要審計數(shù)據(jù)庫中的DDL操作,那么可以通過DDL觸發(fā)器來實現(xiàn),本節(jié)介紹一個例子,把數(shù)據(jù)庫中的所有DDL操作都記錄下來。本例子可以在oracle 8i或更高的版本中使用。第一步,創(chuàng)建表空間和相關(guān)的日志表:creat
28、e tablespace statlog datafile '/oradata/statlog.dbf' size 200m; create table stat$log_ddl( ddl_date date, user_name varchar2(30), ip_addr VARCHAR2(30),obj_name VARCHAR2(50), ddl_type VARCHAR2(30), object_type VARCHAR2(18), owner VARCHAR2(30), SQL_TEXT VARCHAR2(1000) TABLESPACE STATLOG;第二步,創(chuàng)建數(shù)據(jù)庫級的DDL觸發(fā)器,把所有的DDL操作都記錄下來 CREATE OR REPLACE TRI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基層醫(yī)療衛(wèi)生機(jī)構(gòu)信息化建設(shè)中的醫(yī)療信息化與疾病預(yù)防控制報告
- 月嫂技能培訓(xùn)課件
- 新零售背景下便利店智能化供應(yīng)鏈金融創(chuàng)新報告
- 薄膜干涉題目及答案
- 安全質(zhì)量培訓(xùn)試題及答案
- 咖啡連鎖品牌擴(kuò)張戰(zhàn)略布局報告:2025年市場拓展與品牌戰(zhàn)略優(yōu)化方案創(chuàng)新
- 安全護(hù)理的試題及答案
- 單位音樂培訓(xùn)課件模板
- 安檢排爆培訓(xùn)課件
- cpa培訓(xùn)課件下載
- DB64-T 1999.1-2024 國土空間生態(tài)修復(fù)工程建設(shè)標(biāo)準(zhǔn) 第1部分:國土整治
- 湖北省黃岡市黃州區(qū)2023-2024學(xué)年六年級下學(xué)期期末考試英語試題
- TYNZYC 0095-2022 綠色藥材 金果欖(青牛膽)栽培技術(shù)規(guī)程
- 2024年廣西壯族自治區(qū)中考?xì)v史真題(含解析 )
- 幼兒園戶外混齡建構(gòu)游戲案例分析
- 電線老化檢測委托
- 創(chuàng)業(yè)修煉智慧樹知到期末考試答案章節(jié)答案2024年同濟(jì)大學(xué)
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗方法標(biāo)準(zhǔn)
- FFU龍骨吊頂防墜研究及應(yīng)用-2023.12.11王國棟修
- 河南省洛陽市2023-2024學(xué)年高一下學(xué)期期末考試物理試卷
- 2024年中國中式養(yǎng)生水行業(yè)發(fā)展趨勢洞察報告
評論
0/150
提交評論