在catalog中有这么一段:create or replace view v_$instance as select * from v$instance;
create or replace public synonym v$instance for v_$instance;
grant select on v_$instance to select_catalog_role;第一行中的v$instance是表还是视图,从哪个数据字典中可以找到它的信息,它的拥有者是谁?
view v_$instance 和public synonym v$instance我都能找到。
create or replace public synonym v$instance for v_$instance;
grant select on v_$instance to select_catalog_role;第一行中的v$instance是表还是视图,从哪个数据字典中可以找到它的信息,它的拥有者是谁?
view v_$instance 和public synonym v$instance我都能找到。
select * from all_synonyms where synonym_name='V$INSTANCE'OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
PUBLIC V$INSTANCE SYS V_$INSTANCE --指向sys下的v_$instance.这是一个系统视图
select * from all_views where view_name='V_$INSTANCE'OWNER VIEW_NAME TEXT_LENGTH TEXT TYPE_TEXT_LENGTH TYPE_TEXT OID_TEXT_LENGTH OID_TEXT VIEW_TYPE_OWNER VIEW_TYPE SUPERVIEW_NAME EDITIONING_VIEW READ_ONLY
SYS V_$INSTANCE 239 <Long> N N
INSTANCE_NAME ,
HOST_NAME ,
VERSION ,
STARTUP_TIME ,
STATUS ,
PARALLEL ,
THREAD# ,
ARCHIVER ,
LOG_SWITCH_WAIT ,
LOGINS ,
SHUTDOWN_PENDING,
DATABASE_STATUS,
INSTANCE_ROLE,
ACTIVE_STATE,
BLOCKED
from GV$INSTANCE
where inst_id = USERENV('Instance')
SQL> select owner,object_name,object_type from dba_objects where object_name='V$INSTANCE';OWNER OBJECT_NAME OBJECT_TYPE
---------- ------------------------------ -------------------
PUBLIC V$INSTANCE SYNONYMSQL> select table_name,comments from dictionary where table_name = 'V$INSTANCE';TABLE_NAME COMMENTS
-------------------- ----------------------------------------
V$INSTANCE Synonym for V_$INSTANCE
X$表只能由sysdba访问v$instance 大概是来自 X$KSUXSINST 表吧
你的是11G的?
我就感到疑惑的是:不是同义词的v$instance是怎么东西,去哪找。拥有者是谁
v_$*是v$*(table)的视图,而v$*(synonym)是v_$*的同义词,v$*(table)的数据由oracle自己写入,用户看到的是v$*(synonym)和v_$*,经过这样的封装之后,oracle系统的表对用户来说就是透明的了,包括dba都不知道也不用知道到底是怎么回事。就拿你说的V$INSTANCE来举例子吧
SQL> select owner,object_name,object_type from dba_objects where object_name='V$
INSTANCE';OWNER OBJECT_NAME OBJECT_TYPE
---------- ------------------------------ -------------------
PUBLIC V$INSTANCE SYNONYMSQL> desc dba_synonym
ERROR:
ORA-04043: object dba_synonym does not exist
SQL> desc dba_synonyms
Name Null? Type
----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30)
SYNONYM_NAME NOT NULL VARCHAR2(30)
TABLE_OWNER VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
DB_LINK VARCHAR2(128)SQL> select owner,synonym_name,table_name from dba_synonyms
2 where synonym_name='V$INSTANCE';OWNER SYNONYM_NAME TABLE_NAME
---------- ------------------------------ ------------------------------
PUBLIC V$INSTANCE V_$INSTANCESQL> select owner,object_name,object_type from dba_objects where object_name='V_
$INSTANCE';OWNER OBJECT_NAME OBJECT_TYPE
---------- ------------------------------ -------------------
SYS V_$INSTANCE VIEWSQL> desc dba_views
Name Null? Type
----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30)
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)
SQL> select owner,view_name,text from dba_views where view_name='V_$INSTANCE';OWNER VIEW_NAME
---------- ------------------------------
TEXT
--------------------------------------------------------------------------------SYS V_$INSTANCE
select "INSTANCE_NUMBER","INSTANCE_NAME","HOST_NAME","VERSION","STARTUP_TIME","STATUS","PARALLEL","THREAD#","ARCHIVER","LOG_SWITCH_WAIT","LOGINS","SHUTDOWN_PENDING","DATABASE_STATUS","INSTANCE_ROLE","ACTIVE_STATE","BLOCKED" from v$instance