Auswahl  

 

Oracle
PL/SQL
11.2:18.1:12.1, 12.2
25.01.18 (MP)
15.06.18 (MM)
Rechteverwaltung, Rollen

Body

Wenn Sie in PL/SQL Prozeduren, Funktionen oder Packages schreiben möchten und auf Objekte von anderen Schematas zugreifen, dann müssen Sie die dazugehörigen Rechte direkt bekommen haben und nicht über eine Rolle.

Nur stellt sich die Frage, welche Rechte habe ich direkt und welche über eine Rolle bekommen?

Das Problem löst der folgende SELECT:

SELECT * FROM (
  SELECT 'Direkt' as info, privilege FROM session_privs
  MINUS
  SELECT 'Direkt', privilege FROM role_sys_privs)
UNION
SELECT role, privilege FROM role_sys_privs;

Die Ausgabe könnte dann z.B. so aussehen:

INFO PRIVILEGE
Direkt ADVISOR
Direkt ALTER ANY INDEX
Direkt ALTER ANY OUTLINE
Direkt ALTER DATABASE
Direkt ALTER SESSION
Direkt ALTER SYSTEM
Direkt ALTER TABLESPACE
Direkt ALTER USER
Direkt ANALYZE ANY
Direkt CREATE ANY DIRECTORY
Direkt CREATE ANY JOB
Direkt CREATE ANY OUTLINE
Direkt CREATE CLUSTER
Direkt CREATE DATABASE LINK
Direkt CREATE DIMENSION
Direkt CREATE EXTERNAL JOB
Direkt CREATE INDEXTYPE
Direkt CREATE JOB
Direkt CREATE MATERIALIZED VIEW
Direkt CREATE OPERATOR
Direkt CREATE PROCEDURE
Direkt CREATE SEQUENCE
Direkt CREATE SESSION
Direkt CREATE SYNONYM
Direkt CREATE TABLE
Direkt CREATE TRIGGER
Direkt CREATE TYPE
Direkt CREATE USER
Direkt CREATE VIEW
Direkt DROP ANY DIRECTORY
Direkt DROP ANY OUTLINE
Direkt GRANT ANY OBJECT PRIVILEGE
Direkt SELECT ANY DICTIONARY
Direkt SELECT ANY TABLE


Oder für Objektrechte:

SELECT 'Rolle' AS INFO, role, privilege , owner, table_name
  FROM role_tab_privs
UNION ALL
SELECT 'Direkt', grantee, privilege , owner, table_name
  FROM user_tab_privs;


Das ist nur ein Ausschnitt unserer vielfältigen Beispiele.

Kommen Sie in einen unserer PL/SQL Kurse und Sie bekommen da eine ganze Menge mehr zu sehen ...

Besuchen Sie uns doch bei einer unsere über 40 Oracle Schulungen in München - Unterhaching.