Oracle/PLSQL: Funciones

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: Funciones

Este tutorial de Oracle explica, con sintaxis y ejemplos, cómo crear roles en Oracle, otorgar/revocar permisos de roles, habilitar/deshabilitar roles, establecer roles como roles predeterminados y eliminar roles.

describir

Una Papel Es un conjunto o conjunto de permisos que se pueden otorgar a un usuario u otro rol. Esta es una excelente manera para que los administradores de bases de datos ahorren tiempo y esfuerzo.

Crear un rol

Es posible que desee crear un rol para poder agrupar lógicamente los permisos de los usuarios. Tenga en cuenta que para crear un rol, debe tener el privilegio del sistema CREATE ROLE.

sintaxis

La sintaxis para crear un rol en Oracle es:

CREATE ROLE role_name
[ NOT IDENTIFIED | 
IDENTIFIED {BY password | USING [schema.] package | EXTERNALLY | GLOBALLY } ;

role_name El nombre del nuevo rol que está creando. Así es como se referiría a la agrupación de permisos. NO IDENTIFICADO significa que el rol se habilita inmediatamente. No se requiere una contraseña para habilitar este rol. IDENTIFICADO significa que el usuario debe estar autorizado por el método especificado para habilitar el rol. POR contraseña Esto significa que el usuario debe proporcionar una contraseña para habilitar el rol. USING paquete Esto significa que está creando un rol de aplicación, un rol que solo habilitan las aplicaciones que usan el paquete de autorización. EXTERNAMENTE Esto significa que el usuario debe estar autorizado por un servicio externo para habilitar el rol. Los servicios externos pueden ser sistemas operativos o servicios de terceros. GOBALLY significa que el usuario debe estar autorizado por el servicio de directorio empresarial para habilitar el rol.

notas

  • Si se omiten NOT IDENTIFIED e IDENTIFIED de la sentencia CREATE ROLE, el rol se creará como NOT IDENTIFIED.

ejemplo

Veamos un ejemplo de cómo crear un rol en Oracle.

Por ejemplo:

CREATE ROLE test_role;

El primer ejemplo crea un rol llamado test_role.

CREATE ROLE test_role
IDENTIFIED BY test123;

El segundo ejemplo crea el mismo rol llamado test_role, pero ahora está protegido por contraseña con la contraseña test123.

Otorgar permiso TABLE al rol

Después de crear un rol en Oracle, el siguiente paso es otorgar permisos al rol.

Así como otorga permisos a los usuarios, también puede otorgar permisos a los roles. Comencemos otorgando permisos de tabla a los roles. Los permisos de la tabla pueden ser cualquier combinación de SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REFERENCIAS, ALTERAR, ÍNDICE o TODO.

sintaxis

La sintaxis para otorgar permisos de tabla a un rol en Oracle es:

GRANT privileges ON object TO role_name

privilegio

Permisos asignados al rol. Puede ser cualquiera de los siguientes valores:

privilegio describir
escoger Capacidad para ejecutar sentencias SELECT en tablas.
insertar Capacidad para ejecutar instrucciones INSERT en tablas.
renovar Capacidad para ejecutar instrucciones UPDATE en tablas.
Eliminar Capacidad para ejecutar sentencias DELETE en tablas.
Referirse a Capacidad para crear tablas de referencia de restricciones.
Cambio Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla.
índice Se puede crear un índice en una tabla mediante la declaración de creación de índice.
todo Todos los privilegios en la mesa.

objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permisos de tabla otorgados, este será el nombre de la tabla. role_name El nombre del rol al que se le otorgarán estos permisos.

ejemplo

Veamos algunos ejemplos de cómo otorgar permisos de tabla a roles en Oracle.

Por ejemplo, si quisiera otorgar permisos SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR en una tabla llamada proveedores a un rol llamado rol_prueba, ejecutaría la siguiente instrucción GRANT:

GRANT select, insert, update, delete ON suppliers TO test_role;

También puede usar la palabra clave ALL para indicar que desea otorgar todos los permisos. Por ejemplo:

GRANT all ON suppliers TO test_role;

Revocar privilegios de tabla de roles

Después de otorgar permisos de tabla a un rol, es posible que deba revocar algunos o todos estos permisos. Para hacer esto, puede ejecutar un comando de deshacer. Puede deshacer cualquier combinación de SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REFERENCIAS, ALTERAR, ÍNDICE o TODO.

sintaxis

La sintaxis para revocar permisos de tabla de un rol en Oracle es:

REVOKE privileges ON object FROM role_name;

privilegio

Permisos revocados de roles. Puede ser cualquiera de los siguientes valores:

privilegio describir
escoger Capacidad para ejecutar sentencias SELECT en tablas.
insertar Capacidad para ejecutar instrucciones INSERT en tablas.
renovar Capacidad para ejecutar instrucciones UPDATE en tablas.
Eliminar Capacidad para ejecutar sentencias DELETE en tablas.
Referirse a Capacidad para crear tablas de referencia de restricciones.
Cambio Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla.
índice Se puede crear un índice en una tabla mediante la declaración de creación de índice.
todo Todos los privilegios en la mesa.

objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar permisos sobre una tabla, este será el nombre de la tabla. role_name El nombre del rol que revocará estos permisos.

ejemplo

Veamos algunos ejemplos de cómo revocar permisos de tablas de roles en Oracle.

Por ejemplo, si quisiera revocar el permiso DELETE en una tabla llamada proveedores de un rol llamado test_role, ejecutaría la siguiente instrucción REVOKE:

REVOKE delete ON suppliers FROM test_role;

Si desea revocar todos los permisos en una tabla llamada proveedores de un rol llamado test_role, puede usar la palabra clave ALL. Por ejemplo:

REVOKE all ON suppliers FROM test_role;

Otorgar privilegios funcionales/de programa a los roles

Al trabajar con funciones y procedimientos, puede otorgar a los roles la capacidad de ejecutar esas funciones y procedimientos.

sintaxis

La sintaxis para otorgar el permiso EXECUTE en una función/procedimiento a un rol en Oracle es:

GRANT EXECUTE ON object TO role_name;

EJECUTAR La capacidad de compilar una función/procedimiento y ejecutar la función/procedimiento directamente. objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permiso EXECUTE otorgado a una función o procedimiento, este será el nombre de la función o nombre del procedimiento. role_name El nombre del rol al que se le otorgará el permiso EXECUTE.

ejemplo

Veamos un ejemplo de cómo otorgar el permiso EXECUTE en una función o procedimiento a un rol en Oracle.

Por ejemplo, si tuviera una función llamada Find_Value y quisiera otorgar acceso EXECUTE a un rol llamado test_role, ejecutaría la siguiente instrucción GRANT:

GRANT execute ON Find_Value TO test_role;

Revocar privilegios de función/procedimiento para roles

Después de otorgar permisos EXECUTE en una función o procedimiento a un rol, es posible que deba revocar esos permisos del rol. Para hacer esto, puede ejecutar el comando REVOKE.

sintaxis

La sintaxis para revocar permisos sobre una función o procedimiento desde un rol en Oracle es:

REVOKE execute ON object FROM role_name;

EXECUTE revoca la capacidad de compilar una función/procedimiento y ejecutar la función/procedimiento directamente. objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar el permiso EXECUTE sobre una función o procedimiento, éste será el nombre de la función o nombre del procedimiento. role_name El nombre del rol cuyo permiso EXECUTE será revocado.

ejemplo

Veamos un ejemplo de cómo otorgar el permiso EXECUTE en una función o procedimiento a un rol en Oracle.

Si quisiera revocar el permiso EXECUTE en la función Find_Value del rol llamado test_role, ejecutaría la siguiente instrucción REVOKE:

REVOKE execute ON Find_Value FROM test_role;

Otorgar roles a los usuarios

Ahora que ha creado una función y asignado permisos a la función, debe otorgar la función a usuarios específicos.

sintaxis

La sintaxis para otorgar un rol a un usuario en Oracle es:

GRANT role_name TO user_name;

role_name El nombre del rol que desea otorgar. nombre_usuario El nombre del usuario al que se le otorgará el rol.

ejemplo

Veamos un ejemplo de cómo otorgar roles a usuarios en Oracle:

GRANT test_role TO smithj;

Este ejemplo otorga un rol llamado test_role a un usuario llamado smithj.

Habilitar/deshabilitar roles (establecer reclamos de roles)

Para habilitar o deshabilitar un rol para la sesión actual, use la instrucción SET ROLE.

Cuando un usuario inicia sesión en Oracle, todos los roles predeterminados están habilitados, pero los roles no predeterminados deben habilitarse mediante la instrucción SET ROLE.

sintaxis

La sintaxis de la declaración SET ROLE en Oracle es:

SET ROLE
( role_name [ IDENTIFIED BY password ] | ALL [EXCEPT role1, role2, ... ] | NONE );

role_name El nombre del rol que desea habilitar. IDENTIFICADO POR contraseña Habilita la contraseña para este rol. Esta frase se puede omitir si el rol no tiene contraseña. TODOS Esto significa que todos los roles deben estar habilitados para la sesión actual, excepto los enumerados en EXCEPTO. NINGUNO deshabilita todos los roles (incluidos todos los roles predeterminados) para la sesión actual.

ejemplo

Veamos un ejemplo de cómo habilitar roles en Oracle.

Por ejemplo:

SET ROLE test_role IDENTIFIED BY test123;

Este ejemplo habilita un rol llamado test_role con una contraseña de test123.

Establecer rol como rol predeterminado

El rol predeterminado significa que el rol siempre está habilitado para la sesión actual al iniciar sesión. No es necesario emitir una instrucción SET ROLE. Para establecer el rol en DEFAULT ROLE, debe emitir una instrucción ALTER USER.

sintaxis

La sintaxis para establecer un rol en DEFAULT ROLE en Oracle es:

ALTER USER user_name
DEFAULT ROLE
( role_name | ALL [EXCEPT role1, role2, ... ] | NONE );

nombre_usuario El nombre del usuario cuya función estableció en DEFAULT. role_name El nombre del rol que desea establecer como DEFAULT. TODO significa que todos los roles, excepto los enumerados en EXCEPTO, deben habilitarse como PREDETERMINADOS. NONE deshabilita todos los roles a DEFAULT.

ejemplo

Veamos un ejemplo de cómo establecer el rol en DEFAULT ROLE en Oracle.

Por ejemplo:

ALTER USER smithj
DEFAULT ROLE
test_role;

Este ejemplo establece un rol llamado test_role como el rol predeterminado para un usuario llamado smithj.

ALTER USER smithj
DEFAULT ROLE
ALL;

Este ejemplo establece todos los roles asignados a smithj en DEFAULT.

ALTER USER smithj
DEFAULT ROLE
ALL EXCEPT test_role;

Este ejemplo establece todas las funciones asignadas a smithj en DEFAULT, excepto la función denominada test_role.

eliminar rol

Después de crear un rol en Oracle, es posible que deba eliminar el rol en algún momento.

sintaxis

La sintaxis para eliminar un rol en Oracle es:

DROP ROLE role_name;

role_name El nombre del rol a eliminar.

ejemplo

Veamos un ejemplo de cómo eliminar un rol en Oracle.

Por ejemplo:

DROP ROLE test_role;

Esta instrucción DROP eliminará el rol denominado test_role que definimos anteriormente.

(Visited 9 times, 1 visits today)