oracle增加工资检查约束,Oracle11gr2 审计语句增强(二)

在11.2中,Oracle对于AUDIT语句进行了增强。

这一篇介绍将AUDIT的IN SESSION CURRENT语句。

在11.2中,AUDIT增加了IN SESSION CURRENT语句,可以只审计当前的会话。这对于检查当前会话执行了那么操作十分有帮助。

SQL> SELECT * FROM V$VERSION;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

SQL> SHOW USER

USER为"YANGTK"

下面在另一个会话中创建表:

SQL> SET SQLP 'SQL2> '

SQL2> SHOW USER

USER为"TEST"

SQL2> CREATE TABLE T_AUDIT1 (ID NUMBER);

表已创建。

在会话1中检查AUD$记录:

SQL> SELECT SESSIONID, OBJ$CREATOR, OBJ$NAME

2  FROM SYS.AUD$

3  WHERE NTIMESTAMP# >= TRUNC(SYSDATE);

未选定行

没有检查到任何记录,这是因为AUDIT选项并没有打开,在会话1打开AUDIT CREATE TABLE:

SQL> AUDIT CREATE TABLE;

审计已成功。

在会话2上再次建表:

SQL2> CREATE TABLE T_AUDIT2 (ID NUMBER);

表已创建。

再次检查AUDIT记录:

SQL> SELECT SESSIONID, OBJ$CREATOR, OBJ$NAME

2  FROM SYS.AUD$

3  WHERE NTIMESTAMP# >= TRUNC(SYSDATE);

未选定行

仍然没有记录,这是因为AUDIT对于当前已经连接的会话不生效,只有重新连接的会话才有效:

SQL2> CONN TEST/TEST已连接。SQL2> CREATE TABLE T_AUDIT3 (ID NUMBER);

表已创建。

在会话1中检查AUDIT记录:

SQL> SELECT SESSIONID, OBJ$CREATOR, OBJ$NAME

2  FROM SYS.AUD$

3  WHERE NTIMESTAMP# >= TRUNC(SYSDATE);

SESSIONID OBJ$CREATOR                    OBJ$NAME

---------- ------------------------------ ------------------------------

94943

94946

94946 TEST                           T_AUDIT3

现在AUDIT记录中包含了3条记录,前面两条分别是会话断开和会话登陆的AUDIT记录,最后一条就是CREATE TABLE产生的审计记录。

SQL> NOAUDIT CREATE TABLE;

审计未成功。

SQL> AUDIT CREATE TABLE IN SESSION CURRENT;

审计已成功。

关闭CREATE TABLE的审计,设置当前会话的CREATE TABLE审计。

SQL2> CONN TEST/TEST已连接。SQL2> CREATE TABLE T_AUDIT4 (ID NUMBER);

表已创建。

在会话2上重新登陆,并建表。

SQL> SELECT SESSIONID, OBJ$CREATOR, OBJ$NAME

2  FROM SYS.AUD$

3  WHERE NTIMESTAMP# >= TRUNC(SYSDATE);

SESSIONID OBJ$CREATOR                    OBJ$NAME

---------- ------------------------------ ------------------------------

94943

94946

94946 TEST                           T_AUDIT3

94941

94941

94941

94941

94946

94950

已选择9行。

可以看到会话2上的CREATE TABLE并未被审计,下面在当前会话执行CREATE TABLE:

SQL> CREATE TABLE T_AUDIT (ID NUMBER);

表已创建。

SQL> SELECT SESSIONID, OBJ$CREATOR, OBJ$NAME

2  FROM SYS.AUD$

3  WHERE NTIMESTAMP# >= TRUNC(SYSDATE);

SESSIONID OBJ$CREATOR                    OBJ$NAME

---------- ------------------------------ ------------------------------

94943

94946

94946 TEST                           T_AUDIT3

94941

94941

94941

94941

94946

94950

94941 YANGTK                         T_AUDIT

已选择10行。

使用了IN SESSION CURRENT语句,使得审计马上对当前会话生效,而不会对其他的会话进行审计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值