设置: 我有两棵在 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 身份重新登录以授予它?(这里的重点是在最初的“运行这个脚本树”之外有零手动步骤,并且在使用 SYS AS SYSDBA 时只有一次。)