您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

真实案例:Oracle数据库中表插入操作的审计

2024/5/6 21:10:19发布23次查看
在oracle 10g中某个用户下表object_id_factory 的记录再次出现重复。这是一张字典表,用于生成某些表的记录主键值。重复的键值导
在oracle 10g中某个用户下表object_id_factory 的记录再次出现重复。这是一张字典表,用于生成某些表的记录主键值。重复的键值导致了某些业务操作不能正常进行。
该问题以前出现过一次。通过logminer 也没能找到操作的应用,因此我们采用audit 技术来处理这个问题。
logminer的使用方法请见此文。链接: 或
1.  解决过程
在oracle 10g 数据库中,此表的记录出现异常,无故增加了某条记录。我们使用logminer 无法查出是什么应用程序所为。因此,我们启用审计功能来捕捉错误的操作来解决这个问题。
oracle 的审计功能是一个高级选项,默认是不开放的,需要修改审计类初始化参数来能使用。
第一步,,检查审计类参数
sql> show parameter audit
name                                  type         value
------------------------------------ ----------- ------------------------------
audit_file_dest                       string       /u01/app/oracle/admin/zxdb/adu
                                                  mp
audit_sys_operations                  boolean      true
audit_syslog_level                    string
audit_trail                           string       db
如果audit_trail 是空,则需要修改并重启实例使之生效后才能继续进行对象的审计操作。
调整审计结果的存储表aud$ 的表空间。原来是system 表空间,所以需要迁移到另外的表空间上,防止system 表空间暴涨不好收场。
sql> alter table sys.aud$ move tablespace users;
第二步,设置对象操作的审计
审计linuxidc 用户下表object_id_factory 每一次访问的插入操作,不管成功或失败,都记录下来;
审计 linuxidc 用户下表object_id_factory 每一个会话的更新操作,不管成功或失败,都记录下来;
audit insert on linuxidc .object_id_factory by access;
audit update on linuxidc .object_id_factory; --by session    [ whenever [ not ] successful ]  都可以省略掉。
第三步,检查哪些对象、哪些操作、哪些权限设置了审计
select * from dba_stmt_audit_opts;
select * from dba_priv_audit_opts;
select * from dba_obj_audit_opts;
如这里 linuxidc 用户下表object_id_factory 设置了insert 和update 的操作的审计
sql> select * from dba_obj_audit_opts;
owner                           object_name                     object_type        alt    aud    com    del    gra    ind    ins    loc    ren    sel    upd    ref exe  
cre    rea    wri    fbk
------------------------------ -------------------
linuxidc                            object_id_factory               table              -/-    -/-    -/-    -/-    -/-    -/-    a/a    -/-    -/-    -/-    s/s    -/- -/-  
-/-    -/-    -/-    -/-
第四步,使用noaudit 取消对象操作的审计
noaudit insert on linuxidc .object_id_factory by access;
noaudit update on linuxidc .object_id_factory;
如果审计目标已经实现,需要及时关闭审计设置。这点很重要,需在实现过程中予以注意。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product