【问题标题】:Oracle Text ctx_ddl.sync_index with different schema具有不同架构的 Oracle Text ctx_ddl.sync_index
【发布时间】:2021-05-08 18:01:01
【问题描述】:

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

情况如下:

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

Oracle 账户 A(架构所有者)

上下文索引 -> myindex

Oracle 帐户 B

批处理作业脚本

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

上面的脚本返回 myIndex not found.

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

我尝试使用A.myIndex,创建别名等,它仍然返回未找到

请帮忙:(

【问题讨论】:

    标签: sql oracle stored-procedures plsql oracle-text


    【解决方案1】:

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

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

    grant alter any index to B;
    

    以用户 B 的身份运行:

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

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

    【讨论】:

    • 感谢您的解释。
    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 2021-09-05
    • 2018-12-24
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多