首页 > 其他分享 >[20241230]21c HIST_HEAD$ UNIFIED AUDIT.txt

[20241230]21c HIST_HEAD$ UNIFIED AUDIT.txt

时间:2024-12-31 20:52:45浏览次数:1  
标签:AUDIT UNIFIED HEAD 12 NAME -- 2024 where select

[20241230]21c HIST_HEAD$ UNIFIED AUDIT.txt

--//看标题有点奇怪,生产系统19c遇到的问题,在我的测试环境21c也存在,就是访问ALL_TAB_COLS,ALL_TAB_COLUMNS视图时会访问
--//HIST_HEAD$表,会触发审计记录相关信息,有点奇怪,做一个记录并分析。

1.环境:
SYS@book01p> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.问题提出:
--//首先问题的发现有点偶然,我检查生产系统发现sys.aud$存在大量记录,文件已经达到342M。按照道理12c开始使用UNIFIED AUDIT,
--//sys.aud$就算有记录,应该也很少信息。

SYS@book01p> SELECT * FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
PARAMETER        VALUE CON_ID
---------------- ----- ------
Unified Auditing FALSE      0
--//难道没有启用吗?但是确实有记录在AUDSYS.AUD$UNIFIED在表中.先不管这个问题.问题先集中在sys.aud$.
--//我看了生产环境与19c的情况一样。

SYS@book01p>  select obj$name,count(*) from sys.aud$ group by obj$name ;
OBJ$NAME                         COUNT(*)
------------------------------ ----------
SCOTT                                  12
HIST_HEAD$                             79
--//注:我的测试环境使用较少,出现HIST_HEAD$的次数也很少(生产系统大部分都是该信息)。
--//我看了生产系统的AUDSYS.AUD$UNIFIED,我发现出现问题集中在1台机器,应该是开发使用的,program执行的是DBeaver的相关程序。
--//网上检索发现DBeaver,软件简介如下:

--//DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB,
--//Derby, 以及其他兼容 JDBC 的数据库。
--//DBeaver 提供一个图形界面用来查看数据库结构、执行 SQL 查询和脚本,浏览和导出数据,处理 BLOB/CLOB 数据,修改数据库结构
--//等等。

--//使用它大量的涉及ALL_TAB_COLS视图的访问,导致审计记录许多信息。

SYS@book01p> select sql_text ,sql_binds c30 from  AUDSYS.AUD$UNIFIED  where obj_name='HIST_HEAD$' and rownum=1;
SQL_TEXT                                                     C30
------------------------------------------------------------ ------------------------------
SELECT COLUMN_NAME, DATA_TYPE, NUM_DISTINCT, DENSITY, NUM_NU  #1(4):DEPT #2(5):SCOTT
LLS, NUM_BUCKETS, LAST_ANALYZED, AVG_COL_LEN, RAWTOHEX(LOW_V
ALUE) LOW, RAWTOHEX(HIGH_VALUE) FROM ALL_TAB_COLUMNS WHERE T
ABLE_NAME = :B2 AND OWNER = :B1
--//基本都是类似的语句。也就是如果开发访问ALL_TAB_COLUMNS,ALL_TAB_COLS视图涉及HIST_HEAD$表就会触发审计记录相关信息。
--//在我的测试环境也是类似的情况,例子:
--//在cdb层面查询:
SYS@book> select * from CDB_OBJ_AUDIT_OPTS where object_name='HIST_HEAD$';
no rows selected
--//并没有审计HIST_HEAD$表,为什么出现这样的情况。

SYS@book01p> select * from hist_head$ where rownum=1;
select * from hist_head$ where rownum=1
              *
ERROR at line 1:
ORA-01031: insufficient privileges
--//以前遇到类似问题。

SYS@book01p> select obj# from hist_head$ where rownum=1;
      OBJ#
----------
         4

SYS@book01p> select sessionid,sysdate,event_timestamp,sql_text from  AUDSYS.AUD$UNIFIED  where event_timestamp>=trunc(sysdate);
     SESSIONID SYSDATE             EVENT_TIMESTAMP               SQL_TEXT                               
-------------- ------------------- ----------------------------- ---------------------------------------
    4039442264 2024-12-30 17:59:14 2024-12-30 09:41:47.801199    select * from hist_head$ where rownum=1
    4039442264 2024-12-30 17:59:14 2024-12-30 09:41:58.583453    select * from hist_head$ where rownum=1
--//EVENT_TIMESTAMP记录的UTC时钟。
--//视乎很奇怪该session仅仅记录2次,改写成select count(*) from hist_head$;并没有记录,到这里突然反应过来,执行报错审计才
--//有记录。
--//参考[20240826]奇怪ORA-01031 insufficient privileges报错.txt,当时的测试如下:
select
OBJ#
,COL#
,BUCKET_CNT
,ROW_CNT
,CACHE_CNT
,NULL_CNT
,TIMESTAMP#
,SAMPLE_SIZE
--,MINIMUM
--,MAXIMUM
,DISTCNT
--,LOWVAL
--,HIVAL
,DENSITY
,INTCOL#
,SPARE1
,SPARE2
,AVGCLN
,SPARE3
,SPARE4
,MINIMUM_ENC
,MAXIMUM_ENC
from hist_head$ ;
--//当时的测试确定只要不包括这4个字段,查询不存在问题,涉及MINIMUM,MAXIMUM,LOWVAL,HIVAL就会报错。

SELECT COLUMN_NAME
      ,DATA_TYPE
      ,NUM_DISTINCT
      ,DENSITY
      ,NUM_NULLS
      ,NUM_BUCKETS
      ,LAST_ANALYZED
      ,AVG_COL_LEN
      ,RAWTOHEX (LOW_VALUE) LOW
      ,RAWTOHEX (HIGH_VALUE)
  FROM ALL_TAB_COLUMNS
 WHERE TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT';
--//执行成功,输出略。

SELECT COLUMN_NAME,LOW_VALUE from ALL_TAB_COLUMNS  WHERE  TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT';

SYS@book01p> SELECT COLUMN_NAME,LOW_VALUE c30 from ALL_TAB_COLUMNS  WHERE  TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT';
COLUMN_NAME                    C30
------------------------------ ------------------------------
DEPTNO                         C10B
DNAME                          4143434F554E54494E47
LOC                            424F53544F4E
--//执行是成功的,但是实际上在访问hist_head$有问题,显示不出来!!

SELECT COLUMN_NAME from ALL_TAB_COLUMNS  WHERE  TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT'
~~~~~~~~~~

SYS@book01p> select sessionid,sysdate,event_timestamp,sql_text from  AUDSYS.AUD$UNIFIED  where event_timestamp>=trunc(sysdate)-8/24;

     SESSIONID SYSDATE             EVENT_TIMESTAMP               SQL_TEXT
-------------- ------------------- ----------------------------- ------------------------------------------------------------
    4039442264 2024-12-30 18:33:35 2024-12-30 09:41:47.801199    select * from hist_head$ where rownum=1
    4039442264 2024-12-30 18:33:35 2024-12-30 09:41:58.583453    select * from hist_head$ where rownum=1
    1494506491 2024-12-30 18:33:35 2024-12-30 10:12:37.135743    select * from hist_head$ where rownum=1
    1622741797 2024-12-30 18:33:35 2024-12-30 10:23:26.431348    SELECT COLUMN_NAME
                                                                       ,DATA_TYPE
                                                                       ,NUM_DISTINCT
                                                                       ,DENSITY
                                                                       ,NUM_NULLS
                                                                       ,NUM_BUCKETS
                                                                       ,LAST_ANALYZED
                                                                       ,AVG_COL_LEN
                                                                       ,RAWTOHEX (LOW_VALUE) LOW
                                                                       ,RAWTOHEX (HIGH_VALUE)
                                                                   FROM ALL_TAB_COLUMNS
                                                                  WHERE TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT'

    4143611800 2024-12-30 18:33:35 2024-12-30 10:33:18.828871    SELECT COLUMN_NAME,LOW_VALUE from ALL_TAB_COLUMNS  WHERE TAB
                                                                 LE_NAME = 'DEPT' AND OWNER = 'SCOTT'

    4143611800 2024-12-30 18:33:35 2024-12-30 10:33:31.099445    SELECT COLUMN_NAME,LOW_VALUE c30 from ALL_TAB_COLUMNS  WHERE
                                                                  TABLE_NAME = 'DEPT' AND OWNER = 'SCOTT'

--//下划线的语句没有记录,没有访问涉及的相关4个字段。
--//hist_head$只要涉及MINIMUM,MAXIMUM,LOWVAL,HIVAL4个字段,审计就会有记录。

--//相关视图最终访问的是视图all_tab_cols_v$,该视图存在如下内容:
...
,CASE WHEN SYS_OP_DV_CHECK ( o.name ,o.owner#) = 1 THEN h.lowval ELSE NULL END
,CASE WHEN SYS_OP_DV_CHECK ( o.name ,o.owner#) = 1 THEN h.hival ELSE NULL END

--//继续昨天的测试:
SYS@book01p> select LOW_VALUE,HIGH_VALUE from all_tab_cols_v$ where rownum<=1;
LOW_VALUE  HIGH_VALUE
---------- ----------
C105       C3084527

--//执行并不报错,但是审计有记录:
SYS@book01p> select sessionid,sysdate,event_timestamp,sql_text from  AUDSYS.AUD$UNIFIED  where event_timestamp>=trunc(sysdate)-8/24;

     SESSIONID SYSDATE             EVENT_TIMESTAMP               SQL_TEXT
-------------- ------------------- ----------------------------- ------------------------------------------------------------
     296253975 2024-12-31 08:48:54 2024-12-31 00:47:56.708845    select LOW_VALUE,HIGH_VALUE from all_tab_cols_v$ where rownum<=1

SYS@book01p> select owner,table_name,COLUMN_NAME,DENSITY from all_tab_cols_v$ where rownum<=1;
OWNER                          TABLE_NAME                     COLUMN_NAME                       DENSITY
------------------------------ ------------------------------ ------------------------------ ----------
SYS                            TAB$                           TAB#                           .058823529

SYS@book01p> select sessionid,sysdate,event_timestamp,sql_text from  AUDSYS.AUD$UNIFIED  where event_timestamp>=trunc(sysdate)-8/24;
     SESSIONID SYSDATE             EVENT_TIMESTAMP               SQL_TEXT
-------------- ------------------- ----------------------------- ------------------------------------------------------------
     296253975 2024-12-31 08:48:54 2024-12-31 00:47:56.708845    select LOW_VALUE,HIGH_VALUE from all_tab_cols_v$ where rownum<=1
--//只要不涉及hist_head$基表的LOWVAL,HIVAL字段的相关视图,查询审计没有记录。

SYS@book01p> select user# from user$ where name='SYS';
     USER#
----------
         0

--//执行如下:
select
h.obj#
,CASE WHEN SYS_OP_DV_CHECK ( 'TAB$' ,0) = 1 THEN h.obj# else null end  n10
--,CASE WHEN SYS_OP_DV_CHECK ( 'TAB$' ,0) = 1 THEN h.lowval ELSE NULL END low
--,CASE WHEN SYS_OP_DV_CHECK ( 'TAB$' ,0) = 1 THEN h.hival ELSE NULL END high
from hist_head$ h where rownum=1;

--//只要打开注解就报ORA-01031: insufficient privileges错,结果不再贴出。

3.小结:
--//总之找到问题的出处,但是不知道如何产生,为什么出现这样的现象。实际上只要19c,21c的版本,查询审计都应该发现我遇到的情况。
--//也就是审计会记录OBJ$NAME=hist_head$的相关信息,除非不访问相关hist_head$的相关视图.



标签:AUDIT,UNIFIED,HEAD,12,NAME,--,2024,where,select
From: https://www.cnblogs.com/lfree/p/18644769

相关文章

  • Yolo11改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用
    摘要论文介绍本文介绍了一种名为DynamicHead的模块,该模块旨在通过注意力机制统一目标检测头部,以提升目标检测的性能。论文详细阐述了DynamicHead的工作原理,并通过实验证明了其在COCO基准测试上的有效性和效率。创新点DynamicHead模块的创新之处在于它首次尝试在一个统一......
  • 项目报 OutOfMemoryError 、GC overhead limit exceeded 问题排查以及解决思路实战
    项目报OutOfMemoryError、GCoverheadlimitexceeded问题排查以及解决思路实战前言:问题现象描述:1,生产环境有个定时任务,没有初始化告警数据【告警数据量为1000多个】2,其他定时任务执行正常3,查询日志到定时任务执行之前有日志打印4,手动触发补偿告警定时任务接口报Out......
  • Audition 2025 for Mac Au音频编辑软件
    Mac分享吧文章目录Audition2025forMacAu音频编辑软件效果图展示一、Audition2025Au音频编辑软件Mac电脑版——v25.0⚠️注意事项:1️⃣:下载软件2️⃣:安装软件2.1安装AntiCC_5.9_简化版,操作步骤如下:2.2安装软件Au,步骤如下:1、安装Install,运行软件,进行安装1、安装补丁,运......
  • 【深度学习|Transformer学习】 多头自注意力机制(Multi-Head Self-Attention)解析,多头自
    【深度学习|Transformer学习】多头自注意力机制(Multi-HeadSelf-Attention)解析,多头自注意力机制中的QKV分别指的是什么?各有什么作用?你知道吗?【深度学习|Transformer学习】多头自注意力机制(Multi-HeadSelf-Attention)解析,多头自注意力机制中的QKV分别指的是什么?各有什么作......
  • EFI Boot Editor 是一个用于管理和编辑计算机引导加载程序的工具,尤其在基于 UEFI (Uni
    EFIBootEditor是一个用于管理和编辑计算机引导加载程序的工具,尤其在基于UEFI(UnifiedExtensibleFirmwareInterface)固件的系统上,EFI(或称为UEFI)引导加载器起着至关重要的作用。它允许用户通过图形界面或命令行界面对启动项进行定制、编辑、删除、添加等操作。以下是关于E......
  • 2、标准PE头 IMAGE_FILE_HEADER
    2、标准PE头IMAGE_FILE_HEADER这里看过了PE初始的文章,了解了ImageNtHead结构体的构成,我们就可以知道。IMAGE_FILE_HEADER文件的位置了,。其实她的位置就是再IMAGE_NT_HEAD的第二个成员。代码如下typedefstruct_IMAGE_NT_HEADERS{DWORDSignature;IMAGE_FILE_HEADER......
  • 3、节表 IMAGE_SECTION_HEADERS
    3、节表IMAGE_SECTION_HEADERS节表是IMAGE_SECTION_HEADER,首先看一下C语言结构体中是什么样子的。typedefstruct_IMAGE_SECTION_HEADER{BYTEName[IMAGE_SIZEOF_SHORT_NAME];union{DWORDPhysicalAddress;DWORDVirtualSize;......
  • C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==head
      1. “修改了当前程序的vc运行库配置,问题解决(1)修改:项目-属性-配置属性-C/C++-代码生成-运行库,将其改为“多线程调试(/MTd)”。”其中:【多线程/MT】【多线程调试/MTd】-----【多线程DLL/MD(默认)】-------【多线程调试DLL/MDd】 /MT、/MTd、/MD、/MDd什么......
  • HTML开发 - head 标签中 meta 标签功能解析
    什么是meta标签<meta>标签是HTML中用于定义网页的元数据(metadata)的元素,它并不会直接在浏览器中显示出来。<meta>标签通常位于<head>标签内,主要用来提供网页的一些信息或说明,这些信息有助于搜索引擎优化(SEO)、页面内容设置、字符编码等meta标签的常见用途1.定义字符......
  • docker启动ES增加elasticsearch-header访问,解决跨域问题
    在做一件什么事情:docker部署ES服务,希望增加可视化工具。于是选择了一种简单的方式,增加elasticsearch-header组件访问。这样只需要在浏览器上输入地址可以直接访问。遇到了什么问题:提示跨域访问问题分析:服务器端放开访问限制解决方案:增加跨域访问配置脚本如下:点击查看代......