2012-08-01 20 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

相关问题