文档库 最新最全的文档下载
当前位置:文档库 › 第09章-使用V$视图

第09章-使用V$视图

第9章使用V$视图

到现在,你应该对视图的概念相当熟悉。一个视图就像通过照相机透镜看一个非常狭窄的景色或全景之间的差别。你已经知道了视图是怎样用来组合多个表的列,怎样隐藏列、表名和用户的位置。在第6、7、8章中,你学习了O r a c l e的数据字典视图,即D B A_v i e w s,它帮助你管理数据库的内容和对象的定位。

在这章和下一章中,你将学习O r a c l e提供的用来帮助查看数据库统计表的视图——全局统计表及其性能。这个视图,通常叫做V$ (发音“Vee dollar”)视图,用来隐藏O r a c l e的动态表而提供给你一个监控数据库及其性能的方法。

先了解一下D B A _ v i e w s和V $视图之间有什么差别?它们基本上是一样的吗?不,

D B A_v i e w s在O r a c l e文档中叫做“静态数据字典”视图,V $视图因为它们记录数据库当前状态的实时值,而被称作“动态性能”视图。换句话说,D B A_v i e w s告诉你数据字典的状态和组成,而V $视图帮助你查看数据库的运行情况。V $视图给你提供以下的信息:? 洞察数据库竞争的区域。

? 从磁盘读出或写入的数据量。

? 统计信息,比如最近数据文件首部的改变或系统全局区的概要信息。

? 用于数据库恢复的值。

在少数V $视图中一些列没有具体数据,除非i n i t.o r a参数文件的t i m e s_s t a t i s t i c s参数值被设成T R U E。对于大多数操作系统,设置该参数为T R U E只有很小性能影响,然而也有一些操作系统会降低性能。当你在系统上第一次设置该参数为T R U E时,要细心监视性能方面的影响。如果有影响,则只是在你要收集数据库信息的短时间内使用那个参数。你也可以通过 a l t e r s y s t e m命令动态地修改t i m e d_s t a t i s t i c s参数,这样,数据库就没有必要关闭和重启。这对于只是短时间内激活t i m e d_s t a t i s t i c s是有好处的。

同时也要记住,V $视图各个版本之间的内容及其描述是有差别的,因此当数据库管理系统的版本改变时,别指望它们是一样的。正如我们前面说过的,拿到了新版本的数据库,阅读一下文档,看看版本之间有什么变化。我们会尽力指出由于V $视图组的变化而会使你头疼的地方。

9.1 V$视图的概要信息

当你创建数据库时,对该数据库建立后运行的第一个脚本就是c a t a l o g.s q l。这儿有8 .1.5版本的c a t a l o g.s q l脚本的一小部分:

从这个脚本的一小段的注释来看,你可以看出O r

a c l e 将V $视图分成几个分支。在这个脚本的版本中列出了4 9个分支。在你系统的c a t a l o g .s q l 脚本中有多少个呢?你会关心吗?你也许不关心,但是熟悉c a t a l o g .s q l 脚本的成份和V $视图分支之间的差别的一个好办法就是找出有多少个V $视图分支。我们将让你探索自己c a t a l o g .s q l 脚本。只是记住,该脚本是V $视图(包括8 .0以上版本的数据字典视图)的起源。

V $视图担任着中央信息储存库的角色,让你能够收集数据库随时间的统计信息。它们显示了数据库、对象、性能、备份、用户进程、内存区域等的状况。为了适应O r a c l e 并行服务器,创建了新的全局视图,它们基本上和V $视图一样,但是用来确保并行数据库和多个实例的识别。对于并行数据库,加入了有关实例I D (I n s t _I D )的一个列,以便每个连到数据库的实例都能被跟踪和识别。

浏览V$视图

你已经有机会查看V $视图的由来,现在让我们看看D I C T I O N A R Y 视图是怎样说明它们的。由于D I C T I O N A R Y 视图仅仅显示了名字和不多的描述,我们仅能简短地列出一部分。你可以在附录C 中查阅到每一个V $视图简要描述和完整的列表。

在8 .1.5版本中,不包括全局G V $视图,共有171 个V $视图,而在7 .3.3.6版本中只有9 6个V $视图。让我们看看D I C T I O N A R Y 视图中列出的前面5个V $视图。

如我们说过的,注释不是很有帮助。有趣的是它们给你一个对应于每个视图实际名称的线索。因而你将与之打交道的V $视图名字,实际上是S Y S 拥有的视图的一个稍稍不同的同义词。

在这章和下一章中,我们将要介绍用得最多的V $视图。就像我们讲解D B A _v i e w s 一样,我们将单个列出视图,加以解释,并显示一些输出结果。在可应用的地方,我们将列出各组视图供你连接在一起获得更加全面的信息,并向你显示连接视图的输出结果。前面三章(第6、7、8章)中所采用的惯例在接下来的两章(第9、1 0章)中仍将被采用:O r a c l e 8.0中新增加的列以176部分第二部分部视图世界

*标示,O r a c l e8i中新增加的列以* *标示。

注意具有D B A权限的账户通常用来查询V $视图。

1. V$视图的级别

V $视图有两个级别:实例级( i n s t a n c e-l e v e l)视图和会话级( s e s s i o n-l e v e l)视图。实例级视图包含实例整体的信息,它们记录着数据库从运行到关闭时的统计信息。我们将实例级视图又分成两类:提供重要信息且不受由i n i t.o r a文件参数修改影响的静态V $视图和受由i n i t.o r a文件参数修改影响的活动V $视图。有些活动视图有会话级的对应视图。比如,V $S Y S S T AT视图列出系统统计的基本信息,V $S E S S T AT视图列出一个特定会话的信息。活动实例级视图的一些值是累积的—从数据库启动时起聚集起来。在第1 0章中,我们将向你讲解用得最多的活动V $实例级视图和与之关联的会话级视图。

让我们花点时间看看静态V $视图和活动V $视图之间的差别。举个例子,当你想要查看系统全局区( S G A)的值时,你可以使用两个S G A视图。其中一个叫V $S G A,它记录S G A的总体信息,这种信息将保持不变直到数据库关闭。如果i n i t.o r a文件参数(如s h a r e d_p o o l_s i z e c参数)被修改,则数据库启动时,S G A在内存中的空间大小和以前的将不一样。如果你对i n i t.o r a中影响S G A内资源分配的参数作了动态修改,概要信息将保持不变,即使S G A内资源分配已发生了改变。因此根据我们的定义,V $S G A是个静态视图,因为i n i t.o r a文件中参数的动态改变没有反映在视图显示的数据中,直至数据库被关闭和重启。另一个视图V $S G A S T AT记录S G A 值随各种资源的分配和撤消的动态变化。因而我们将V $S G A S T AT定义为活动视图。有印象了吧?但愿如此。

2.查找表和视图

一些V $视图实际上是提供数字到字符值转换的查找表(lookup table)。比如,V $D B F I L E 包含了每个数据文件的名字和它相应的号码。文件f :/o r a8i/o r a d a t a/r b s01.d b f可能分配了号码6,在其他引用这个文件的视图( f:/o r a8i/o r a d a t a/r b s01.d b f)中,只使用号码( 6)。因而,如果你想用名字(我们觉得更有意义)来获取这个数据文件的信息,你将使用V $D B F I L E视图来查找文件号并提供实际的文件名。

为了让你理解一个查找表是如何工作的,假设你是一个学校的老师,学校开设好几门课,如几何、代数、微积分、英语、法语、西班牙语、生物学、化学、历史、地质学,等等。学校用计算机管理每个学生选修的课程及其分数。你可以用好几种方法存储课程名和分数。然而,最有效的存储方法是给每门课程分配一个代码,每次需要引用时只要存储课程代码。

你可以决定采用一个方案,所有课程都分配一个三位数的号码,每种类型的课程以不同的号码打头,所有语言课程以1打头,数学课程以2打头,依次类推。你可以创建一个像表9 -1样子的表来记录每门课程分配的号码。

表9-1 学校课程及其相应号码

表9 -1没有反映学校的所有课程,但它给了你一个方法。现在你不必每次要用时都列出课程名单,而只需要使用课程号码。如果要写一个报告,你要列出所有的课程名以使报告更有意思,每次写报告时,你要使用课程号码来查找相应的课程名。这就是你所使用的一个查找表。在D B A_v i e w s和V $视图中你将看到好几个查找表。

9.2 静态实例级V$视图

我们使用得最多并称作静态V $视图的实例级视图如表9 -2所示。本章我们将详细讲解这些视图。记住,这些视图并不是所有的静态V $视图,而只是我们较为喜欢并用得频繁的那些。在附录C中,你可以看到一个视图的详细列表及其简要描述。

注意这里的视图只有一个是Oracle8/8i 中新有的,即V $D A TA F I L E_H E A D E R。

表9-2 实例级V $视图

视图描述

V $D A TA B A S E显示数据库的具体信息

V $D A TA F I L E来自控制文件的数据文件信息

V $D A TA F I L E_H E A D E R*显示数据文件首部的信息

V $D B F I L E包含数据文件号和数据文件名

V $F I X E D_T A B L E列出固定对象:X $表、G V$全局视图和V $视图(在

O r a c l e8i中,该视图有6 12个条目) V $I N S T A N C E显示实例的具体信息

V $P A R A M E T E R列出数据库中的参数及其描述和信息,如是否可修改V $S G A包含在S G A中的概要信息

9.2.1 V$DATABASE

V $D A TA B A S E视图提供了数据库的总体信息。表9 -3显示该视图的列及其简要描述。

表9-3 Oracle8i的V $D A TA B A S E视图

(带*的列是O r a c l e8.0中新增加的,带* *的列是O r a c l e8i中新增加的)

列描述

D B I D*数据库I D,数据库创建时计算并存储于所有的文件头中

N A M E数据库名字

C R E A T E D创建日期

L O G_M O D E归档日志模式:N O A R C H I V E L O G或A R C H I V E L O G

C H E C K P O I N T_C H A N G E#最近检查点的系统修改号码( S C N)

A R C H I V E_C H A N G E#最近归档的S C N

R E S E T L O G S_C H A N G E#*开放重置日志中的修改号码

R E S E T L O G S_T I M E*开放重置日志中的时间戳

P R I O R_R E S E T L O G S_C H A N G E#*以前的重置日志中的修改号码

P R I O R_R E S E T L O G S_T I M E*以前的重置日志中的时间戳

C O N T R O L F I L E_T Y P E* C U R R E N T/S T A N

D B Y/C L O N E/B A C K U P/

C R E A T E D:S T A N

D B Y表明数据库是备用模式,C L O N E指

它是个克隆的数据库,B A C K U P/C R E A T E D表明数据库正

由备份数据库或建立的控制文件恢复,备用数据库激活或

数据库恢复后打开,则其类型为C U R R E N T

(续)列

描述C O N T R O L F I L E _C R E A T E D *

控制文件创建时间戳C O N T R O L F I L E _S E Q U E N C E #*

由控制文件事务增加的控制文件序列号C O N T R O L F I L E _C H A N G E #*

备份控制文件中最后修改的号码,如果控制文件不是备份型的,则设为N U L L C O N T R O L F I L E _T I M E *

备份控制文件里最近的时间戳,如果控制文件不是备份型的则设置为N U L L O P E N _R E S E T L O G S *

NOT ALLOWED/ALLOWED/REQUIRED :指明下一个要打开的数据库是否允许或要求重置日志选项V E R S I O N _T I M E *

版本时间O P E N _M O D E **打开模式的信息,表明数据库设置为读写(READ WRITE)

或只读(READ ONLY )

现在让我们看看用得最多的列。直到8 .0版本,数据库的标识码都是隐藏在控制文件中,轻易看不到。D b i d 列显示这个值。N a m e 列是不言自明但却是至关重要的。当 A R C H I V E _

C H A N G E #显示最近使用过的归档日志号时,L O G _M O

D

E 列告诉你归档日志是否被激活了。O P E N _M O D E 列是O r a c l e 8i 中新增加的,它指明数据库是可读写的还是只读的模式。如果你要使用第5章中说明的可移动表空间,你就要关心这一点。如果要对数据库进行恢复,那么控制文件信息是很重要的,因为你可以查看V $信息,即使数据库已启动并装载却没有打开。

O P E N _M O D E 参数告诉你数据文件中的数据是可读写的(如果是则应为READ WRITE 模式)还是只读的(模式为只读)。

该视图的输出如下所示:从这个列表可以知道数据库是1

999年5月2 8日创建的,然而P r i o r _R e s (先前的重置日志)的日期是1 999年3月1日。那是怎么回事?那个日期是哪里来的,它怎么比数据库的创建日期还要早呢?正常情况下,数据库创建日期应该匹配先前重置日志的日期或比它更早,这是对的。但是我们看到的数据库是演示数据库,是O r a c l e 所创建并捆绑在其软件中的。当你选择创建演示数据库时,O r a c l e 解开这个数据库,将文件放置到你的系统上,打开数据库并运行环境脚本( c a t a l o g .s q l 、c a t p r o c .s q l 等)。因此,实际上数据库是1 999年3月在O r a c l e 公司的计算机上创建的,它被解开并放到我们的计算机上的日期是1 999年5月。如果你仔细查看下面部分的列表,

还会看到3月1日这个日期,因为许多和这个数据库关联着的数据文件都是由O r a c l e软件提供的缺省数据库创建的。

我们已经明白了那个日期。还有好多列和重置日志( r e s e t l o g)有关。重置日志子句是什么意思?重置日志作为命令子句用在不同的命令中。当使用命令alter database打开恢复后的数据库,或使用命令backup controlfile to trace来创建一个备份控制文件时,可以使用和重置日志对应的“非重置日志”( n o r e s e t l o g)。重置日志重置当前的日志序列号为1,并抛弃所有在数据库恢复中没有用到的重做信息。通过重置重做日志序列号,可以确保任何没有应用过的重做日志将不再被使用。这样,任何在重做日志而不在数据库中的变化都将被丢弃。当进行部分数据库恢复时将用到这个子句。我们在第1 3章中讨论数据库恢复时将进一步讨论这个子句。现在,让我们回到V $D A TA B A S E视图的内容中。

那个数据库已取名叫o r c1,归档日志模式没被启用。数据库处于读写模式,且最近打开的时间是1 999年7月1 7日。下一次数据库打开时,重置日志子句不会被用到。

9.2.2 V$DATAFILE

看看V $D A TA F I L E中的列,你也许要问,在该视图中我们是否需要看哪些在D B A_D A TA _ F I L E S视图中没有的列?问得好,而回答是看很少一些。当查看 D B A_D A TA _F I L E S视图时,实际上是从数据库的角度查看数据文件信息,而查阅V $D A TA F I L E视图是从控制文件的角度查阅信息。V $D A TA F I L E视图的信息在一些方面和D B A_D A TA _F I L E S数据是重迭的。

该视图中有好几个列会令你感兴趣。在逐个浏览这些列之前,让我们看看所有的列及其含义。表9 -4显示了视图中的列及其简要描述。

表9-4 Oracle8i的V $D A TA F I L E视图

列描述

F I L E#文件标识号

S T AT U S文件类型( s y s t e m或u s e r)及其状态,取值:O F F L I N E、O N L I N E、

S Y S T E M、R E C O V E R、S Y S O F F(S Y S T E M表空间的一个脱机文件)

E N A B L E D描述S Q L可以怎样访问文件,取值可以是D I S A B L E D、R E A D

O N L Y、READ WRITE和U N K N O W N

C H E C K P O I N T_C H A N G E#最后检查点的S C N

C H E C K P O I N T_T I M E*检查点时间戳号码

U N R E C O V E R A B L E_C H A N G E#*最近提交给该数据文件的不可恢复的修改号码,每次不可恢复的操

作发生时该列都会更新

U N R E C O V E R A B L E_T I M E*最近不可恢复的修改时间戳

B Y T E S当前字节数,不能存取时为0

C R E A T E_B Y T E S创建时的字节数

N A M E文件名字

C R E A T I O N_C H A N G E#*数据文件创建时的修改号码

C R E A T I O N_T I M E*数据文件创建的时间戳

T S#*表空间号

R F I L E#*表空间相对数据文件号

L A S T_C H A N G E#*该数据文件最近的修改号,当数据文件正在修改时设为N U L L

L A S T_T I M E*最近修改的时间戳

O F F L I N E_C H A N G E#*最近脱机范围的脱机修改号,该列仅当数据文件联机时才被更新O N L I N E_C H A N G E#*最近脱机范围的联机修改号

(续)列描述

O N L I N E_T I M E*最近脱机范围的联机时间戳

B L O

C K S*当前数据文件的块数,不能存取时为0

B L O

C K_S I Z E*数据文件的块大小

P L U G G E D_I N**表空间是否可插入,如果可插入且未被设置读/写模式时为1,否则为0

如果你要知道数据文件最近修改的时间,你就需要知道时间戳上的好几个“最近号码”(last number)值。两个不同形式的状态值:S t a t u s列和E n a b l e d列,说明数据文件的状态。S t a t u s列在O r a c l e8i数据库的取值是o f f l i n e、o n l i n e、s y s t e m、r e c o v e r和s y s o f f (系统表空间中的脱机文件)。E n a b l e d列说明是否可以通过S Q L命令执行如下的任务:写数据文件、读数据文件,或说明S Q L交互功能被关闭,或是其可用性不可知。

当数据文件最初创建好时,可以查看它的字节数,如果设置数据文件为自动扩展,并想看看文件增长的快慢,则这个值是有意义的。你可以通过将 B l o c k s列和数据库块大小相乘,来比较数据文件的初始大小和当前大小。

182部分第二部分部视图世界

9.2.3 V$DATAFILE_HEADER

V $D A TA F I L E_H E A D E R视图是8 .0版本中新增加的,包含着数据库中每个数据文件的信息。表9 -5显示了视图中的表列及其简要描述。

直到8 .0版本和V $D A TA F I L E_H E A D E R视图的出现,才有了成功查看数据文件首部信息的办法。该视图显示了如下方面的重要信息:

? Status列中的数据文件的状态(联机或脱机)。

? 当设置数据文件为联机状态时( E r r o r列)中是否会出现任何错误。

? (Recover列)中数据文件是否需要恢复。

? (Format列)中首部块的O r a c l e版本( V6、V 7、V 8或是未知的)。

? (Bytes或B l o c k s列)中数据文件的当前大小。

表9-5 Oracle8i的V $D A TA F I L E_H E A D E R视图

列描述

F I L E#来自控制文件的数据文件号

S T A T U S来自控制文件的O N L I N E(联机)或O F F L I N E(脱机)

E R R O R如果数据文件首部读操作和确认成功,则为N U L L;如果读失败,其余的列都为

N U L L或可能显示错误数据;如果有错误,则通常数据文件必须从备份中恢复

(续)列描述

F O M A T首部块的格式,可能取值有

6:O r a c l e6

7:O r a c l e7

8:O r a c l e8

0:格式不能确定(如首部块不能被读出) R E C O V E R文件需要介质恢复:Y E S/N O

F U Z Z Y文件失真:Y E S/N O

C R E A T I O N_C H A N G E#数据文件创建修改号

C R E A T E I O N_T I M E数据文件创建时间戳

TA B L E S P A C E_N A M E表空间名字

T S#表空间号

R F I L E#表空间相对文件号

R E S E T L O G S_C H A N G E#重置日志修改号

R E S E T L O G S_T I M E重置日志时间戳

C H E C K P O I N T_C H A N G E#数据文件检查点修改号

C H E C K P O I N T_T I M E数据文件检查点时间戳

C H E C K P O I N T_C O U N T数据文件检查点次数

B Y T E S当前数据文件大小的字节数

B L O

C K S当前数据文件的块数

N A M E数据文件名字

这儿有V $D A TA F I L E_H E A D E R视图的两个条目,它们显示了系统表空间数据文件的信息:

即使查询没有在Ta b l e s p a c e_N a m e列中指定的名字,也可以肯定这里列出的数据文件是S Y S T E M表空间的(注意该数据文件的命名为s y s t e m01.d b f和s y s t e m02.d b f),因为该数据库中使用了标准的文件命名规则。

9.2.4 V$DBFILE

V $D B F I L E视图是一个查找表(或视图)。正如我们早先在“查找表或视图”中讨论的,视图中的列是用来将短小的表示值(如一个数字)翻译成长得多的表示值(如一个名字)。

这种情况下,F i l e#列非常短,而N a m e列可能是非常长。在所有其他需要引用数据文件的视图中,F i l e#会被用到。需要真实的文件名字(如产生报表或其他转换)时,可以使用查找视图解析这个名字。表9 -6显示了V $D B F I L E视图的列。

表9-6 Oracle8i的V $D B F I L E视图

列描述

F I L E#文件标识号

N A M E文件名字

在Oracle8i 提供的演示数据库中,V $D B F I L E视图的取值如下:

这个查询输出和V $D A TA F I L E和V $D A TA F I L E_H E A D E R的查询输出比较,有一些区别。你能看出来是什么区别吗?在那两个查询中,即使没有给出order by 限定词,文件号也是按顺序显示的。在V $D B F I L E查询中,没有给出order by限定词,结果文件号没有按顺序显示。要记住这一点。如果你想要让号码以特定的顺序显示,你就必须给出一个子句来指定那个顺序。不按顺序显示的话,人们会特别心烦。

9.2.5 V$FIXED_TABLE

V $ F I X E D _ TA B L E视图显示动态表、视图和来自数据库的视图的所有名字。V $F I X E D_T A B L E视图包含了X $表、V $视图和G V$视图的信息,它是查找X $动态表名字的最容易的办法。你也许不会经常使用这个视图,但知道它及其内容是非常重要的。表9 -7显示了该视图的列。

由于该视图有6 12个对象,其中2 56个是X $表,我们仅给出X $表的很小的一部分。

表9-7 Oracle8i 的V $F I X E D _T A B L E 视图

描述

N A M E

对象名字O B J E C T _I D

固定对象的标识符T Y P E

对象类型:TA B L E ,V I E W TA B L E _N U M 标识动态性能表( T A B L E 类型)的号码你可以看到这里列出的X $表名字不是很有意义或很明显的。虽然几乎不能猜出动态表列出列所指的意思,但很多视图的名字却更有意义。我们建议你列出V $F I X E D _T A B L E 视图的内容,并探索一下表和视图包含的东西。记住任何情况下都不要试图修改动态表或视图的任何名字,那将会很快地危及到你数据库的完整性。

如果不是以“s y s ”或“i n t e r n a l ”身份连接数据库,而又试图对X $表使用d e s c r i b e 命令,你将被告知对象不存在。换句话说,O r a c l e 将X $表隐藏得很好。如果你想要了解X $表的组成,首先你必须以“i n t e r n a l ”身份连到数据库,然后如果你知道X $表的名字,你就可以对之进行查询并查看其内容。当试图查看任何X $表时,有一点要注意,即这些表可能包含好几千行甚至更多。我们发现在查询表中的数据之前,先计算一下包含在表中的数据行数是个需要遵循的好习惯。那是做任何查询操作要遵循的通用规则。

9.2.6 V$INSTANCE

V $I N S T A N C E 视图提供了连接到数据库的每个实例的一般信息。该视图在8 .0版本中有了巨大的变化。在7 .0版本中,只有两个列:K e y 和Va l u e 。K e y 列显示状态变量的名字,Va l u e 列显示实际的状态值。从表9 -8中可以看到,该视图在8 .0版本中得到了很大修改,现在反映了多得多的信息。表9 -8显示了最新版本V $I N S T A N C E 视图的列。

很多时候应用程序编码是分离进程的。每个分离的进程会连到数据库,但连接是不确定的。有很多正当理由让程序进程这样做。然而,当需要关闭数据库时,问题就来了。你不能正常关闭,因为程序进程在运行,数据库会一直等到所有进程断开数据库连接才会关闭。解决这个问题有两个办法:你可以制定一个策略总是执行shutdown immediate ,或者你可以让程序开发员使用V $I N S T A N C E 视图的S h u t d o w n _P e n d i n g 列来决定数据库是否在等待关闭。如果该列的值从N O 变到Y E S ,则可以编制应用程序让它自动断开同数据库的连接。当然,你将不得不授予程序用户查询那个视图的权限。

第9章部使用V$视图部分下载

表9-8 Oracle8i的V $I N S T A N C E视图

列描述

I N S T A N C E_N U M B E R*实例注册用的实例号,对应于I N S T A N C E_N U M B E R初始化参数

I N S T A N C E_N A M E*实例名字

H O S T_N A M E*主机名字

V E R S I O N*R D B M S版本

S T A R T U P_N A M E*实例启动的时间

S T AT U S*数据库的当前状态,可以是S T A R T E D/M O U N T E D/O P E N:S T A R T E D代表

非安装启动之后,M O U N T E D代表安装启动或修改数据库关闭之后,O P E N

代表启动或数据库打开之后

PA R A L L E L*并行服务器模式:Y E S/N O

T H R E A D#*实例打开的重做线程

A R C H I V E R*S T O P P E D/S T A R T E D/F A I L E D:FA I L E D意味着上次归档日志不成功,5分

钟内重试

L O G_S W I T C H_W A I T*日志开关处于等待的事件,可以是ARCHIVE LOG/CLEAR

L O G/C H E C K P O I N T,注意如果“A L TER STSTEM SWITCH LOGFILE”被

中止(但在当前联机重做日志中留有空间),该值为N U L L L O G I N S* A L L O W E D(允许) /R E S T R I C T E D(限制)

S H U T D O W N_P E N D I N G*Y E S/N O

D A TA B A S E_S T AT U S**数据库状态

如果运行并行服务器选项,那么实例名和你数据库名也许不匹配。因此,可以将

V $D A TA B A S E和V $I N S T A N C E视图结合起来,查看实例和数据库的名字,如下所示:

这个查询是不是有点意思?尽管我们对两个不同视图做查询操作,却没有使用j o i n子句。那是因为我们知道两个视图中仅有一行数据。如果要将仅有一行数据的两个表或视图连接起来,没有必要提供j o i n子句。

在这种特定的情况下,名字是匹配的。但不一定总是都匹配,上面的方法是确认名字是否匹配的方便途径。还要注意,用S Q L语句查询匹配的两个名字时,你得使用u p p e r或l o w e r函数对名字进行转换再匹配,因为一个是以大写形式存储的,另一个是以小写形式存储的。

9.2.7 V$PARAMETER

V $P A R A M E T E R视图存储着数据库的所有参数。在O r a c l e的早期版本中,该视图仅包含n u m b e r、n a m e、t y p e参数及其关联的组。表9 -9显示了V $P A R A M E T E R视图的列,不过还有许多提供有用信息的其他列。

表9-9 Oracle8i的V $P A R A M E T E R视图

列描述

N U M参数号

N A M E参数名

T Y P E参数类型:1 =B o o l e a n;2 =s t r i n g;3 =i n t e g e r

V A L U E参数值

I S D E F A U L T参数值是否是缺省的

I S S E S_M O D I F I A B L E*T R U E/F A L S E:T R U E表明参数可用alter session修改;FA L S E表明参数不能

用alter session修改

I S S Y S_M O D I F I A B L E*I M M E D I A T E/D E F E R R E D/F A L S E:I M M E D I A T E表明参数可用alter system

修改;D E F E R R E D表明参数直到下一个会话才能被修改;FA L S E表明参数

不能用alter system修改。

I S M O D I F I E D*表明参数是如何被修改的,如果执行了alter session,它的值是M O D I F I E D,

如果执行了alter system(这将引起所有当前的登录会话值被修改),其值是

S Y S_M O D I F I E D

I S A D J U S T E D*表明O r a c l e将输入值调整成一个更合适的值,如参数应为素数,但用户输入

了一个非素数,所以O r a c l e调整到下一个素数值

D E S C R I P T I O N*参数的描述性注释

在我们的O r a c l e8i演示数据库中有195 个参数。我们只看前面的几个。你应该花点时间查询一下所有的参数,考虑它们做些什么。

这个视图很有价值,它可以让你快速看到:? 哪些参数值仍然是缺省的,哪些在

i n i t .o r a 参数文件中被修改了。

? 哪些参数可以动态修改。

? 哪些参数已被修改了。

? 参数是否用alter session 命令或alter system 命令修改了。

如果参数用alter session 命令修改了,它的值只有那个专门的会话才能看到和使用。如果参数是用alter system 命令修改了,则它的值在系统范围内都是可见的。

9.2.8 V$SGA

V $S G A 视图显示系统全局区的内存分配的统计摘要情况。表9 -10显示了V $S G A 视图的列。

V $S G A 视图给你一个印象,即S G A 分配的内存总量以及O r a c l e 怎样划分那些内存。让我们看看O r a c l e 8i 缺省的演示数据库中的内存分配情况。

表9-10 Oracle8i 的V $S G A 视图

描述N A M E

S G A 构成组VA L U E 内存字节数

188部分第二部分部视图世界

要想查看当前S G A分配的总计实际内存,你可以求出Va l u e列的和,如下所示:

从列表可以看出该实例的S G A总内存是3 6M B。在下一章中,你将看到一个相对应的视图V $S G A S T AT,它是通过参数来显示S G A的分段情况,而不像V $S G A是通过总计值显示的。两个视图都很有用。

相关文档
相关文档 最新文档