oracle-Bezeichner 'ctx_ddl' deklariert werden müssen, ist das hinzufügen der dbms_job

Habe ich einen index für meine Tabelle mit dem Befehl:
CREATE INDEX patient_index ON radiology_record(patient_name) INDEXTYPE IS CTXSYS.CONTEXT;

Und ich versuche, fügen Sie ein DBMS_JOB, die es aktuell zu halten.
Die Art, wie ich dieses Skript aufrufen, "@myscript.sql" von SQLPLUS

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;
 /

Der resultierende Fehler ist PLS-00201: identifier 'CTX_DDL' must be declared

Durch meine Suche habe ich jemanden gefunden mit einem ähnlichen problem und seine Lösung war

Ich verbrachte genug Zeit
debugging diese, dass ich dachte, es
Verdienter teilen, was ich gelernt habe. Es
stellt sich heraus, dass dbms_jobs nur Erben
Ihre schema-Benutzer die Standard-Berechtigungen,
nicht alle Privilegien, die es Erben könnte
von Rollen erteilt, die Benutzer. Diese
bedeutet, dass der Auftrag nicht ausgeführt mit
die ctxsys Privileg, dass Sie sollten
erteilt haben, Ihre schema-Benutzer. So
was bedeutet das? Es bedeutet, dass Sie
den job als ctxsys-Benutzer

Kann ich leider nicht verwenden, diese zu gewähren, selbst Privilegien zu, da ja, das ist Hausaufgaben, und ich nicht über die Berechtigungen grant execute on ctx_ddl mir.

Hat jemand Hinweise darauf, wie kann ich dieses Problem beheben? Ansonsten werde ich warten, bis später in dieser Woche und Rücksprache mit dem TA.
Dank

Diese Funktion -, dass Privilegien durch Rollen gelten nicht für die in pl/sql ist ein standard (und ärgerlich) Oracle-Funktion. Müssen Sie über die execute on ctx_ddl explizit gewährt Ihnen. Sie finden im Laufe der Zeit, das gleiche gilt für andere Typen von Objekten, insbesondere Tabellen und-sichten.

InformationsquelleAutor Jean-Bernard Pellerin | 2011-03-28

Schreibe einen Kommentar