oracle中表数据更新提交后自动被还原的原因查找

  今天接到某现场实施同事的远程求助,说是某张表的数据通过plsql更新提交后,数据还是原来的旧数据,需要帮忙查看原因!一开始我是不信的,除非有触发器存在导致数据更新后被还原,但是查看dba_source后没有找到相关触发器,排除触发器的原因,并且其他的DML操作一切正常。后来经过某位老哥的提醒,最终找出原因,下面请看具体过程👇

问题现象:

排查思路:

  • 查找出发器
    在这里插入图片描述查看text后确认没有相关业务用户的触发器!但是前面的现象确实commit后查询还是原先的数据,那改怎么办呢❓

这里我们用到oracle的表级审计

  1. 开启审计参数
SQL> show parameter audit
NAME                                         TYPE       VALUE
----------------------------------------------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/mydb/adump
audit_sys_operations                boolean   FALSE
audit_syslog_level                 string
audit_trail                                string     NONE
SQL> alter system set audit_trail=db_extended scope=spfile;

2. 重启数据库

SQL> shutdown immediate;
SQL> startup
ORACLE instance started.
  
Total System  Global  Area  599785472 bytes
Fixed  Size               2085776 bytes
Variable  Size                 192941168 bytes
Database  Buffers      398458880 bytes
Redo Buffers                 6299648 bytes
Database  mounted.
Database  opened.
SQL> show parameter audit
  
NAME                                         TYPE       VALUE
----------------------------------------------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/mydb/adump
audit_sys_operations                    boolean   FALSE
audit_syslog_level                 string
audit_trail                                string     DB, EXTENDED

3. 设置对表进行审计

SQL> audit all on ZFXFZB.XSJBXXB by access;

重复上述跟新操作

SQL> update zfxfzb.xsjbxxb set csrq='2001-1-01' where xh='202104030219';
SQL> select csrq from zfxfzb.xsjbxxb where xh='202104030219';

结果与预期一致,crsq字段还是没有被更新成功

4. 查询审计记录

SELECT  USERNAME,
       USERHOST,
       TIMESTAMP ,
       OWNER,
       OBJ_NAME,
       ACTION_NAME,
       SQL_TEXT
  FROM  DBA_AUDIT_TRAIL
  WHERE  OBJ_NAME= 'XSJBXXB' and action_name ='UPDATE'
  ORDER  BY  TIMESTAMP ;

在这里插入图片描述从审计日志能明显发现在我们执行了update操作之后,主机zhxy-zfauth也立马执行了update操作。在提交执行sql和主机名给到现场同事后,立马发现这是由数据中心交换服务器产生的相关操作,在修改数据中心程序后,该表能被正常更新💕💕

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eason_hyj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值