生产环境经常遇到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视图
[code]select USER_ID, SQL_OPCODE, XID, SAMPLE_TIME,MODULE,MACHINE
from v$active_session_history
where SQL_OPCODE=10
no rows selected[/code]
查看dba_hist_active_sess_history视图:
[code]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[/code]
查看到10点钟ADMIN用户通过PL/SQL Developer连接到数据库做了drop index的操作。
如果涉及的时间较久,可能需要使用logmnr。
其中大部分影响较大的是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视图
[code]select USER_ID, SQL_OPCODE, XID, SAMPLE_TIME,MODULE,MACHINE
from v$active_session_history
where SQL_OPCODE=10
no rows selected[/code]
查看dba_hist_active_sess_history视图:
[code]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[/code]
查看到10点钟ADMIN用户通过PL/SQL Developer连接到数据库做了drop index的操作。
如果涉及的时间较久,可能需要使用logmnr。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




