设置:我有两个在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(...)
...
(成功,并且可以正常工作) (稍后,在同一个父脚本调用的另一个脚本中,仍为DBADMIN:)
BEGIN
other_schema.package_name.add_data(...);
...
(提出上面给出的PLS-00904 - 权限不足)
关于如何给DBADMIN帐户EXECUTE访问尚未创建的包的任何想法,或者DBADMIN如何在不停止整个脚本流的情况下自行访问,注销并以SYS AS SYSDBA的形式返回授予它吗? (这里的重点是在初始“运行此脚本树”之后有ZERO手动步骤,并且在使用SYS AS SYSDBA时只有一次预先安装。)
答案 0 :(得分:4)
您可以授予DBADMIN EXECUTE ANY PROCEDURE权限。这将允许它执行任何运行任何其他用户拥有的程序的过程。
与其他任何程序一样,它非常强大,不应轻易授予。 (事实上,它是最强大的任何特权之一)。