Transcripción Consultando roles en Oracle DBA: métodos y procedimientos
En la gestión de bases de datos, es crucial poder consultar los roles que existen en el sistema, así como los privilegios asociados a cada uno de ellos.
Para lograrlo, es posible acceder a varias tablas que nos permiten obtener información sobre los roles. A continuación, revisaremos algunas de las principales tablas que pueden ser útiles para acceder a dicha información.
Tablas a nivel de sistema
DBA_ROLES
Una de las primeras tablas que revisaremos es la DBA_ROLES, en la cual podremos visualizar un listado con los roles existentes y los diferentes atributos asociados a cada uno de ellos.
Para consultar su contenido, utilizaremos la siguiente instrucción:
- SELECT ROLE_ID, ROLE FROM DBA_ROLES
Con esta consulta, obtendremos un listado que muestra el ID y el nombre de cada uno de los roles presentes en el sistema. Otros atributos disponibles en esta tabla incluyen:
- PASSWORD_REQUIRED, AUTHENTICATION_TYPE, ORACLE_MAINTAINED, INHERITED y otros, que pueden consultarse si se desea más información detallada.
Al ejecutar la consulta, podremos observar un resultado con 90 registros o filas, donde se incluyen tanto los roles del sistema como los creados por los usuarios.
Si creamos un nuevo rol, por ejemplo con el siguiente comando:
- CREATE ROLE PRODUCCIÓN
Luego, si consultamos nuevamente la tabla DBA_ROLES, esta vez seleccionando los atributos ROLE y ORACLE_MAINTAINED, obtendremos el nombre del rol y si este es mantenido por Oracle.
Al revisar el resultado, observaremos el rol "PRODUCCIÓN" que hemos creado, y al comprobar, veremos que no está mantenido por Oracle.
Es importante recordar que los datos mantenidos por Oracle solo pueden ser modificados mediante scripts desarrollados por Oracle. En cambio, los roles creados por usuarios pueden ser modificados.
DBA_ROLES_PRIVS
Otra tabla relevante en cuanto a roles es la DBA_ROLES_PRIVS.
Podemos consultar los privilegios asociados a diferentes usuarios con la siguiente consulta:
- SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLES_PRIVS
Si ejecutamos la consulta, podremos ver los privilegios asignados a los usuarios a nivel de rol. Como esta tabla contiene muchos registros, podemos filtrar la consulta para un usuario específico:
- SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLES_PRIVS WHERE GRANTEE= "DESA1"
De esta forma, listaremos los roles asignados al usuario DESA1. Al ejecutar la consulta, observamos que este usuario tiene los roles CONNECT y DESARROLLO. También podemos invertir la búsqueda y listar los usuarios asociados a un rol específico.
Por ejemplo:
- SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLES_PRIVS WHERE GRANTED_ROLE = "DESARROLLO"
Al realizar esta consulta, observamos que los usuarios SYS y DESA1 tienen el rol DESARROLLO asignado.
Tablas a nivel de usuario
Hasta ahora hemos explorado cómo consultar roles a nivel de sistema. Ahora veremos cómo hacerlo a nivel de usuario. Para ello, cerraremos la sesión actual e iniciaremos sesión con el usuario DESA1.
SESSION_ROLES
Una vez dentro de la sesión, podremos ver los roles con los que estamos trabajando. Para esto, utilizaremos la tabla SESSION_ROLES, que muestra los roles asociados al usuario de la sesión.
Para visualizar estos roles, ejecutaremos la siguiente consulta:
- SELECT * FROM SESSION_ROLES
Esta consulta nos muestra de manera básica la información relacionada con los roles activos en la sesión.
USER_ROLE_PRIVS
Para obtener más información acerca de los roles asignados, podemos consultar la tabla USER_ROLE_PRIVS, donde se
consultando roles