Oracle 数据库中V$、GV$、X$、V_$、GV_$之间的关系说明
GV$:全局视图,针对多个实例环境。
V$:针对某个实例的视图。
X$:是GV$视图的数据来源,Oracle内部表。
GV_$:是GV$的同义词。
V_$:是V$的同义词。
我们可以使用V$FIXED_VIEW_DEFINITION视图查询到V$视图和GV$视图的定义。
在$ORACLE_HOME/rdbms/admin/catalog.sql中执行了cdfixed.sql脚本。我们在这个脚本中可以找到GV_、$V_$同义词的创建。
授权举例
SQL> grant select on v$mystat to HR;
grant select on v$mystat to HR
*
第 1 行出现错误:
ORA-02030: 只能从固定的表/视图查询
已用时间: 00: 00: 00.10
SQL>
为什么会出现上面的错误?
因为因为v$这类我们经常查的视图都是v_$开头视图的同义词。
所以,在进行授权时需要直接授予用户v_$的查询权限。
SQL> grant select on v_$mystat to HR;
授权成功。
已用时间: 00: 00: 00.12
SQL>
尤其是当需要给普通用户授予对SQL查询相关的几个重要的动态性能视图,需要了解:
v$session
v$sql
v$sql_plan
v$sql_plan_statistics
v$sql_workarea
(完)