可以通过将动态视图向普通用户授权的方式来让普通用户有查看动态视图的权限。
但是一般V$开头的其实是同义词,所以在授权时会有下面的错误:
SQL> grant select on V$session to hr;
grant select on V$session to hr
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
可以通过下面的视图进行查看对应关系。
SQL> select synonym_name,table_name
from dba_synonyms where synonym_name='V$SESSION';
SYNONYM_NAME TABLE_NAME
------------------------------ ------------------------------
V$SESSION V_$SESSION
所以可以用下面的方式授权
SQL> grant select on V_$SESSION to hr;
动态视图的同义词与本身在命名上有特点,一般仅是有无“_”的区别:
SQL> select synonym_name,table_name
2 from dba_synonyms where rownum <=10;
SYNONYM_NAME TABLE_NAME
------------------------------ ------------------------------
V$PARALLEL_DEGREE_LIMIT_MTH V_$PARALLEL_DEGREE_LIMIT_MTH
V$PARAMETER V_$PARAMETER
V$PARAMETER2 V_$PARAMETER2
V$PARAMETER_VALID_VALUES V_$PARAMETER_VALID_VALUES
V$PERSISTENT_PUBLISHERS V_$PERSISTENT_PUBLISHERS
V$PERSISTENT_QMN_CACHE V_$PERSISTENT_QMN_CACHE
V$PERSISTENT_QUEUES V_$PERSISTENT_QUEUES
V$PERSISTENT_SUBSCRIBERS V_$PERSISTENT_SUBSCRIBERS
V$PGASTAT V_$PGASTAT
V$PGA_TARGET_ADVICE V_$PGA_TARGET_ADVICE
所以可以在不用查看dba_synonyms的情况下来授权:
grant select on v_$process to hr;
grant select on v_$mystat to hr;