我已经使用以下命令为我的表添加了一个索引:
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 感谢
答案 0 :(得分:3)
我认为没有解决方法,因为documentation of DBMS_JOB
明确指定了此限制:
您可以执行用户拥有的程序或明确授予用户EXECUTE的程序。但是,无法执行通过角色授予用户执行权限的过程。