我有一个通过数据保护管理的 Oracle 逻辑备用数据库。就在今天早上,重做应用过程开始失败,出现 ORA-01919 错误,表明我们的一个应用程序角色不存在。但是,我可以在主数据库和备用数据库上看到该角色。我们还有一个物理备用数据库,它早就应用了重做,而这种情况发生在逻辑数据库上,没有问题。
我已经向 Oracle 提交了 SR。我想知道是否有人之前见过这种情况。
我想我应该提一下:Oracle 10.2.0.4,Win2003 Server SP2。
更新:到目前为止,Oracle 支持尚未提供答案。我想在这里发布我到目前为止了解到的信息。
看来,在主要主机上授予角色的 DBA 权限对于被授予该角色的用户来说很有效。但在逻辑备用服务器上则不起作用。换句话说:
create role TEST;
grant dba to TEST;
grant TEST to auser;
connect auser
set role TEST;
grant <existing role> to <existing user>;
这在主实例上有效,但在逻辑实例上失败。一种解决方法似乎是将主实例上的每个角色授予逻辑实例中带有管理选项的角色 TEST:
grant <existing role> to TEST with admin option; <== do this on the logical standby
然后该命令将在逻辑备用数据库上运行。
答案1
视情况而定。使用逻辑备用数据库时,SYS 在主数据库上执行的任何操作都不会复制到逻辑备用数据库。因此,如果您在以 SYS 身份登录(在主数据库中)时创建了该角色,则该角色将不存在于逻辑备用数据库中,因此非 SYS 用户(在主数据库中)引用该角色的后续命令将失败。