我有表user_synonyms,我可以在其中查看名稱,表和表所有者。有沒有辦法看看這個同義詞是否仍然有效,例如,如果引用表仍然存在而沒有手動嘗試它?如何檢查Oracle中的所有無效同義詞
2
A
回答
3
您可以通過加入ALL_TABLES來檢查表是否存在(同義詞可能不在同一模式的表中)。
select *
from all_synonyms s
left outer join all_tables t
on s.table_owner = t.owner
and s.table_name = t.table_name
where s.owner = user
添加條件and t.table_name is null
如果您想要那些表不存在的同義詞。
如果要檢查同義詞是否爲VALID查詢ALL_OBJECTS。
select *
from all_synonyms s
join all_objects o
on s.owner = o.owner
and s.synonym_name = o.object_name
where o.object_type = 'SYNONYM'
and s.owner = user
and o.status <> 'VALID'
由於a_horse_with_no_name在評論中指出,有一個同義詞是一個表,視圖,序列連包裝都是有效的沒有要求。
所以,你可能要更改第一個查詢查找這些還有:
select *
from all_synonyms s
join all_objects o
on s.table_owner = o.owner
and s.table_name = o.object_name
where s.owner = user
0
使用下面的查詢:
select s.table_owner, s.table_name
from all_synonyms s, all_tables t
where s.table_owner = t.owner(+)
and s.table_name = t.table_name(+)
and t.owner is null
--s.owner = 'SCHEMA_NAME'
;
+0
正如@a_horse_with_no_name在另一個答案中所說的,一個同義詞不一定是表格。因此,如果同義詞指向例如第一個查詢可能會產生錯誤的否定結果。到一個視圖或程序._ – Krumia 2014-08-01 18:05:59
0
select distinct os.*
from all_objects os
,all_synonyms s
where 1 = 1
and os.object_type = 'SYNONYM'
and os.STATUS = 'INVALID'
and os.object_name = s.synonym_name
and not exists (select unique(1)
from all_objects o1
where o1.object_name = s.TABLE_NAME
and o1.owner = s.TABLE_OWNER)
order by 2;
+0
你應該給一些解釋 – 2014-10-13 05:54:20
相關問題
- 1. Oracle同義詞隨機無法查看
- 2. 如何從DOM DOM查詢中轉義所有無效字符?
- 3. 有效日期在Oracle中檢查
- 4. Oracle:私有和公共同義詞
- 5. Elasticsearch查找輸入詞和所有同義詞
- 6. Oracle中的同義詞訪問
- 7. oracle中的雙引號同義詞
- 8. Oracle同義詞錯誤
- 9. 如何檢查數據庫鏈接在Oracle中是否有效?
- 10. 如何檢查MySQL中的無效值?
- 11. 查找wordnet中單詞的同義詞
- 12. 如何在Lucene.Net中擁有同義詞
- 13. 如何使用sql/plsql檢查有效的oracle表名
- 14. 查找多詞詞組的同義詞
- 15. 如何檢查系統中AlarmManager中定義的所有警報?
- 16. 如何有效檢查(strpos(...))數組的所有元素?
- 17. 如何在數據庫中保存同義詞(Oracle Text)
- 18. 如何在oracle中從同義詞創建實體類?
- 19. 如何在oracle 10g中創建多個表同義詞?
- 20. LINQ查詢以檢查表中所有列的謂詞
- 21. 轉到定義&查找所有引用在Visual Studio中無效
- 22. Oracle分頁查詢中的列無效?
- 23. 如何檢查數組中的所有值是否相同?
- 24. 如何檢查列表中的所有元素是否相同?
- 25. 如何存儲和檢查在Java中的字符串的同義詞
- 26. 如何檢查所有欄位是否有效?
- 27. 如何獲取Oracle同義詞創建/最後的DDL時間?
- 28. 在oracle物化視圖中使用公有同義詞
- 29. 如何檢查具有自定義屬性的所有輸入
- 30. 檢查所有內容後爲foreach提供的參數無效
要完成的圖片:一個同義詞是不一定是桌子。因此,如果同義詞指向例如第一個查詢可能會產生錯誤的否定結果。以觀看或程序。 – 2013-02-20 15:25:26
真@a_horse_with_no_name,太集中在這個問題上。我已經更新了我的答案;謝謝。 – Ben 2013-02-20 15:29:03