微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有不同架构的 Oracle Text ctx_ddl.sync_index

如何解决具有不同架构的 Oracle Text ctx_ddl.sync_index

我正在为同步 oracle 文本 ctx 索引创建批处理作业。

情况如下:

我有两个 Oracle 帐户,帐户 A 是架构所有者,帐户 B 是批处理作业服务器中使用的 Oracle 帐户。上下文索引是在账户A中创建的。我想使用Oracle账户B来执行一个批处理作业来同步上下文索引。 .

Oracle 帐户 A(架构所有者)

上下文索引 -> myindex

Oracle 帐户 B

批处理作业脚本

begin
  ctx_ddl.sync_index('myindex','2M');
end;

上述脚本返回未找到的 myIndex。

请问有什么办法可以使用Oracle账户B对Oracle账户A中存储的上下文索引执行ctx_ddl.sync_index?

我尝试使用 A.myIndex、创建别名等,它仍然返回 not found

请帮忙:(

解决方法

错误消息在说谎 - 这是权限问题,而不是名称问题。如果您在架构名称前面加上 ALTER ANY INDEX 权限,同步应该可以工作。

以用户 A 或任何管理员帐户的身份运行:

grant alter any index to B;

以用户 B 身份运行:

begin
  ctx_ddl.sync_index('a.myindex','2M');
end;
/

索引没有对象权限,因此您必须授予任何系统权限。 ANY 权限通常既强大又危险,但创建索引不会造成太大损害,因此希望您的管理员不会抱怨。如果 DBA 不允许这样做,您可以在模式 A 上创建一个过程来执行同步,然后将对该权限的执行授予模式 B。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。