Häufig gestellte Frage (FAQ)

Kann der Rolle public die Ausführungsberechtigung für Oracle-Pakete entzogen werden?

Last Published: April 25, 2020

Antwort

Ja, es ist möglich, der Oracle-Rolle "public" die Ausführungsberechtigung für folgende Pakete zu entziehen, nachdem eine Geodatabase in Oracle erstellt oder aktualisiert wurde:

  • sys.dbms_lock
  • sys.dbms_pipe
  • sys.dbms_lob
  • sys.dbms_sql
  • sys.dbms_utility
  • sys.utl_raw

Wenn die Berechtigung widerrufen wird, muss der Oracle-Administrator dem SDE- und CTXSYS-Benutzer (Eigentümer der Oracle Text-Komponente) sowie allen Benutzern, die sich über ArcGIS mit der Oracle-Instanz verbinden, ausdrücklich Ausführungsberechtigungen für alle Pakete gewähren.

Wenn Sie der Rolle "public" die Berechtigungen für die Pakete entziehen möchten, führen Sie als Oracle SYS-Benutzer folgende SQL-Anweisungen in SQL*Plus aus:

SQL> REVOKE EXECUTE ON dbms_lock FROM public;

Revoke succeeded.

SQL> REVOKE EXECUTE ON dbms_pipe FROM public;

Revoke succeeded.

SQL> REVOKE EXECUTE ON dbms_lob FROM public;

Revoke succeeded.

SQL> REVOKE EXECUTE ON dbms_sql FROM public;

Revoke succeeded.

SQL> REVOKE EXECUTE ON dbms_utility FROM public;

Revoke succeeded.

SQL> REVOKE EXECUTE ON utl_raw FROM public;

Revoke succeeded.

Wenn der Rolle "public" die Berechtigungen entzogen wurden, muss der SYS-Benutzer dem SDE- und CTXSYS-Benutzer Ausführungsberechtigungen für die Pakete gewähren.

SQL> GRANT EXECUTE ON dbms_lock TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_pipe TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_lob TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_sql TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_utility TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON utl_raw TO sde;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_lock TO ctxsys; 

Grant succeeded. 

SQL> GRANT EXECUTE ON dbms_pipe TO ctxsys; 

Grant succeeded. 

SQL> GRANT EXECUTE ON dbms_lob TO ctxsys; 

Grant succeeded. 

SQL> GRANT EXECUTE ON dbms_sql TO ctxsys; 

Grant succeeded. 

SQL> GRANT EXECUTE ON dbms_utility TO ctxsys; 

Grant succeeded. 

SQL> GRANT EXECUTE ON utl_raw TO ctxsys; 

Grant succeeded.

Wenn der SDE-Benutzer keine ausdrückliche Berechtigung für die Ausführung des Pakets "sys.dbms_pipe" hat, tritt beim Starten des ArcSDE-Service ein Fehler auf, und in das ArcSDE-Fehlerprotokoll wird die folgende Meldung geschrieben:

Error:
SQL Stmt: 

Dem Benutzer der SDE DBA muss die Berechtigung für die Ausführung des erforderlichen in Oracle integrierten Pakets "DBMS_PIPE" direkt gewährt werden; es reicht nicht aus, wenn ihm lediglich eine Rolle mit der Ausführungsberechtigung zugewiesen wird.

Damit sich einzelne Benutzer entweder über den ArcSDE-Anwendungsserver oder direkt mit der Geodatabase verbinden können, muss ihnen der SYS-Benutzer die Berechtigung für diese Pakete ausdrücklich gewähren. Verbinden Sie sich erneut über SQL*Plus als SYS-Benutzer, und gewähren Sie dem gewünschten Benutzer die Berechtigung für die Ausführung der einzelnen Pakete.

SQL> GRANT EXECUTE ON dbms_lock TO tom;

Grant succeeded.

SQL> GRANT execute ON dbms_pipe TO tom;

Grant succeeded.

SQL> GRANT EXECUTE ON dbms_lob TO tom;

Grant succeeded.
SQL> GRANT EXECUTE ON dbms_sql TO tom;

Grant succeeded.
SQL> GRANT EXECUTE ON dbms_utility TO tom;

Grant succeeded.
SQL> GRANT EXECUTE ON utl_raw TO tom;

Grant succeeded.

Wiederholen Sie diese Befehle für jeden Benutzer, der eine Verbindung mit der Geodatabase herstellen können soll.

Hinweis:
Es ist nicht möglich, einer Datenbankrolle die Berechtigung für die Ausführung dieser Pakete zu gewähren und anschließend einem Benutzer diese Rolle zuzuweisen. In Abhängigkeit von diesen Oracle-Paketen hat SDE eigene Pakete; daher gelten Berechtigungen, die über Rollen gewährt wurden, nicht für die Ausführung von in Oracle gespeicherten Prozeduren oder Paketen. Nähere Informationen hierzu finden Sie in der Oracle-Dokumentation.

Wenn Sie den einzelnen Benutzern Ausführungsberechtigungen für die Pakete gewährt haben, müssen Sie das SDE- und CTXSYS-Objekt neu kompilieren. Verbinden Sie sich in SQL*Plus als SYS-Benutzer, und kompilieren Sie das SDE- und CTXSYS-Schema.

SQL> EXEC dbms_utility.compile_schema( 'SDE' );

Die PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

SQL> EXEC dbms_utility.compile_schema( 'CTXSYS' );

Die PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

Artikel-ID:000010238

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Weitere Informationen zu diesem Thema erkunden