ITPub博客

首页 > 数据库 > Oracle > oracle追踪误操作DDL

oracle追踪误操作DDL

Oracle 作者:season0891 时间:2015-03-12 14:14:22 0 删除 编辑
生产环境经常遇到DROP、TRUNCATE、DELETE等误操作,
其中大部分影响较大的是DDL,11.2 设置ENABLE_DDL_LOGGING为true后,alert中会记录DDL操作的语句,但是没有详细信息:
alter system set enable_ddl_logging = TRUE    sid='*' scope=spfile;
12C中的开启ENABLE_DDL_LOGGING后,会专门有一个日志文件记录详细的信息。
$ORACLE_BASE/diag/rdbms/dbname/log ddl

另外可以通过v$active_session_history、dba_hist_active_sess_history历史视图中的SQL_OPCODE字段定位:
SQL_OPCODE    12 为DROP TABLE  10为 DROP INDEX、85为TRUNCATE TABLE、86为TRUNCATE CLUSTER
关于SQL_OPCODE详细参考官方文档:
http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2088.htm#i1414383

下面是一个业务时间业务人员误删索引跟踪的案例:
drop index的sql_opcode为10,首先查看v$active_session_history视图
select USER_ID, SQL_OPCODE, XID, SAMPLE_TIME,MODULE,MACHINE
from v$active_session_history
where SQL_OPCODE=10


no rows selected

查看dba_hist_active_sess_history视图:
col SAMPLE_TIME for a30
col MODULE for a20
col MACHINE for a20
select USER_ID, SQL_OPCODE, XID, SAMPLE_TIME,MODULE,MACHINE from dba_hist_active_sess_history where SQL_OPCODE=10



   USER_ID SQL_OPCODE XID              SAMPLE_TIME                    MODULE               MACHINE
---------- ---------- ---------------- ------------------------------ -------------------- --------------------
        38         10                  19-MAR-14 10.08.35.429 AM      PL/SQL Developer     WORKGROUP\??-???
        38         10                  19-MAR-14 10.08.25.354 AM      PL/SQL Developer     WORKGROUP\??-???


SQL> select username from dba_users where user_id=38;

USERNAME
------------------------------
ADMIN

查看到10点钟ADMIN用户通过PL/SQL Developer连接到数据库做了drop index的操作。
如果涉及的时间较久,可能需要使用logmnr。

http://www.orasql.com/blog/archives/2014/09/05/tracking_drop_op.htm

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/90618/viewspace-1457167/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    790
  • 访问量
    2098006