探索数据字典,提高自学习Oracle能力(转)

探索数据字典,提高自学习Oracle能力(转)
首页 技术基础 备份恢复 SQL优化 诊断案例 BLOG 留言板 服务 生活 网摘 阅读 下载 相册 eRss English 探索数据字典,提高自学习Oracle能力作者:eygle 出处:http://www.eygle.com/blog 日期:January 10, 2005 浏览次数: 1370 本文链接:http://www.eygle.com/archives/2005/01/ieeeoeaeiaonieo.html « Oracle的初始化参数说明 | Blog首页 | dml lock allocation latch » -------------------------------------------------------------------------------- 我们知道Oracle通过数据字典来管理和展现数据库信息,这些信息至关重要。正确理解这部分内容有助于加强我们的oracle学习能力。 接下来我们介绍一下怎样通过数据库本身来学习研究数据库。 首先,Oracle的字典表和视图基本上可以分为三个层次。 1.X$表这一部分表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。 2.GV$和V$视图从Oracle8开始,GV$视图开始被引入,其含义为Global V$. 除了一些特例以外,每个V$视图都有一个对应的GV$视图存在。 GV$视图的产生是为了满足OPS环境的需要,在OPS环境中,查询GV$视图返回所有实例信息,而每个V$视图基于GV$视图,增加了INST_ID列建立,只包含当前连接实例信息。 注意,每个V$视图都包含类似语句: where inst_id = USERENV('Instance') 用于限制返回当前实例信息。 我们从GV$FIXED_TABLE和V$FIXED_TABLE开始 SQL> select view_definition from v_$fixed_view_definition where view_name='V$FIXED_TABLE'; VIEW_DEFINITION ------------------------------------------------------------------------------------------------------ select NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE where inst_id = USERENV('Instance') 这里我们看到V$FIXED_TABLE基于GV$FIXED_TABLE创建。 SQL> select view_definition from v_$fixed_view_definition where view_name='GV$FIXED_TABLE'; VIEW_DEFINITION -------------------------------------------------------------------------------------------------------- select inst_id,kqftanam, kqftaobj, 'TABLE', indx from x$kqfta union all select inst_id,kqfvinam, kqfviobj, 'VIEW', 65537 from x$kqfvi union all select inst_id,kqfdtnam, kqfdtobj, 'TABLE', 65537 from x$kqfdt 这样我们找到了GV$FIXED_TABLE视图的创建语句,该视图基于X$表创建。 3.GV_$,V_$视图和V$,GV$同义词这些视图是通过catalog.ql创建。 当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_$和GV_$首先被创建,v_$和gv_$两个视图。然后基于V_$视图的同义词被创建。 所以,实际上通常我们访问的V$视图,其实是指向V_$视图的同义词。而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)。 而v$fixed_view_definition视图是我们研究Oracle对象关系的一个入口,仔细理解Oracle的数据字典机制,有助于深入了解和学习Oracle数据库只是。 再进一步 1. X$表 关于X$表,其创建信息我们也可以从数据字典中一窥究竟。首先我们考察bootstrap$表,该表中记录了数据库启动的基本及驱动信息。 SQL> select * from bootstrap$; LINE# OBJ# SQL_TEXT ---------- ---------- -------------------------------------------------------------------------------- -1 -1 8.0.0.0.0 0 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 M 8 8 CREATE CLUSTER C_FILE#_BLOCK#("TS#" NUMBER,"SEGFILE#" NUMBER,"SEGBLOCK#" NUMBER) 9 9 CREATE INDEX I_FILE#_BLOCK# ON CLUSTER C_FILE#_BLOCK# PCTFREE 10 INITRANS 2 MAXT 14 14 CREATE TABLE SEG$("FILE#" NUMBER NOT NULL,"BLOCK#" NUMBER NOT NULL,"TYPE#" NUMBE 5 5 CREATE TABLE CLU$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"TS#" NUMBER NOT NULL 6 6 CREATE CLUSTER C_TS#("TS#" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS 255 7 7 CREATE INDEX I_TS# ON CLUSTER C_TS# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( .... 这部分信息,在数据库启动时最先被加载,跟踪数据库的启动过程,我们发现数据库启动的第一个动作就是: create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents (file 1 block 377)) 这部分代码是写在Oracle应用程序中的,在内存中创建了bootstrap$以后,Oracle就可以从file 1,block 377上读取其他信息,创建重要的数据库对象。这部分你可以参考biti_rainy的文章。 X$表由此建立。这一部分表可以从v$fixed_table中查到: SQL> select count(*) from v$fixed_table where name like 'X$%'; COUNT(*) ---------- 394 共有394个X$对象被记录。 2.GV$和V$视图 X$表建立以后,基于X$表的GV$和V$视图得以创建。 这部分视图我们也可以通过查询V$FIXED_TABLE得到。 SQL> select count(*) from v$fixed_table where name like 'GV$%'; COUNT(*) ---------- 259 这一部分共259个对象。 SQL> select count(*) from v$fixed_table where name like 'V$%'; COUNT(*) ---------- 259 同样是259个对象。 v$fixed_table共记录了: 394 + 259 + 259 共 912 个对象。 我们通过V$PARAMETER视图来追踪一下数据库的架构: SQL> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER'; VIEW_DEFINITION -------------------------------------------------------------------------------- select NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIA BLE , ISMODIFIED , ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER wh ere inst_id = USERENV('Instance') 我们看到V$PARAMETER是由GV$PARAMETER创建的。 SQL> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER'; VIEW_DEFINITION -------------------------------------------------------------------------------- select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf, decode(bitand(kspp iflg/256,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2, 'DEFERRED', 3,'IMMEDIATE','FALSE'), decode(bit and(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), decode(bitand(ksppstvf,2) ,2,'TRUE','FALSE'), ksppdesc, ksppstcmnt from x$ksppi x, x$ksppcv y where (x.i ndx = y.indx) and ((translate(ksppinm,'_','#') not like '#%') or (ksppstdf = 'F ALSE')) 在这里我们看到GV$PARAMETER来源于x$ksppi,x$ksppcv两个X$表。 x$ksppi,x$ksppcv 基本上包含所有数据库可调整参数,v$parameter展现的是不包含"_"开头的参数。以"_"开头的参数我们通常称为隐含参数,一般不建议修改,但很多因为功能强大经常使用而广为人知。 2005-01-17修订 ----- 收藏本文至 del.icio.us|收藏此页到365Key|Tags: Posted by eygle at January 10, 2005 10:04 AM | Posted to FAQ | ReEdit 相关主题: 瑞典游记-预告篇 (10) July 28, 2005 Merry Christmas to my friends (6) December 23, 2005 试用Windows Live Messenger8.0 Beta版 (47) February 16, 2006 使用Oracle10g新特性,跨越Resetlogs时间点进行恢复 (2) April 05, 2005 Oracle10g ASM Auto IO Rebalance新特性 (0) February 17, 2006 In 48 hours,you are linked from: No referrals for this page yet. Trackback Pings TrackBack URL for this entry: http://www.eygle.com/cgi-bin/mt/mt-tb.cgi/32 Listed below are links to weblogs that reference 探索数据字典,提高自学习Oracle能力: » 濡備綍鑾峰緱Oracle鐨勯殣鍚?弬鏁?/a> from ivan Ping Back鏉ヨ嚜锛歸ww.donews.net [Read More] Tracked on May 8, 2005 04:38 PM Comments Hello, Eygle, can you introduce the naming conventions about oracle's X$ fixed table? Posted by: Thinkless at April 7, 2005 10:02 PM here you are: http://www.eygle.com/refer/Oracle_x$table_list.htm Posted by: eygle at April 8, 2005 06:35 AM Post a comment Name(*): Email Address(*): URL: Remember Me? YesNo 订阅本文更新: 验证码(*): (输入验证码后方可评论,谢谢支持) Comments: -------------------------------------------------------------------------------- CopyRight © 2004 eygle.com, All rights reserved.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/644902/viewspace-159237/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/644902/viewspace-159237/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值