可以做一个触发器

用以下的方式可以监控登入登出的用戶:

创建一张记录登录TABLE,如下:

CREATE TABLE

SYSTEM.LOGIN_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

SYSTEM

STORAGE(INITIAL 64K MINEXTENTS 1 MAXEXTENTS 2147483645 FREELISTS 1

FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

NOCACHE

LOGGING

/

COMMENT ON

TABLE SYSTEM.LOGIN_LOG IS '登录日志'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.SESSION_ID IS 'sessionid'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.LOGIN_ON_TIME IS '登录时间'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.LOGIN_OFF_TIME IS '登出时间'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.USER_IN_DB IS '登录的DB User'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.MACHINE IS '机器名'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.IP_ADDRESS IS 'IP地址'

/

COMMENT ON COLUMN

SYSTEM.LOGIN_LOG.RUN_PROGRAM IS

'接入程序'

/

再创建两个TRIGGER,如下:

--记录登录信息触发器

CREATE OR REPLACE TRIGGER

SYS.LOGIN_ON_INFO

AFTER LOGON

ON DATABASE

BEGIN

INSERT

INTOSYSTEM.LOGIN_LOG(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)

SELECTAUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program

FROM v$session WHERE

AUDSID=USERENV('SESSIONID');

END;

/

--记录登出信息触发器

CREATE OR REPLACE

TRIGGER SYS.LOGIN_OFF_INFO

BEFORE LOGOFF

ON

DATABASE

Begin

update system.login_log set

login_off_time=sysdate where

session_id=USERENV('SESSIONID');

exception when others

then

null;

END;

OK,另外可以在下面的文件里设置对ORACLE的访问进行限制:

9i:  $ORACLE_HOME/network/admin/sqlnet.ora

8i:  $ORACLE_HOME/network/admin/protocol.ora

加入:

tcp.validate_checking=yes    ---启动检查

tcp.invited_nodes=(IP1,IP2,….)  ---允许访问

tcp.excluded_nodes=(IP1,IP2,…..)---  拒绝访问

方法二:

用如下的方式可以審計執行drop動作的事件:

/**

*

drop語句的審計日誌表

*/

create table drop_log

{

session_id int not null, --

sessionid

drop_time date, -- drop的時間

ip_address varchar2(20), --

ip地址

object_owner varchar2(30), -- 對象的擁有者

object_name varchar2(30), --

對象名稱

object_type varchar2(20), -- 對象類型

drop_by_user varchar2(30) --

執行drop語句的用戶

);

create or replace trigger drop_info

after drop on

mfg0513user.schema -- 在mfg0513user用戶上創建審計drop的觸發器

begin

insert into

drop_log

(session_id,

drop_time,

ip_address,

object_owner,

object_name,

object_type,

drop_by_user)

values(USERENV('SESSIONID'),

sysdate,

SYS_CONTEXT('USERENV','IP_ADDRESS'),

sys.dictionary_obj_owner,

sys.dictionary_obj_name,

sys.dictionary_obj_type,

sys.login_user);

end;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐