本次实验测试,oracle数据库视图中v$,v_$,gv$之间的关系
总结:
v_$是动态性能视图,通过sql查询数据库基表返回记录。例如,v_$database对象是视图类型,可对其它用户授权访问;
v$database则是为了简化查询,是v_$database的同义词,oracle同义词无法作为对象,进行赋权语句执行grant;
gv_则是集群,多了一个Inst_id区分实例
1.对象类型
SYS@ceshi>select object_name,object_type,status from user_objects where object_name in('V$SESSION',
:: 'V_$SESSION','GV$SESSION'); OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
V_$SESSION VIEW VALID SYS@ceshi>select synonym_name,table_name from dba_synonyms where synonym_name in('V$SESSION','GV$SESSION'); SYNONYM_NAME TABLE_NAME
------------------------------ ------------------------------
GV$SESSION GV_$SESSION
V$SESSION V_$SESSION
2.授权报错
:: SYS@ceshi>grant select on V_$SESSION to scott; Grant succeeded. Elapsed: ::00.13
:: SYS@ceshi>grant select on V$SESSION to scott;
grant select on V$SESSION to scott
*
ERROR at line :
ORA-: can only select from fixed tables/views 授权,需要授予对象权限,同义词无法作为授权对象
3.GET_DDL
提取GV$SESSION基表定义,如下链接可以帮助查询,普通get_ddl查询的定义是错误的
http://t.askmaclean.com/thread-392-1-1.html