今天,我係統中有人更新了意外的語句。所以這讓我的系統運行不正確。 現在,我想看看日誌誰(或哪個會話)做到了。我可以在AWR報告中找到它嗎?如果我能在AWR報告中找到它,那麼它特別在哪裏? 非常感謝!oracle - 會話執行指定的查詢
0
A
回答
1
這種變化可能有很多來源,取決於它是如何製造的。只有最後一個選項Log Miner纔會給你所有你想要的東西。但它也需要最大的努力。有些來源不會告訴你會話,但也許只是看到相關的SQL將足以找出誰做的。
- V $ SQL - 所有SQL語句去那裏,但是他們老化的共享池,所以你需要快速搜索。如果他們使用了獨特的查詢,您可能可以通過類似
select * from v$sql where lower(sql_text) like '%table_name%';
的方式找到它。 - AWR - 您可能能夠在
select * from dba_hist_sqltext where lower(sql_text) like '%table_name%';
中找到SQL,如果幸運的話,您可以從select * from dba_hist_active_sess_history where sql_id = '<sql id>';
中找到一些會話信息。只有活動會話歷史記錄樣本活動,如果查詢運行速度非常快,那麼很可能不會存在。 - 閃回查詢 - 如果幸運的話UNDO仍在,您可以從閃回查詢中看到它是如何改變的。這可能會給你準確的時間,以及改變了什麼。
select VERSIONS_STARTSCN, VERSIONS_STARTTIME, VERSIONS_ENDSCN, VERSIONS_ENDTIME, VERSIONS_XID, VERSIONS_OPERATION, your_table.* from your_table versions between scn minvalue and maxvalue;
- 登錄礦工 - 我沒有使用過這個,但據說它是這項工作的完美工具。在the documentation閱讀更多關於它的信息。
+0
我發現V $ SQL是最適合我的情況。但是,我無法找到誰或哪個會話執行查詢。也許是服務欄? –
+0
該信息未存儲在V $ SQL中。當它執行時,你可以在V $ SESSION中找到SQL_ID。但通常這類信息只存儲在REDO日誌中,這是Log Miner讀取的內容。它*可能*在其他一些來源中,但只有運氣。 Oracle不能將所有這些信息記錄兩次。 –
相關問題
- 1. 每個oracle會話執行的查詢
- 2. 由會話執行的Oracle查詢
- 3. Oracle查詢執行計劃
- 4. Oracle pro * c指標變量與查詢執行中的NVL
- 5. oracle查詢執行中的問題
- 6. Oracle的查詢執行計數
- 7. 在使用DbContext的Oracle會話開始時運行sql查詢
- 8. Mysqli查詢不會執行
- 9. osql不會執行查詢
- 10. MySQLi查詢不會執行
- 11. 執行會話超時指示?
- 12. 執行會話
- 13. Oracle SQL - SELECT查詢鎖定索引並阻止DML會話
- 14. 執行Oracle查詢時出錯
- 15. Oracle - 有條件地執行查詢
- 16. Oracle優化器執行查詢
- 17. 無法使用Oracle ODBC執行查詢
- 18. oracle sql查詢執行順序
- 19. 執行多於1列Oracle查詢JOIN
- 20. Oracle - 導出查詢執行時間
- 21. 在where子句中執行Oracle查詢
- 22. Oracle:執行查詢時出錯
- 23. javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法用oracle執行查詢
- 24. Oracle錯誤而查詢執行:
- 25. Oracle:解釋plan_table查詢執行順序
- 26. 如何使用QOCI(Qt Oracle綁定)執行多行查詢?
- 27. Oracle查詢 - 執行查詢期間的數據更改
- 28. 更新執行從網址查詢,但執行會執行查詢
- 29. toad for oracle - 在調試/執行期間執行查詢
- 30. 如何在Hibernate中打開會話執行查詢
如果啓用此功能,以'v $ active_session_history'開頭 – haki