2010-11-02 57 views
5

嘿傢伙。所以,我以dba帳戶登錄,並且想要在User1的模式中創建一個視圖,但是要從User2的數據中選擇數據。Oracle創建查看期號

我用下面的查詢:

CREATE OR REPLACE VIEW User1.NewView (Column1) AS 
SELECT DISTINCT Column1 FROM User2.Table 

,我得到以下錯誤:

SQL Error: ORA-00942: table or view does not exist 
00942. 00000 - "table or view does not exist" 
*Cause:  
*Action: 

要解決此我不得不承認選擇訪問用戶1上User2.Table。有沒有辦法做到這一點,而不必授予訪問權限,因爲我已經登錄爲DBA?多謝你們!

回答

10

是的,你有(並且總是應該)明確授予訪問另一個模式中的對象的權限。

GRANT SELECT ON user2.table TO user1 

儘管您以「dba帳戶」(SYS,我假設)身份登錄,但CREATE語句專用於user1模式。

8

你可以做CREATE OR REPLACE FORCE VIEW ...

,將創建儘管缺乏權限的觀點,但除非授予權限的觀點將無法使用。如果稍後授予權限(例如,在某些自動構建腳本中),這是一個有用的解決方案。

+1

+1:學習新東西 – 2010-11-02 23:03:45

0

可能是因爲您沒有訪問表或視圖上的對象,以用戶

查詢 授予權限;