回答
瞭解最終目標肯定會有所幫助。
您可以查詢GV$SQL_PLAN
表看到在共享池中哪些查詢使用特定指數
SELECT *
FROM gv$sql_plan
WHERE object_owner = <<owner of object>
AND object_name = <<name of index>>
根據您的系統,但是,SQL語句可能不會停留在共享池中特別長,所以你可能需要相對頻繁地進行調查以確保您不會錯過任何事情。根據Oracle版本,版本和許可選項,您也可以查詢AWR表以獲取歷史計劃信息。但是,這隻會提供有關查詢的信息,這些查詢的成本足夠昂貴以至於在AWR快照中捕獲這些查詢。
SELECT *
FROM dba_hist_sql_plan
WHERE object_owner = <<owner of object>
AND object_name = <<name of index>>
如果你正在嘗試完成的是要弄清楚是否正在使用的索引,但是,你可能想使用類似index monitoring,讓正在使用哪些指標甲骨文軌道。但請注意,這種方法存在缺陷。例如indexes on foreign keys對於高效刪除是必需的,可能不會被標記爲由索引監視使用(也不會僅通過查看查詢計劃來捕獲它們)。儘管索引本身沒有被使用,索引監測也可能會丟失statistics on an index are used想出一個有效計劃的情況。
如果我的最終目標是放棄不影響生產的指數,是否有另一種工具可以提供這些信息? – 2012-02-24 16:22:54
@SeanNguyen - 首先,請注意,即使沒有任何聲明曾使用特定索引,但這並不一定意味着您可以放棄它而沒有風險。關於索引的統計信息(或者由於列索引而收集的列統計信息)可能是有可能的。您可以使用索引監控(更新我的答案),但也有缺陷。 – 2012-02-24 16:39:15
我的索引是一個空間索引。它看起來不像我可以監控域索引。這是一個錯誤:SQL錯誤:ORA-29871:域索引的無效更改選項 – 2012-02-27 15:28:12
- 1. 如何記錄表上的Oracle執行所有Oracle select語句
- 2. 記錄在Oracle中的表上執行的SQL語句
- 3. 插入語句中的記錄數(Oracle)
- 4. 如何在Rails中關聯has_many記錄執行if語句
- 5. oracle如何執行sql語句?
- 6. 要並行執行的oracle索引
- 7. 如何在SQL Server中執行此ORACLE語句?
- 8. 如何在SELECT中執行CREATE Oracle SQL語句?
- 9. 如何在Dropwizard中記錄SQL語句
- 10. 如何打印mysql語句執行/將在django語句上執行?
- 11. 爲表中的每個記錄執行語句
- 12. select語句中的索引執行流程
- 13. 在PostgreSQL中執行SELECT語句時可以插入記錄嗎?
- 14. 如何執行.vimrc中的語句
- 15. 如何檢索oracle中發生兩次以上的記錄?
- 16. 如何在C++中執行SQLite語句
- 17. 如何在Access中執行if語句?
- 18. 如何在perl中執行if語句?
- 19. 如何在C++中執行語句?
- 20. 在IF子句中執行select/insert語句Oracle
- 21. 查看在Oracle DB 12c中執行的所有SQL語句
- 22. 使用jsp執行oracle語句
- 23. Oracle數據庫語句執行失敗
- 24. 如何執行SQL語句?
- 25. 如何在XSLT中執行類似語句或等效語句
- 26. 的Oracle SQL索引行上按/父行
- 27. 如何檢索作爲INSERT語句的MYSQL記錄
- 28. 如何在獨特的子句中執行CASE語句?
- 29. 索引中的記錄數
- 30. Unix到Sqlplus - 記錄要執行的SQL語句和執行結果
你的最終目標是什麼,即你爲什麼要這樣做?你想知道哪些索引被使用,哪些不是?就好像你在數據庫中有很多事情一樣,你可能不得不做一些非常討厭的東西來回答你的問題,並且可能有更簡單的方法來解決它。 – Ben 2012-02-24 00:26:47
最終我需要知道我是否可以刪除桌面上的某些索引。 – 2012-02-24 15:17:02