首页 > 数据库 >Oracle sys.dba_audit_session查询慢

Oracle sys.dba_audit_session查询慢

时间:2024-08-22 10:05:40浏览次数:11  
标签:audit aud dba sys logoff SQL null name

备注:
Oracle 11.2.0.4

一.问题描述

awr报告可以看到这个EM相关的sql消耗了大量的IO。
也可以通过消耗IO的sql来查找:

--找出消耗物理IO资源最大的的SQL语句
select disk_reads, substr(sql_text,1,4000) from v$sqlarea  order by disk_reads desc;

具体的慢SQL如下:

SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, COUNT(username) AS failed_count
FROM  sys.dba_audit_session WHERE returncode != 0 AND TO_CHAR(timestamp, 'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(current_timestamp - TO_DSINTERVAL('0 0:30:00'), 'YYYY-MM-DD HH24:MI:SS')

二.问题分析

我们来查找 sys.dba_audit_session这个视图

SQL> set linesize 1000
SQL> set pagesize 1000
SQL> set long 10000
SQL> select view_name,text from user_views where view_name='DBA_AUDIT_SESSION';
 
VIEW_NAME                      TEXT
------------------------------ --------------------------------------------------------------------------------
DBA_AUDIT_SESSION              select os_username,  username, userhost, terminal, timestamp, action_name,
                                      logoff_time, logoff_lread, logoff_pread, logoff_lwrite, logoff_dlock,
                                      sessionid, returncode, client_id, session_cpu, extended_timestamp,
                                      proxy_sessionid, global_uid, instance_number, os_process
                               from dba_audit_trail
                               where action between 100 and 102
SQL> select view_name,text from user_views where view_name='DBA_AUDIT_TRAIL';
 
VIEW_NAME                      TEXT
------------------------------ --------------------------------------------------------------------------------
DBA_AUDIT_TRAIL                select spare1           /* OS_USERNAME */,
                                      userid           /* USERNAME */,
                                      userhost         /* USERHOST */,
                                      terminal         /* TERMINAL */,
                                      cast (           /* TIMESTAMP */
                                          (from_tz(ntimestamp#,'00:00') at local) as date),
                                      obj$creator      /* OWNER */,
                                      obj$name         /* OBJECT_NAME */,
                                      aud.action#      /* ACTION */,
                                      act.name         /* ACTION_NAME */,
                                      new$owner        /* NEW_OWNER */,
                                      new$name         /* NEW_NAME */,
                                      decode(aud.action#,
                                             108 /* grant  sys_priv */, null,
                                             109 /* revoke sys_priv */, null,
                                             114 /* grant  role */, null,
                                             115 /* revoke role */, null,
                                             auth$privileges)
                                                       /* OBJ_PRIVILEGE */,
                                      decode(aud.action#,
                                             108 /* grant  sys_priv */, spm.name,
                                             109 /* revoke sys_priv */, spm.name,
                                             null)
                                                       /* SYS_PRIVILEGE */,
                                      decode(aud.action#,
                                             108 /* grant  sys_priv */, substr(auth$privileges,1,1),
                                             109 /* revoke sys_priv */, substr(auth$privileges,1,1),
                                             114 /* grant  role */, substr(auth$privileges,1,1),
                                             115 /* revoke role */, substr(auth$privileges,1,1),
                                             null)
                                                       /* ADMIN_OPTION */,
                                      auth$grantee     /* GRANTEE */,
                                      decode(aud.action#,
                                             104 /* audit   */, aom.name,
                                             105 /* noaudit */, aom.name,
                                             null)
                                                       /* AUDIT_OPTION  */,
                                      ses$actions      /* SES_ACTIONS   */,
                                      cast((from_tz(cast(logoff$time as timestamp),'00:00') at local) as date)
                                                       /* LOGOFF_TIME   */,
                                      logoff$lread     /* LOGOFF_LREAD  */,
                                      logoff$pread     /* LOGOFF_PREAD  */,
                                      logoff$lwrite    /* LOGOFF_LWRITE */,
                                      decode(aud.action#,
                                             104 /* audit   */, null,
                                             105 /* noaudit */, null,
                                             108 /* grant  sys_priv */, null,
                                             109 /* revoke sys_priv */, null,
                                             114 /* grant  role */, null,
                                             115 /* revoke role */, null,
                                             aud.logoff$dead)
                                                        /* LOGOFF_DLOCK */,
                                      comment$text      /* COMMENT_TEXT */,
                                      sessionid         /* SESSIONID */,
                                      entryid           /* ENTRYID */,
                                      statement         /* STATEMENTID */,
                                      returncode        /* RETURNCODE */,
                                      spx.name          /* PRIVILEGE */,
                                      clientid          /* CLIENT_ID */,
                                      auditid           /* ECONTEXT_ID */,
                                      sessioncpu        /* SESSION_CPU */,
                                      from_tz(ntimestamp#,'00:00') at local,
                                                                  /* EXTENDED_TIMESTAMP */
                                      proxy$sid                      /* PROXY_SESSIONID */,
                                      user$guid                           /* GLOBAL_UID */,
                                      instance#                      /* INSTANCE_NUMBER */,
                                      process#                            /* OS_PROCESS */,
                                      xid                              /* TRANSACTIONID */,
                                      scn                                        /* SCN */,
                                      to_nchar(substr(sqlbind,1,2000))      /* SQL_BIND */,
                                      to_nchar(substr(sqltext,1,2000))      /* SQL_TEXT */,
                                      obj$edition                   /* OBJ_EDITION_NAME */,
                                      dbid                                      /* DBID */
                               from sys.aud$ aud, system_privilege_map spm, system_privilege_map spx,
                                    STMT_AUDIT_OPTION_MAP aom, audit_actions act
                               where   aud.action#     = act.action    (+)
                                 and - aud.logoff$dead = spm.privilege (+)
                                 and   aud.logoff$dead = aom.option#   (+)
                                 and - aud.priv$used   = spx.privilege (+)
 
 
SQL> 
 

从如下可以看到,aud$是大表,其它表的数据量都比较小

SQL> 
SQL> select count(*) from system_privilege_map;
 
  COUNT(*)
----------
       209
 
SQL> select count(*) from system_privilege_map;
 
  COUNT(*)
----------
       209
 
SQL> select count(*) from STMT_AUDIT_OPTION_MAP;
 
  COUNT(*)
----------
       271
 
SQL> select count(*) from audit_actions;
 
  COUNT(*)
----------
       181
SQL> select BYTES/1024/1204/1024 from user_segments where SEGMENT_NAME='AUD$';
 
BYTES/1024/1204/1024
--------------------
          31.0888704

将aud$审计表备份后truncate,这样查询就会快很多

create table aud$_20210714 tablespace TS_AUDIT  as select * from aud$;
--备份aud$
 
--然后清空原表
truncate table aud$;

参考:

  1. https://blog.csdn.net/cimeng0072/article/details/100286827

 

标签:audit,aud,dba,sys,logoff,SQL,null,name
From: https://www.cnblogs.com/jijm123/p/18373175

相关文章

  • 多模态学习之论文阅读:《Systematic comparison of deep-learning based fusion strate
    《Systematiccomparisonofdeep-learningbasedfusionstrategiesfor multi-modal ultrasoundindiagnosisof liver cancer》 -2024.10 NEUROCOMPUTING 影响因子7.9(一)多模态数据构成研究设计了“病变配对”方法来构建数据集,包括B模式超声、剪切波弹性成像(SWE)和......
  • 从源码分析 SpringBoot 的 LoggingSystem → 它是如何绑定日志组件的
    开心一刻今天心情不好,想约哥们喝点我:心情不好,给你女朋友说一声,来我家,过来喝点哥们:行!我给她说一声我:你想吃啥?我点外卖哥们:你俩定吧,我已经让她过去了我:???我踏马让你过来!和她说一声哥们:哈哈哈,我踏马寻思让她过去呢前情回顾SpringBoot2.7霸王硬上弓Logback1.3→不甜但解渴......
  • CVSS(Common Vulnerability Scoring System)打分规则解读
    CVSS(CommonVulnerabilityScoringSystem)提供了一种根据漏洞的主要特征进行打分,反映其严重性的方法。CVSS已成为被广泛使用的标准。下面是CVSS3.1版本计算器的界面截图,本文对BaseScore的打分标准做解读,并提供一些建议。同时会对每个维度选项做翻译。 AttackVector攻击向......
  • SysML理论知识
    概述由来长期以来系统工程师使用的建模语言、工具和技术种类很多,如行为图、IDEF0、N2图等,这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的标准的建模语言,从而限制系统工程师和其他学科之间关于系统需求和设计的有效通信,影响系统工程......
  • KingbaseES V8R6备份恢复案例之---sys_backup.conf配置异常初始化失败
    案例说明:KingbaseESV8R6数据库执行sys_backup.shinit初始化时,出现“ERROR:cannotconnecttheprimarynode...."错误,初始化失败。适用版本:KingbaseESV8R6一、问题现象如下所示,执行sys_backup.shinit时,出现以下错误”ERROR:cannotconnecttheprimarynode..."。[......
  • Easysearch x 《黑神话悟空》有奖征文获奖结果公示
    随着《黑神话:悟空》游戏的正式发售,我们INFINILabs组织的Easysearch有奖征文大赛也圆满落幕。本次征文活动自启动以来,收到了众多创作者的热情投稿。在此,我们衷心感谢每一位参与活动的作者,是你们的才华和热情让这次征文活动异彩纷呈。经过专业评审团的认真评选,最终确定了以下......
  • CSCI 4210 — Operating Systems
    CSCI 4210 — Operating SystemsSimulation Project Part II (document version 1.0)Processes and CPU SchedulingOverview•  This assignment is due in Submitty by 11:59PM EST on Thursday,August 15, 2024• Thisprojectistobecom......
  • Linux---systemctl常用命令以及service文件配置
    简介1.1什么是systemctl命令        systemctl是一个在Linux系统中用于管理系统服务的命令。它是systemd这个初始化系统的一部分,通过控制和监视系统的服务和单位文件,提供了对系统进程的强大管理功能。1.2systemctl的作用和用途        systemctl可以用于......
  • Oracle 的DBA有哪些权限
    Oracle数据库的**DBA(数据库管理员)**拥有全部特权,是Oracle数据库系统最高权限的用户。DBA的权限包括但不限于:1.创建和管理数据库结构:DBA可以创建、修改和删除数据库中的所有对象,如表、索引、视图等;2.管理其他用户DBA有权创建、修改、锁定/解锁、删除用户,以及分配、回收用......
  • 【Oracle点滴积累】解决ORA-06183 unable to extend index SYS.WRH$_SYSMETRIC_HISTOR
    广告位招租!知识无价,人有情,无偿分享知识,希望本条信息对你有用!今天和大家分享ORA-06183unabletoextendindexSYS.WRH$_SYSMETRIC_HISTORY_INDEXpartition错误的解决方法,本文仅供参考,谢谢!Solution:SELECTTABLESPACE_NAME,FILE_NAME,BYTES/1024/1024FILE_SIZE,AUTO......