oracle視圖中有沒有用到一張表

來源:互聯網
上載者:User

問題原因:

1,文檔不全

2,年久遺忘

3,員工離職

結果:一張表(XZF_CASE_DISCUSS)不知道這張表有什麼用是否在視圖中使用過,是廢表嗎?總不能一個個去看視圖吧!

辦法:當然不需要,oracle提供豐富的資料登記表和視圖,所有的使用者物件都可以查詢,比如說我們想查視圖就涉及到一張表:user_views

select * from user_views;

請看TEXT欄位,這裡儲存著檢視窗產生的語句,我們只要遍曆這些語句,查看其是否包含目標表名,即可知道哪兒使用了該表。

select instr(text,'XZF_CASE_DISCUSS',1,1) from user_views;
這樣似乎是問題解決了,但我突然發現忽略了一點,TEXT欄位是LONG類型,因此我們只能接受出錯的結果:

查了資料,發現LONG類型很不容易操作,是oracle不提倡的資料類型,這裡雖然還在使用,估計很快就會失效吧。這裡提供一個改進的辦法:

Create TABLE testBak (col1 clob);  insert into testBak select text from user_views;
這樣LONG類型的TEXT欄位轉換成clob類型的,對於clob類型我們就比較熟悉了,可以直接採用instr函數來操作,就可以了。

select instr(col1,'XZF_CASE_DISCUSS',1,1) from  testBak 

可以看到所有的記錄都是0,說明在所有的視圖中都沒有用到過XZF_CASE_DISCUSS表,雖然不能斷定該表是廢表,但可以證明視圖中沒有這個東西。

總結:oracle是這個星球上最強大的關係型資料庫,只要有想法,沒什麼不可能,只要你肯動腦子,肯查資料,解決方案是一定會有的。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.