Auswahl  

Gesperrte Schemata in Application Express 

Oracle
APEX
APEX 5.x
12.12.18 (MP)
12.12.18 (MP)
APEX

Body

Ist es Ihnen schon passiert, dass Sie in Application Express ein Schema einem Workspace zuordnen wollten, aber dieses Schema wurde Ihnen nicht angeboten? Und wenn Sie den Schemanamen trotzdem manuell eingetragen haben, wurde der Versuch mit folgender Fehlermeldung quittiert: "The requested schema is reserved or is restricted and the site administrator does not have the privilege to assign restricted schemas to workspaces.".

Das liegt daran, dass standardmäßig alle vordefinierten Schemata (z.B. SYSTEM, SCOTT, RMAN, HR, SH ....) für den Zugriff über Application Express gesperrt sind. Die Liste aller gesperrten Schemata erhalten Sie mit folgendem Select:

SELECT schema FROM APEX_180200.WWV_FLOW_RESTRICTED_SCHEMAS;

Anmerkung: Hier wie im folgenden wird von der Application Express Version 2.0 ausgegangen. bei anderen Versionen muss der Schemaname entsprechend angepasst werden.

Schemanamen der Unterschiedlichen Apex Versionen:

APEX_050000 Version 5.0
APEX_050100 Version 5.1
APEX_180100 Version 18.1
APEX_180200 Version 18.1
APEX_190100 Version 19.1 (in Planung)

 Über das Package APEX_180200.APEX_INSTANCE_ADMIN.UNRESTRICT_SCHEMA kann ein Datenbankadministrator Schemata freigeben oder sperren.

Es beinhaltet folgende Prozeduren:

  • UNRESTRICT_SCHEMA: Dadurch wird ein Schema generell freigegeben für die Verwendung.

  • RESTRICT_SCHEMA: Dadurch wird ein Schema generell gesperrt für die Verwendung.

  • CREATE_EXCEPTION: Dadurch wird ein an sich gesperrtes Schema für einen bestimmten Workspace freigegeben.

  • REMOVE_EXCEPTION: Dadurch wird eine solche Freigabe für einen bestimmten Workspace wieder aufgehoben.

  • REMOVE_SCHEMA_EXCEPTIONS: Dadurch werden alle über CREATE_EXCEPTION gemachte Freigaben für ein bestimmtes Schema zurückgenommen.

  • REMOVE_WORKSPACE_EXCEPTIONS: Dadurch werden alle über CREATE_EXCEPTION gemachte Freigaben für einen bestimmten Workspace zurückgenommen.

  • REPORT: Dadurch wird ein SELECT erzeugt, über den angezeigt werden kann, welche Sperren und Ausnahmen es gibt. 
 

Alle Freigaben und Sperren über das Package müssen mit COMMIT abgeschlossen werden, um in Kraft zu treten. Wird ein Schema gesperrt, so sind bereits getroffene Workspace-Zuordnungen davon nicht betroffen. Generell freigegebene Schemata verschwinden aus WWW_FLOW_RESTRICTED_SCHEMAS, begrenzt freigegebene jedoch nicht. Mit CREATE_EXCEPTION erzeugte Ausnahmen sind in WWV_FLOW_RSCHEMA_EXCEPTIONS zu finden:

 
SELECT schema_id, workspace_name FROM APEX_180200.WWV_FLOW_RSCHEMA_EXCEPTIONS;
 

Die Prozedur REPORT erzeugt nur einen SELECT-Befehl, der die beiden Tabellen verknüpft und gibt diesen SELECT-Befehl über DBMS_OUTPUT aus, nicht jedoch dessen Ergebnis. Der ausgegebene Select lautet (unabhängig vom angemeldeten User):

 
SELECT a.schema "SCHEMA", b.workspace_name "WORKSPACE"
FROM WWV_FLOW_RESTRICTED_SCHEMAS a, WWV_FLOW_RSCHEMA_EXCEPTIONS b
WHERE b.schema_id(+) = a.id;
 

Beispiele: 

 
BEGIN
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.UNRESTRICT_SCHEMA(p_schema => 'SCOTT');  
   COMMIT;
END;
/
 
BEGIN
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.RESTRICT_SCHEMA(p_schema => 'HAS');
   COMMIT;
END;
/
 
BEGIN
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.CREATE_EXCEPTION
     (p_schema => 'HAS',
      p_workspace => 'SCHULUNG');
   COMMIT;
END;
/
 
BEGIN
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.REMOVE_EXCEPTION
       (p_schema => 'HAS',
        p_workspace =>'SCHULUNG');
    -- oder:
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.REMOVE_WORKSPACE_EXCEPTIONS
     (p_workspace => 'SCHULUNG');
    -- oder:  
   FLOWS_020000.HTMLDB_SITE_ADMIN_PRIVS.REMOVE_SCHEMA_EXCEPTIONS
     (p_schema => 'HAS');
   COMMIT;
END;
/

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