使用触发器审计oracle中的用户日志记录信息

时间:2014-12-06 17:30:50

标签: sql oracle plsql

我创建了以下触发器,但是我需要获取已登录到应用程序的用户名和dml操作,而不是当前登录到数据库中的用户

CREATE OR REPLACE TRIGGER orders_after_delete
AFTER update or delete
ON orders

FOR EACH ROW
DECLARE

v_username varchar2(10);

BEGIN

SELECT user INTO v_username
FROM dual;

INSERT INTO orders_audit
VALUES
( :old.order_id,
:old.quantity,
:old.cost_per_item,
:old.total_cost,
sysdate,
v_username,
:new.total_cost );

END;

有了这个任务,我得到了登录数据库的用户的用户名。我想让用户登录我的用户应用程序。

2 个答案:

答案 0 :(得分:1)

要审核用户,请使用正确的Oracle审核功能:

https://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm#TDPSG50000

比触发器好多了。

答案 1 :(得分:0)

INSERT语句之前,使用IF-ELSE构造检查用户名。区分application userschema owner的一种方法是验证授予用户的roles

您可以从username查询processprogramv$session,以检查用户是否通过应用程序登录。