1. Usando las vistas `dba_sys_privs` y` dba_tab_privs`:
Estas vistas del diccionario de datos proporcionan información completa sobre los privilegios de sistemas y objetos otorgados a los usuarios. `DBA_SYS_PRIVS` muestra los privilegios del sistema (por ejemplo,` Create Table`, `Create Session`), mientras que` DBA_TAB_PRIVS` muestra privilegios de objetos (por ejemplo, `select`,` inserción ', `actualización' en tablas específicas).
* Para los privilegios del sistema:
`` `SQL
Seleccione * de dba_sys_privs Where breatee ='username';
`` `` ``
Reemplace el `nombre de usuario` con el nombre de usuario real.
* Para los privilegios de objetos:
`` `SQL
Seleccione * de DBA_TAB_PRIVS DONDE SCUENDEE ='UserName';
`` `` ``
Reemplace el `nombre de usuario` con el nombre de usuario real. Esto mostrará todos los privilegios en todas las tablas. Puede refinar esta consulta para ver tablas específicas:
`` `SQL
Seleccione * de DBA_TAB_PRIVS DONDE SCUENDEE ='USERNAME' y TABLE_NAME ='TABLE_NAME';
`` `` ``
Reemplace `table_name` con el nombre de la tabla.
2. Usando las vistas `All_sys_Privs` y` all_tab_privs`:
Estas vistas proporcionan información sobre los privilegios que un usuario * tiene * directamente o indirectamente a través de roles. Esto es útil para un usuario que verifica sus propios privilegios. Si se conecta como usuario, puede usar estas vistas:
* Para los privilegios del sistema:
`` `SQL
Seleccionar * de all_sys_privs;
`` `` ``
* Para los privilegios de objetos:
`` `SQL
Seleccionar * de all_tab_privs;
`` `` ``
También puede filtrar por nombre de usuario como las vistas `dba_`.
3. Usando las vistas `us_sys_privs` y` use_tab_privs`:
Estas vistas muestran solo los privilegios otorgados directamente al usuario conectado. No muestran privilegios otorgados a través de roles. Útil para un usuario solo viendo sus propios privilegios directos.
* Para los privilegios del sistema:
`` `SQL
Seleccionar * de user_sys_privs;
`` `` ``
* Para los privilegios de objetos:
`` `SQL
Seleccionar * de user_tab_privs;
`` `` ``
4. Usando la columna `rol 'en las vistas anteriores:
La columna `rol` en` dba_sys_privs`, `dba_tab_privs`,` all_sys_privs`, `all_tab_privs` indica si el privilegio se otorga directamente o a través de un rol. Si se otorga a través de un rol, deberá investigar los privilegios otorgados a ese papel. Puede encontrar información sobre los roles utilizando las vistas `dba_roles`,` All_roles` o `User_roles`, dependiendo de su nivel de acceso.
5. Usando `show user`:
Este comando (en SQL*Plus o SQL Developer) mostrará al usuario conectado actualmente. Esto no muestra directamente privilegios, pero es un punto de partida para luego usar las vistas anteriores.
Consideraciones importantes:
* Roles de base de datos: Los usuarios a menudo reciben privilegios indirectamente a través de roles. Debe examinar los roles a los que pertenece un usuario y los privilegios tienen esos roles. Esto requiere consultar las vistas `dba_roles`,` all_roles` o `use_roles`.
* Privilegios en cascada a través de roles: Los roles pueden otorgar privilegios a otros roles. Esto puede crear estructuras de privilegios complejos.
* Niveles de acceso: Necesita los privilegios apropiados (por ejemplo, `Seleccione cualquier diccionario ') para consultar las vistas del diccionario de datos. Las vistas de `DBA_` generalmente requieren el papel` DBA`.
Recuerde reemplazar 'UserName` y `table_name` con el nombre de usuario y el nombre de la tabla reales que le interesa. Siempre ejecute estas consultas con precaución, especialmente aquellas que usan vistas` DBA_`, ya que proporcionan acceso a información confidencial.