zoukankan      html  css  js  c++  java
  • v$instance如何生成

    参考: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')

  • 相关阅读:
    开课 博客
    给定数组求数组中和最大子数组的和
    课堂测验
    读梦断代码有感(3)2019.2.20
    读梦断代码有感(2)2019.2.10
    读梦断代码有感(1)2019.2.05
    进度七
    进度 六
    sjz地铁作业
    进度四
  • 原文地址:https://www.cnblogs.com/ahudyan-forever/p/6015018.html
Copyright © 2011-2022 走看看