oracle追蹤誤操作DDL
生產環境經常遇到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詳細參考官方文件:
下面是一個業務時間業務人員誤刪索引跟蹤的案例:
drop index的sql_opcode為10,首先檢視v$active_session_history檢視
檢視dba_hist_active_sess_history檢視:
檢視到10點鐘ADMIN使用者透過PL/SQL Developer連線到資料庫做了drop index的操作。
如果涉及的時間較久,可能需要使用logmnr。
http://www.orasql.com/blog/archives/2014/09/05/tracking_drop_op.htm
其中大部分影響較大的是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詳細參考官方文件:
下面是一個業務時間業務人員誤刪索引跟蹤的案例:
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
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
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部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-1457167/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 12C中關於出現DDL誤操作追責小工具
- SQL追蹤和事件追蹤SQL事件
- 追蹤mysql操作記錄時間1.MySql
- 深入理解 JavaScript 錯誤和堆疊追蹤JavaScript
- Oracle 觸發器 限制DDL操作Oracle觸發器
- JavaScript 錯誤處理和堆疊追蹤淺析JavaScript
- 日誌追蹤
- 程式碼追蹤
- 一個ORACLE死鎖問題的追蹤Oracle
- Oracle高可用環境之DDL操作Oracle
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(drop)Oracle資料庫
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)Oracle資料庫
- DB2 DDL操作引起的GoldenGate錯誤DB2Go
- OpenTelemetry分散式追蹤分散式
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- Oracle DBLINK 抽數以及DDL、DML操作Oracle
- 轉摘_壇友_oracle trace event追蹤事件完全列表Oracle事件
- 微服務追蹤SQL(支援Isto管控下的gorm查詢追蹤)微服務SQLGoORM
- 如何追蹤laravel動態Laravel
- 如何追蹤Java動態Java
- 如何追蹤vue動態Vue
- 如何追蹤Go動態Go
- 追蹤解析 Disruptor 原始碼原始碼
- Debug追蹤eclipseEclipse
- 路由追蹤命令詳解路由
- go的鏈路追蹤Go
- 部署Zipkin分散式效能追蹤日誌系統的操作記錄分散式
- 限制DDL操作(四)
- 限制DDL操作(三)
- 限制DDL操作(二)
- 限制DDL操作(一)
- MySQL DDL操作表MySql
- Oracle12c 新特性 - log記錄DDL操作Oracle
- 搭建資料追蹤系統
- 使用 CSS 追蹤使用者CSS
- 如何追蹤Python動態Python
- 如何追蹤laravel動態<二>Laravel
- 追蹤解析 ThreadPoolExecutor 原始碼thread原始碼