我添加一個索引到我的表的命令:
CREATE INDEX patient_index ON radiology_record(patient_name) INDEXTYPE IS CTXSYS.CONTEXT;
甲骨文標識符「CTX_DDL」必須聲明 - 加入DBMS_JOB
而且我嘗試添加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的。
感謝
此功能 - 通過角色授予的特權不適用於pl/sql - 是一種標準(且煩人的)Oracle功能。您需要在明確授予您的ctx_ddl上執行執行。隨着時間的推移,你會發現這同樣適用於其他類型的對象,特別是表格和視圖。 – 2011-03-28 10:34:05