【Oracle】session audsid的含义和产生

之前对于oracle中v$session视图中的audsid比较疑惑,不明白它和sid的区别,后来在网上查到了一些资料,现把audsid的产生原理和含义总结如下:

首先截取一部分v$session结构

sys@ORCL> descv$session
 Name                                                 Null?   Type
 ----------------------------------------------------------------------------------------------- SADDR                                                         RAW(4)
 SID                                                           NUMBER
 SERIAL#                                                       NUMBER
 AUDSID                                                        NUMBER
 PADDR                                                         RAW(4)
 USER#                                                         NUMBER

其中的audsid由SYS.AUDSES$这个sequence产生,当有一个新的会话产生,其audsid的值即为这个sequence的nextval,是为了审计使用的产生值。

现在我们查看一下dba_sequences中的信息:

sys@ORCL> select *from dba_sequences where sequence_name = 'AUDSES$';

SEQUENCE_OWNER                SEQUENCE_NAME                  MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZELAST_NUMBER
------------------------------ ---------------------------------------- ---------- ------------ - - ---------- -----------
SYS                           AUDSES$                                12000000000           1 YN        20        754
能看到AUDSES$的最大值和当前值等信息,当有用户连接时就会分给一个audsid以方便对该用户的审计。

现在来查看一下session中的内容

sys@ORCL> selectsid, serial# ,audsid ,username,OSUSER,schemaname
2 from v$session;

      SID   SERIAL#    AUDSIDUSERNAME                      OSUSER                        SCHEMANAME
---------- ---------- ---------- ------------------------------------------------------------ ------------------------------
      137       177       736HR                            oracle                        HR
      139       348       737SCOTT                         oracle                        SCOTT
      141       537                                       oracle                        SYS
      142        17 4294967295SYS                           oracle                        SYS
      144                                               oracle                        SYS
      145        12 4294967295SYS                           oracle                        SYS
      146                                               oracle                        SYS
      148                                               oracle                        SYS
      154                                               oracle                        SYS
      155                                               oracle                        SYS
      156                                               oracle                        SYS
      160                                               oracle                        SYS
      161                                               oracle                        SYS
      162                                               oracle                        SYS
      163                                               oracle                        SYS
      164                                               oracle                        SYS
      165                                               oracle                        SYS
      166                                               oracle                        SYS
      167                                               oracle                        SYS
      168                                               oracle                        SYS
      169                                               oracle                        SYS
      170                                               oracle                        SYS

22 rows selected.
其中除了736,737等较小的值之外还有很多sys用户的4294967295值,在oracle10g及以后的版本中sys用户的audsid都统一为4294967295,多个sys同时登陆也只有这一个值。除此之外还有很多的为0的值(oracle10g以前internal用户登录其audsid也都为0),现在我们来查看一下:

sys@ORCL> selectsid, serial# ,audsid ,username,OSUSER,schemaname,program
  from v$session
  where AUDSID = 0;

      SID   SERIAL#    AUDSIDUSERNAME                      OSUSER                        SCHEMANAME                    PROGRAM
---------- ---------- ---------- ------------------------------------------------------------ ------------------------------------------------------------------------------
      141       581                                       oracle                        SYS                           oracle@oracle (J000)
      144                                               oracle                        SYS                           oracle@oracle (q001)
      146                                               oracle                        SYS                           oracle@oracle (q000)
      148                                               oracle                        SYS                           oracle@oracle (QMNC)
      154                                               oracle                        SYS                           oracle@oracle (ARC1)
      155                                               oracle                        SYS                           oracle@oracle (ARC0)
      156                                               oracle                        SYS                           oracle@oracle (RVWR)
      160                                               oracle                        SYS                           oracle@oracle (MMNL)
      161                                               oracle                        SYS                           oracle@oracle (MMON)
      162                                               oracle                        SYS                           oracle@oracle (CJQ0)
      163                                               oracle                        SYS                           oracle@oracle (RECO)
      164                                               oracle                        SYS                           oracle@oracle (SMON)
      165                                               oracle                        SYS                           oracle@oracle (CKPT)
      166                                               oracle                        SYS                           oracle@oracle (LGWR)
      167                                               oracle                        SYS                           oracle@oracle (DBW0)
      168                                               oracle                        SYS                           oracle@oracle (MMAN)
      169                                               oracle                        SYS                           oracle@oracle (PSP0)
      170                                               oracle                        SYS                           oracle@oracle (PMON)

18 rows selected.

从这个结果我们可以看到这些audsid为0的进程都是后台进程,没有审计的必要,所以它的值都为0.

 

附:

--from asktom
the audsid column is populated via a sequence and for normal
sessions is the same as "userenv('sessionid')" -- but for somebackground sessions -- it is not set
(it comes back as "0" making the view not work.

So, I'd just ignore "audsid" for now and use SID.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值