参考:http://www.itpub.net/thread-1284858-1-1.html

1.ORACLE 先创建的x$ 表即RDBMS的内部表

2.然后在X$表的基础上创建了GV$ 视图。
   GV$视图是为了满足OPS环境的需要即集群环境的需要

3.接着根据GV$视图创建了 V$视图,其实就是加了一个
   instance number的过滤条件。基本每个v$视图都对应一个GV$视图。

4.然后ORACLE又根据GV$视图创建了GV_$视图。随即创建了V_$视图。
 (注意是有区别的,下划线__)

5.然后根据V_$视图创建了同义词。

因此我们平时访问的动态性能视图都是同义词。
这些工作其实是创建数据库的时候由一个脚本来实现的,$ORACLE_HOME/rdbms/admin/catalog.sql

这个脚本里你可能会发现如下语句:
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;
create or replace view gv_$fixed_table as select * from gv$fixed_table;
create or replace public synonym gv$fixed_table for gv_$fixed_table;

通过v_$视图,ORACLE把用户跟v$视图隔离开了。

以v$instance为例。

1.查询dba_objects 知,v$instance是同义词
   SELECT * FROM Dba_OBJECTS WHERE OBJECT_name='V$INSTANCE'

2.查询dba_synonyms,可知道他是V_$INSTANCE表的同义词
   SELECT * FROM dba_synonyms WHERE synonym_name='V$INSTANCE'

3.查看v_$instance的创建语句,

SELECT * FROM dba_views
   WHERE view_name=upper('V_$INSTANCE')
   发现它是有v$instance创建的.

4.查看v$instance创建语句。
   SELECT * FROM v$fixed_view_definition WHERE view_name =upper('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 GV$INSTANCE
   where inst_id = USERENV('Instance')

发现它是根据gv$instance创建的,只是加了一个inst_id的过滤条件。

5.继续查看gv$instance的创建语句
    SELECT * FROM v$fixed_view_definition WHERE view_name =upper('v$instance')

发现它是由X$内部表创建的。
    select ks.inst_id,ksuxsins,ksuxssid,ksuxshst,ksuxsver,ksuxstim,
            decode(ksuxssts,0,'STARTED',1,'MOUNTED',2,'OPEN',3,'OPEN MIGRATE','UNKNOWN'),
            decode(ksuxsshr,0,'NO',1,'YES',2,NULL),ksuxsthr,
            decode(ksuxsarc,0,'STOPPED',1,'STARTED','FAILED'),
            decode(ksuxslsw,0,NULL,2,'ARCHIVE LOG',3,'CLEAR LOG',4,'CHECKPOINT',5,'REDO GENERATION'),
            decode(ksuxsdba,0,'ALLOWED','RESTRICTED'),decode(ksuxsshp,0,'NO','YES'),
            decode(kvitval,0,'ACTIVE',2147483647,'SUSPENDED','INSTANCE RECOVERY'),
            decode(ksuxsrol,1,'PRIMARY_INSTANCE',2,'SECONDARY_INSTANCE','UNKNOWN'),
            decode(qui_state,0,'NORMAL',1,'QUIESCING',2,'QUIESCED','UNKNOWN'),
            decode(bitand(ksuxsdst, 1), 0, 'NO', 1, 'YES', 'NO')
     from x$ksuxsinst ks, x$kvit kv, x$quiesce qu
   where kvittag = 'kcbwst'

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 GV$INSTANCE
  where inst_id = USERENV('Instance')

v$instance如何生成的更多相关文章

  1. 【ORM】--FluentNHibernate之AutoMapping详解

           上篇文章详细讨论了FluentNHibernate的基本映射的使用方法,它的映射基本用法是跟NHibernate完全一样的,首先要创建数据库链接配置文件,然后编写Table的Mappin ...

  2. C#中成员初始化顺序

    http://blog.csdn.net/huangcailian/article/details/25958967 一.成员初始化整体顺序 1.成员赋值初始化先于构造函数: 2.成员赋值初始先从子类 ...

  3. 序列化和反序列化的几种方式(DataContractSerializer)(二)

    DataContractSerializer 类 使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档. 无法继承此类. 命名空间: System.Runtime.Serializati ...

  4. Linux/Unix shell 自动发送AWR report(二)

    观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告.不过awrrpt.sql脚本执行时需要我们提供一些交互信 ...

  5. 自定义Template,向其中添加新的panel

    参考网站:https://www.devexpress.com/Support/Center/Example/Details/E2690 思路: 新建一个DefaultTemplate:       ...

  6. Django(九)上:ModelForm操作

    一.内容回顾 Model - 数据库操作 - 验证 class A(MOdel): user = email = pwd = Form - class LoginForm(Form): email = ...

  7. python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))

    昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据. StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对 ...

  8. python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)

    今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...

  9. python 全栈开发,Day114(装饰器,排序规则,显示列,添加按钮,定制ModelForm,自定义列表页面,自定制URL)

    一.装饰器 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事务处理, ...

随机推荐

  1. 利用navcat为mysql数据库单独的表赋权限及表结构同步

    为mysql数据库单独的表赋权限 场景:考勤系统需要拿OA数据库td_oa中的flow_run和flow_run_data表中的数据做考勤计算 考勤系统只需要读取这两张表的数据,所以只需要开通一个单独 ...

  2. 图解修改Maven本地仓库存储路径

    1 从Maven中心仓库下载到本地的jar包的默认存放在"${user.home}/.m2/repository"中,${user.home}表示当前登录系统的用户目录(如&quo ...

  3. Linux常用命令2(远程文件下载+查看文件内容)

    一.远程文件下载的两种方法:ftp命令 + scp命令 ftp命令: 服务器若安装了ftp Server,另外一台Linux可以使用ftp的client程序来进行文件的远程拷贝读取下载和写入上载. 1 ...

  4. Python-css高级

    1. 伪类和伪元素 1. 伪类 1. :link 2. :visited 3. :hover (重要) 4. :active 5. :focus(input标签获取光标焦点) 2. 伪元素 1. :f ...

  5. 100以内奇偶数(for循环)

  6. 步步为营-56-JQuery基础

    jQuery本质还是封装好的js,只不过代码更简洁,而做的更好 使用JQuery选择器会返回一个jQuery对象,其本质是dom数组,jQuery对象可以调用JQuery方法. 1 选择器 1.1 基 ...

  7. 使用匿名内部类调用start方法

    package chapter03;//类实现接口public class WD implements Runnable{//重写接口的方法 @Override public void run() { ...

  8. 集合List和ArrayList的示例

    package chapter09; import java.util.ArrayList;import java.util.List; /* * List * ArrayList底层是数组 * 特点 ...

  9. Android使用帧动画内存溢出解决方法

    Android使用帧动画内存溢出解决方法https://blog.csdn.net/daitu_liang/article/details/52336015https://blog.csdn.net/ ...

  10. AOJ 0009 Prime Number

    题意:给出n,求不大于n的素数有多少个. 算法:先用线性时间复杂度的筛法打素数表,对于每个输入统计不超过的素数个数. #include <cstdio> int p[100010]; bo ...