1. 有哪些审计的方案?
说的再通俗点就是:数据库用户的登录记录,如何查看?
一般有两种方案:
(1) 使用trigger定制化用系统触发器来记录用户登录(注意:一般用户可设置,自用较多)。
(2) 开启库audit审计功能用Oracle库本身的审记功能来记录用户的操作信息, (注意:DBA操作较方便,需要权限较大)。
2. 如何实现上述审计?
方案一,使用trigger定制化
登录审计:
(1)给权限
grant select on v_$session to MDMCNOOC01;
--收回权限
revoke select_catalog_role from MDMCNOOC01;
(2) 创建表空间及相关表
-- 创建表空间
CREATE TABLESPACE logInfo DATAFILE
'/app/oracle/oradata/tablespace/logInfo_01.dbf' SIZE 1G AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
-- 创建用户登录表,并指定表空间为logInfo
CREATE TABLE LOGINFO_LOG
(
SESSION_ID NUMBER(8,0) NOT NULL,
LOGIN_ON_TIME DATE,
LOGIN_OFF_TIME DATE,
USER_IN_DB VARCHAR2(50),
MACHINE VARCHAR2(50),
IP_ADDRESS VARCHAR2(20),
RUN_PROGRAM VARCHAR2(50)
)
PCTFREE 10
PCTUSED 40
MAXTRANS 255
TABLESPACE logInfo
STORAGE(INITIAL 64K MINEXTENTS 1 MAXEXTENTS 2147483645 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
NOCACHE
LOGGING
/
(3) 创建用户登录触发器
CREATE OR REPLACE TRIGGER LOGIN_ON_INFO
AFTER LOGON
ON DATABASE
BEGIN
INSERT into LOGINFO_LOG(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)