参考: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. 在Linux上安装go-gtk

    由于Linux的Gnome桌面就是用GTK编写的,所以,Linux本身就包含GTK工具库,安装GTK工具库在线安装即可. 第一步:在终端输入: sudo apt-get install libgtk3 ...

  2. SpringMVC(1):Web MVC简介

    原文出处: 张开涛 Web MVC简介 1.1.Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问 2.  Web服务器(如Tomcat)接 ...

  3. npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法

    npm ERR! path E:\SouthernPowerGridProject\web_project\AutoOPS\autoops\node_modules\fsevents\node_mod ...

  4. 【mysql】autocommit=0后,commit, rollback无效

    之前在[mysql]MySQLdb中的事务处理中用autocommit和commit()以及rollback()实现了事务处理. 但后来,用同样的代码在另一个数据库中运行却失败了.找了一个下午的原因. ...

  5. VIM 报错

    syntax error: unexpected end of file if 没配对 在最后加 fi 试试 环境变量用不了 export PATH=/usr/bin:/usr/sbin:/bin:/ ...

  6. java控制语句 if-else while do-while for return break continue goto switch default

    if for //: object/ForEachFloat.java package object; import java.util.Random; public class ForEachFlo ...

  7. 步步为营-47-分页显示的SQL语句

    说明:分页显示在实际业务中经常需要用到,其SQL语句分两种 1:分页显示SQL语句 --方法一:跳过多少行,选中多少行 --每页n条,选择第m页--n= m= --)*n 主键 from 表); se ...

  8. icomet研究

    官方文档https://github.com/ideawu/icomet/wiki 如何实现的长连接:noop: 心跳消息+HTTP endless chunk 以班级ID为主键,进行班级通道的创建: ...

  9. django的FormView中,自定义初始化表单数据的曲折方法

    这个技巧,主要是用于表单初始化及回显. 也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里, 如果用户的数据库里没有数据,才会生成一个空白的表单给用户, 这样才显得专业塞! 而我面对的尴 ...

  10. Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

    1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...