場景
1、三個資料庫用戶NSTCSA1482、NSTCSA1481、NSTCSA1483,兩個用戶使用的是DB_LINK建立聯繫。
2、NSTCSA1481用戶理解成業務子系統用到的其中一個用戶,在此用戶下有一些存儲過程通過DBLINK使用到NSTCSA1482用戶下的對象(如:表、函數、過程)。
3、NSTCSA1482用戶同樣也有對象使用NSTCSA1481上的內容。
4、這樣系統正常一段時間後因為有其它業務要求,需要用NSTCSA1483替代掉NSTCSA1482,也就是說NSTCSA1481下DBLINK連接應該改成了NSTCSA1483,這樣問題就出現了。
4、異常信息如下:
問題解決
1、此問題剛一出現我們的直接反應就是資料庫那塊有什麼緩存之類的東西。
2、因為不允許重啟資料庫,嘗試把此DBLINK刪除掉,再次觸發此應用,這時異常信息變為缺少DBLINK。
3、重建DBLINK,異常信息還和以前一致,這時分析可能與DBLINK相關的對象有關係。
4、嘗試重新編譯與此DB_LINK相關的函數和過程,至此問題解決。
總結
1、修改DBLINK時需要重新編譯與些DBLINK相關的過程/函數。
2、至於資料庫重啟後是否直接就恢復正常,並沒有再做與此相關的工作。