Preguntas frecuentes

¿Se puede eliminar el privilegio de ejecución del público en paquetes de Oracle?

Last Published: April 25, 2020

Respuesta

Sí, el privilegio de ejecución se puede revocar del rol PUBLIC de Oracle en los siguientes paquetes después de crear o actualizar una geodatabase de Oracle:

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

Si se revoca el privilegio, el administrador de Oracle debe otorgar de forma explícita privilegios de ejecución para todos estos paquetes al usuario SDE y al usuario CTXSYS (propietario del componente de texto de Oracle), así como a cada usuario que se conecte a la instancia de Oracle con ArcGIS.

Para revocar los privilegios para los paquetes del público, ejecute las siguientes sentencias SQL como el usuario SYS de Oracle en SQL*Plus:

SQL> REVOKE EXECUTE ON dbms_lock FROM public;

Revocado correctamente.

SQL> REVOKE EXECUTE ON dbms_pipe FROM public;

Revocado correctamente.

SQL> REVOKE EXECUTE ON dbms_lob FROM public;

Revocado correctamente.

SQL> REVOKE EXECUTE ON dbms_sql FROM public;

Revocado correctamente.

SQL> REVOKE EXECUTE ON dbms_utility FROM public;

Revocado correctamente.

SQL> REVOKE EXECUTE ON utl_raw FROM public;

Revocado correctamente.

Una vez que se hayan revocado los privilegios del rol público, el usuario SYS debe otorgar privilegios de ejecución para los paquetes al usuario SDE y al usuario CTXSYS.

SQL> GRANT EXECUTE ON dbms_lock TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_pipe TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_lob TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_sql TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_utility TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON utl_raw TO sde;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_lock TO ctxsys; 

Otorgado correctamente. 

SQL> GRANT EXECUTE ON dbms_pipe TO ctxsys; 

Otorgado correctamente. 

SQL> GRANT EXECUTE ON dbms_lob TO ctxsys; 

Otorgado correctamente. 

SQL> GRANT EXECUTE ON dbms_sql TO ctxsys; 

Otorgado correctamente. 

SQL> GRANT EXECUTE ON dbms_utility TO ctxsys; 

Otorgado correctamente. 

SQL> GRANT EXECUTE ON utl_raw TO ctxsys; 

Otorgado correctamente.

Si el usuario SDE no tiene privilegios explícitos para ejecutar el paquete sys.dbms_pipe, se produce un error al intentar iniciar el servicio de ArcSDE y se escribe el siguiente mensaje de error en el registro de errores de ArcSDE:

Error:
SQL Stmt: 

Los privilegios de ejecución para el paquete integrado de Oracle DBMS_PIPE requerido se deben otorgar directamente al usuario SDE DBA, otorgarle un ROLE con acceso de ejecución no es suficiente.

Para que usuarios individuales se conecten a la geodatabase mediante el servidor de aplicaciones de ArcSDE o una conexión directa, el usuario SYS debe otorgar a los usuarios de forma explícita privilegios sobre los paquetes. De nuevo, mediante SQL*Plus, conéctese como el usuario SYS y otorgue privilegios de ejecución sobre cada paquete al usuario deseado.

SQL> GRANT EXECUTE ON dbms_lock TO tom;

Otorgado correctamente.

SQL> GRANT execute ON dbms_pipe TO tom;

Otorgado correctamente.

SQL> GRANT EXECUTE ON dbms_lob TO tom;

Otorgado correctamente.
SQL> GRANT EXECUTE ON dbms_sql TO tom;

Otorgado correctamente.
SQL> GRANT EXECUTE ON dbms_utility TO tom;

Otorgado correctamente.
SQL> GRANT EXECUTE ON utl_raw TO tom;

Otorgado correctamente.

Repita estos comandos para cada usuario que se conecte a la geodatabase.

Nota:
No se admite otorgar privilegios de ejecución para estos paquetes a un rol de base de datos y, después, otorgar el rol a un usuario. Dado que SDE tiene sus propios paquetes que dependen de estos paquetes de Oracle, los privilegios otorgados a través de roles no son aplicables al ejecutar un procedimiento o un paquete almacenado en Oracle. Consulte la documentación de Oracle para obtener información adicional.

Después de otorgar privilegios de ejecución para los paquetes a cada usuario, reestructure los objetos SDE y CTXSYS. Conéctese como el usuario SYS en SQL*Plus y compile los esquemas SDE y CTXSYS.

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

Procedimiento PL/SQL completado correctamente.

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

Procedimiento PL/SQL completado correctamente.

Id. de artículo:000010238

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Descubrir más sobre este tema