Para permitir esto, aplicando el principio de “mínimos
privilegios”, podemos construir un role de base de datos con los "grants" necesarios para poder generar los reportes, y asignarlo luego a los usuarios que lo necesiten.
Los privilegios necesarios para generar un reporte son los siguientes:
grant select on sys.v_$database to rol_exec_awr;
grant select on sys.v_$instance to rol_exec_awr;
grant execute on sys.dbms_workload_repository to rol_exec_awr;
grant select on sys.dba_hist_database_instance to rol_exec_awr;
grant select on sys.dba_hist_snapshot to rol_exec_awr;
Veamos un ejemplo de como hacerlo:
Vamos a crear primero un usuario (awrusr) con privilegios de connect y resource para simular el usuario que
necesita correr los reportes AWR.
[oracle@server01 ~]$
sqlplus / as sysdba
SQL> create user
awrusr identified by oracle
default tablespace users
temporary tablespace temp;
User created.
