Erläuterung des Definitionsparameter AUTHID bei Prozeduren in Oracle Database
Ich habe letztens auf einer Oracle 10.2.0.5 Datenbank mit Prozeduren rumgespielt. Konkret habe ich eine gebraucht, die mir den Audit-Trail der durch den Parameter audit_trail=db,extended entstanden ist, mal wieder aus der Datenbank löscht. Diese Prozedur sollte mit SYSTEM ausgeführt werden. Mein erster Versuch der Prozedur sah wie folgt aus: 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PROCEDURE PURGE_AUDIT_TRAIL (days in number) as purge_date date; BEGIN purge_date := trunc(sysdate-days); DBMS_OUTPUT.PUT_LINE('AUDIT: Purging Audit Trail until ' || purge_date || ' started'); EXECUTE IMMEDIATE 'delete from sys.aud$ where ntimestamp# < trunc(sysdate- ' || days || ')'; commit; DBMS_OUTPUT.PUT_LINE('AUDIT: Purging Audit Trail until ' || purge_date || ' has completed'); END; / Bei der Ausführung durch SYS war alles in Ordnung (egal, ob die Prozedur unter SYS oder SYSTEM eingebaut wurde), bei Ausführung unter SYSTEM konnte AUD$ nicht gefunden werden. Dubioserweise konnte aber per SELECT in der gleichen Prozedur drauf zugegriffen werden. ...