我正在爲使用Weblogic應用程序和Oracle 11g數據庫的公司工作。意外地看到其他架構上的對象
我們有很多測試機器來測試應用程序。每臺機器連接到相同的數據庫實例,但使用不同的模式。
例如,機號1使用模式和test1
具有其自己的一組表,例如test1.payment
,test1.customer
等。並且機器編號2使用模式test2
的,並且還具有表test2.payment
,test2.customer
等
通常,如果我們在架構test1
訪問數據庫和應用下面的查詢
select * from all_objects where object_name = 'PAYMENT'
我們會得到一個列,其中OBJECT_NAME =「PAYMENT」和owner ='TEST1'
有一天,測試機器號碼2上的應用程序未能以錯誤消息There is more than one owner for type FOO, in the database
開始,其中FOO
是假名。
我檢查數據庫類型FOO
這個SQL
select * from all_objects where object_name = 'FOO'
,讓行,其中所有者是從每一個模式,並認爲這是根本原因。
我不允許編輯導致問題的應用程序源代碼部分。所以我想修復它在數據庫網站。但是,數據庫管理員將缺席一段時間,我沒有DBA權限,但我可以訪問所有模式test1
,test2
,...
的問題是:
爲什麼select * from all_objects where object_name = 'FOO'
回報從其他模式的行以及如何使它只返回當前模式的一行?