v$fixed_table表研究

SQL>CONNECT SYS/PASS@SID AS SYSDBA

  1* select * from v$fixed_table where name='X$KZSRO'

SQL> /

NAME                                                          OBJECT_ID

------------------------------------------------------------ ----------

TYPE        TABLE_NUM

---------- ----------

X$KZSRO                                                      4294951024

TABLE             309

V$FIXED_TABLE的定义

SQL> select * from v$fixed_view_definition where view_name='V$FIXED_TABLE';

VIEW_NAME

------------------------------------------------------------

VIEW_DEFINITION

--------------------------------------------------------------------------------

V$FIXED_TABLE

select  NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE where inst_id =

USERENV('Instance')

 

  1* select * from v$fixed_view_definition where view_name='GV$FIXED_TABLE'

SQL> /

VIEW_NAME

------------------------------------------------------------

VIEW_DEFINITION

--------------------------------------------------------------------------------

GV$FIXED_TABLE

select inst_id,kqftanam, kqftaobj, 'TABLE', indx from x$kqfta union all select i

nst_id,kqfvinam, kqfviobj, 'VIEW', 65537 from x$kqfvi union all select inst_id,k

qfdtnam, kqfdtobj, 'TABLE', 65537 from x$kqfdt

 

v_$fixed_table 和v$fixed_table的区别

create or replace view v_$fixed_table as select * from v$fixed_table;

create or replace public synonym v$fixed_table for v_$fixed_table;

grant select on v_$fixed_table to select_catalog_role; 

也就是说v_$fixed_table 是v$fixed_table的视图,PUBLIC v$fixed_table是v_$fixed_table的同意词。

 

也就是说先有x$基表,再有GV$FIXED_TABLE 视图,再有V$FIXED_TABLE,再有v_$fixed_table 试图,再有v$fixed_table 公共同义词。

 

fixed_table可以SELECT ,DESC

SQL> select * from X$KZSRO;

ADDR           INDX    INST_ID   KZSROROL

-------- ---------- ---------- ----------

00000000          0          1          1

00000008          1          1          0

 

SQL> desc X$KZSRO

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 ADDR                                               RAW(4)

 INDX                                               NUMBER

 INST_ID                                            NUMBER

 KZSROROL                                           NUMBER

 

fixed_table只在v$fixed_table存在

  1* select table_name from user_tables where table_name like 'X$KZSRO%'

SQL> /

no rows selected

SQL> select table_name from dba_tables where table_name='X$KZSRO'

  2  /

no rows selected

 

 

v$fixed_table的授权方式

  1* grant select  on v$fixed_table to sbtopt

SQL> /

grant select  on v$fixed_table to sbtopt

                 *

ERROR at line 1:

ORA-02030: can only select from fixed tables/views

SQL> grant select on v_$fixed_table to system

  2  /

Grant succeeded.

SQL> SELECT dbms_metadatA.get_ddl('VIEW','V$FIXED_TABLE') FROM DUAL;

ERROR:

ORA-31603: object "V$FIXED_TABLE" of type VIEW not found in schema "SYS"

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105

ORA-06512: at "SYS.DBMS_METADATA", line 628

ORA-06512: at "SYS.DBMS_METADATA", line 1221

ORA-06512: at line 1

 

 

fixed_table的授权方式

SQL> grant select on SYS.X$KZSRO to system;

grant select on SYS.X$KZSRO to system

                    *

ERROR at line 1:

ORA-02030: can only select from fixed tables/views

直接授权不许可

SQL> create view v_x$kzsro as select * from sys.x$kzsro;

View created.

SQL> grant select on v_x$kzsro to system;

Grant succeeded.

间接授权可以

 

同v$fixed_table的授权方式一样,基本表或视图不能直接授权,只能间接授权

 

  1* select * from sys.v_x$kzsro

SQL> /

ADDR           INDX    INST_ID   KZSROROL

-------- ---------- ---------- ----------

00000000          0          1          1

00000008          1          1          5

00000010          2          1         61

00000018          3          1          4

00000020          4          1          6

00000028          5          1         20

00000030          6          1          7

00000038          7          1          8

00000040          8          1          9

00000048          9          1         10

00000050         10          1         13

ADDR           INDX    INST_ID   KZSROROL

-------- ---------- ---------- ----------

00000058         11          1         22

00000060         12          1         28

00000068         13          1         29

00000070         14          1         37

00000078         15          1         45

00000080         16          1         15

00000088         17          1         50

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12712263/viewspace-606661/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12712263/viewspace-606661/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值