Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_accessible_by_12c

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

prog:oracle_accessible_by_12c [2018/06/29 14:36] (aktuell)
gpipperr angelegt
Zeile 1: Zeile 1:
 +=====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.
 +
 +
 +<fc #008000>**Lösung:**</fc>
 +
 +Beispiel Code:
 +<code plsql>
 +
 +
 +-------------------
 +
 +
 +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.
 +
 +</code>
 +
 +Nun kann execute_proc nur noch von der Procedure call_proc aufgerufen werden.
 +
 +Aber! Beachten! 
 +
 +Aus der Doku:
 +<code bash>
 +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.
 +</code>
 +
 +
 +----
 +
 +
 +==== Quellen ====
 +
 +  * Oracle Doku => https://docs.oracle.com/en/database/oracle/oracle-database/12.2/lnpls/ACCESSIBLE-BY-clause.html#GUID-9720619C-9862-4123-96E7-3E85F240FF36
 +
 +
  
"Autor: Gunther Pipperr"
prog/oracle_accessible_by_12c.txt · Zuletzt geändert: 2018/06/29 14:36 von gpipperr