2012-08-01 17 views
1

設置:我有腳本的兩棵樹上的Oracle 11g運行 - 一組可確保正確的實例配置和所有的DBA代理帳戶是否有連接到dbadmin帳戶,另一組建立並修改數據庫環境。如何在剛剛在另一個模式中創建的包中執行過程?

問題:到DBADMIN帳戶已代理,該第二組腳本運行得很好,除了爲一體:所述數據預填充。允許數據加載的程序適當的模式下創建就好了,如果跑了作爲SYS AS SYSDBA加載數據的腳本運行得很好,但是當我嘗試創建它調用的程序後立即運行它作爲DBADMIN 每次打電話我都會得到PLS-00904: insufficient privilege to access object schema.package。我甚至不能有腳本GRANT EXECUTE ON schema.package TO DBADMIN因爲(當然)產生預期ORA-01749: you may not GRANT/REVOKE privileges to/from yourself錯誤。

要說得簡單些:

(如DBADMIN :)

... 
CREATE OR REPLACE PACKAGE BODY other_schema.package_name IS 
... 
PROCEDURE add_data(...) 
... 

(成功,並testably工作) (後來,在受同一母公司腳本調用另一個腳本,仍DBADMIN :)

BEGIN 
    other_schema.package_name.add_data(...); 
    ... 

(提高了PLS-00904上面給出 - 特權不足)

如何,我可以給DBADMIN任何想法佔到執行權限,它尚未建立,或DBADMIN如何才能獲得訪問本身沒有停止整個腳本流,註銷並重新登錄作爲SYS AS SYSDBA包去授予它? (這裏的要點是,除了最初的「運行這個腳本樹」之外,還有一個ZERO手動步驟,並且在SYS AS SYSDBA被使用時只需要一次。)

回答

4

您可以授予DBADMIN EXECUTE任何程序權限。這將允許它執行任何程序來運行其他用戶擁有的程序。

像其他任何程序它是非常強大的,不應該隨便授予。 (實際上它是最強大的ANY特權之一)。

+0

D'哦!我不知道我是如何錯過的!這比在SYS中創建一個過程要好得多,只有DBADMIN可以調用該過程才能授予任意權限。 (: – Thought 2012-08-01 17:24:51

相關問題