普通用户查看动态视图

时间:2021-09-14 09:31:58

可以通过将动态视图向普通用户授权的方式来让普通用户有查看动态视图的权限。
但是一般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;