视图解说

来源:互联网 发布:知呱呱官网 编辑:程序博客网 时间:2024/04/27 14:53

1. 用户不能直接访问v$的视图,v$视图只有sys可以访问。

2. 如果我们要访问系统视图(v$开头的),只能新创建一个v_$开头的视图,
   然后创建同义词与系统视图一样的名字,再访问这个别名视图,达到访问系统视图的目的。
   (每个v$视图的底层视图定义,从技术角度讲,这些视图从没有被创建,它们的定义只是以二进制形式硬编码,
   可以通过名为 v$fixed_view_definition 的v$视图查看,视图是通过选取一个或多个x$表中的信息来创建的)
   例如:
       create or replace view gv_$datafile as   --创建新的视图v_$命名
         select * from gv$datafile;             --sys才能访问的系统视图(注:系统视图是根据x$表创建的)
       create or replace public synonym gv$datafile for gv_$datafile;  --创建同义词,与系统视图名一样,以达到访问系统视图的目的

3. 要获得某个版本的oracle的所有v$视图的数量,可以查询 v$fixed_table 视图.
   例如:
       select * from v$fixed_table where lower(name) like 'v%';

4. 从oracle8以后引入了gv$视图,gv$视图(全局v$)与v$视图基本一样,只是附加了一个实例id列。
   例如:
       select * from v$fixed_table where lower(name) like 'gv%';

5. 为了获得组成v$视图的x$表的列表,必须访问 v$fixed_view_definition 视图.
   简单的说, 访问 v$fixed_view_definition 视图可以获得组成V$视图的底层X$表的所有信息。
   例如:
       select * from v$fixed_view_definition where lower(view_name) = 'gv$fixed_table';  --这里之所以不是查询 v$fixed_table, 是因为 v$fixed_table 也是访问 gv$fixed_table 视图

6. 从oracle8以后,底层的X$表存在索引,以使在V$视图上执行的查询可以更快地执行.
   可以通过 v$indexed_fixed_column 视图来查看在底层X$表上的索引信息.
   
7. DBA_视图是从Oracle底层数据库的表中得到的(当然 也有些 是通过访问X$表得到的),并非是从X$表或者V$视图得到的。
   下面的例子通过访问 dba_views 来查看DBA_视图是由哪些对象组成的。
   例如:
       select * from dba_views where view_name='DBA_IND_PARTITIONS';

8. --查询当前被锁定的用户,Oracle进程是否真地被锁定了,还是仅仅运行得比较慢.
     --您还能够识别当前的语句是否正在执行锁定用户的操作
     select /*+ ordered */ b.username, b.serial#, d.id1, a.sql_text
       from v$lock d, v$session b, v$sqltext a
      where b.lockwait = d.kaddr
        and a.address = b.sql_address
        and a.hash_value = b.sql_hash_value;
    
     --查询是哪个用户造成了前一个用户被锁定的问题
     select /*+ ordered */ a.serial#, a.sid, a.username, b.id1, c.sql_text
       from v$lock b, v$session a, v$sqltext c
      where b.id1 in (select /*+ ordered */
                      distinct e.id1
                        from v$lock e, v$session d
                       where d.lockwait = e.kaddr)
        and a.sid = b.sid
        and c.hash_value = a.sql_hash_value
        and b.request = 0;





0 0
原创粉丝点击