科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道从四大方面介绍Oracle的数据字典(2)

从四大方面介绍Oracle的数据字典(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文从四大方面介绍Oracle的数据字典首先,Oracle的字典表和视图基本上可以分为三个层次。

作者:changelive 来源:赛迪网技术社区 2007年9月5日

关键字: 数据 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

1.4 再进一步

1.4.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上读取其他信息,创建重要的数据库对象。从而根据这一部分信息启动数据库,这就实现了数据库的引导,类似于操作系统的初始化。

X$表由此建立。这一部分表可以从v$fixed_table中查到:

SQL> select count(*) from v$fixed_table where name like ’X$%’;
COUNT(*)
----------
394
共有394个X$对象被记录。

1.4.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.indx = y.indx) and ((translate(ksppinm,’_’,’#’) not 
like ’#%’) or (ksppstdf = ’FALSE’))

在这里我们看到GV$PARAMETER来源于x$ksppi,x$ksppcv两个X$表。 x$ksppi,x$ksppcv 基本上包含所有数据库可调整参数,v$parameter展现的是不包含"_"开头的参数。以"_"开头的参数我们通常称为隐含参数,一般不建议修改,但很多因为功能强大经常使用而广为人知。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章