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

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga