我使用以下命令向表中添加了一个索引:
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
通过我的搜索,我找到了一个有类似问题的人,他的解决方案是
我花了足够的时间调试它,所以我认为它值得分享我学到的东西。结果表明,dbms_jobs只继承模式用户的默认权限,而不是从授予该用户的角色继承的任何特权。这意味着作业不会使用本应授予架构用户的ctxsys权限运行。那这是什么意思?这意味着您必须以ctxsys用户的身份运行作业。
不幸的是,我不能使用它来授予自己特权,因为是的,这是家庭作业,而且我没有在ctx_ddl上将执行权限授予自己。
有人知道我如何解决这个问题吗?否则,我将等到本周晚些时候再征询电讯局长的意见。
谢谢
发布于 2011-03-28 08:03:58
我认为没有解决办法,因为DBMS_JOB显式地指定了这个限制:
您可以执行用户拥有的过程或显式授予用户执行的过程。但是,不能执行通过角色授予用户执行权限的过程。
https://stackoverflow.com/questions/5455675
复制相似问题