设置:我有脚本的两棵树上的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被使用时只需要一次。)
D'哦!我不知道我是如何错过的!这比在SYS中创建一个过程要好得多,只有DBADMIN可以调用该过程才能授予任意权限。 (: – Thought 2012-08-01 17:24:51