必须声明oracle标识符'ctx_ddl' - 添加dbms_job

时间:2011-03-28 07:06:45

标签: oracle indexing sqlplus database

我已经使用以下命令为我的表添加了一个索引:
CREATE INDEX patient_index ON radiology_record(patient_name) INDEXTYPE IS CTXSYS.CONTEXT;

我正在尝试添加一个DBMS_JOB,以使其保持最新状态 我一直在运行这个脚本的方法是从SQLPLUS中调用“@ myscript.sql”

set serveroutput on 
declare
   job number; 
begin
   dbms_job.submit(job, 'ctx_ddl.sync_index(''patient_index'');',
                  interval=>'SYSDATE+1/1440');   
   commit;
   dbms_output.put_line('job '||job||'has been submitted.'); 
 end;
 /

结果错误为PLS-00201: identifier 'CTX_DDL' must be declared

通过我的搜索,我发现有类似问题的人和他的solution

  

我花了足够的时间   调试这个,我以为它   值得分享我学到的东西。它   事实证明dbms_jobs只继承   您的架构用户的默认权限,   没有任何可能继承的特权   来自授予该用户的角色。这个   表示作业不会运行   你应该拥有的ctxsys特权   已授予您的架构用户。所以   这是什么意思?这意味着你   必须以ctxsys用户身份运行作业

我很遗憾无法使用此权限授予自己权限,因为是,这是作业,我没有权限将ctx_ddl执行给自己。

有没有人有关于我如何解决这个问题的线索?否则我会等到本周晚些时候再咨询TA 感谢

1 个答案:

答案 0 :(得分:3)

我认为没有解决方法,因为documentation of DBMS_JOB明确指定了此限制:

  

您可以执行用户拥有的程序或明确授予用户EXECUTE的程序。但是,无法执行通过角色授予用户执行权限的过程。