Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_accessible_by_12c

Oracle PL/SQL - mit "accessible by" Zugriffe in 12c auf PL/SQL einschränken

Aufgabe: Ein Package mit besonderen Rechten darf NUR von einem anderen Package aus aufgerufen werden, der User darf diese Package selber nicht aufrufen.

Lösung:

Beispiel Code:

 
-------------------
 
 
CREATE OR REPLACE PROCEDURE execute_proc
 accessible BY (gpi.call_proc)
IS
BEGIN
 DBMS_OUTPUT.put_line('-- Info :: Procedure execute_proc executed');
END;
/
 
 
-------------------
 
SQL> exec execute_proc
BEGIN execute_proc; END;
 
      *
ERROR AT line 1:
ORA-06550: line 1, column 7:
PLS-00904: insufficient privilege TO access object EXECUTE_PROC
 
 
-------------------
 
 
CREATE OR REPLACE PROCEDURE call_proc
IS
BEGIN
  execute_proc;
END;
/
 
 
-------------------
 
SQL> SET serveroutput ON
 
SQL> exec call_proc;
-- Info :: Procedure execute_proc executed
 
PL/SQL PROCEDURE successfully completed.

Nun kann execute_proc nur noch von der Procedure call_proc aufgerufen werden.

Aber! Beachten!

Aus der Doku:

The ACCESSIBLE BY clause allows access only when the call is direct. The check will fail if the access is through static SQL, DBMS_SQL, or dynamic SQL.

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
"Autor: Gunther Pipperr"
prog/oracle_accessible_by_12c.txt · Zuletzt geändert: 2018/06/29 14:36 von gpipperr