Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379945
  • 博文数量: 120
  • 博客积分: 5051
  • 博客等级: 大校
  • 技术积分: 1255
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-03 01:25
文章分类

全部博文(120)

文章存档

2011年(2)

2010年(11)

2009年(28)

2008年(26)

2007年(53)

我的朋友

分类: Oracle

2008-01-02 16:27:43

原文链接:
 
ORAL架构:
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件组成)

一个数据库中的数据存储在磁盘上物理文件,被使用时,调入内存。
其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件;
参数文件(parameter file)口令文件(password file)是非数据库文件

1.1数据文件:存储数据的文件.数据文件典型地代表了根据他们使用的磁盘空间和数量所决定的一个Oracle数据库的容积。
由于性能原因,每一种类型的数据放在相应的一个或一系列文件中,将这些文件放在不同的磁盘中。
types:
.data dictionary .data
.redo data .index
.temporary data 等等
1.2控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件.

控制文件内容
。数据库名
。表空间信息
。所有数据文件的名字和位置
。所有redo日志文件的名字和位置
。当前的日志序列号
。检查点信息
。关于redo日志和归档的当前状态信息

控制文件的使用过程
控制文件把Oracle引导到数据库文件的其它部分。启动一个实例时,Oracle 从参数文件中读取控制文件的名字和位置。安装数据库时,Oracle 打开控制文件。最终打开数据库时,Oracle 从控制文件中读取数据文件的列表并打开其中的每个文件。


1.3重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件.
1.4 跟踪文件及警告日志(Trace Files and Alert Files)
在instance 中运行的每一个后台进程都有一个跟踪文件(trace file)与之相连。Trace file 记载后台进程所遇到的重大事件的信息。

警告日志( Alert Log)是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的消息和错误.

1.5参数文件:包括大量影响Oracle数据库实例功能的设定,如以下设定:
。数据库控制文件的定位
。Oracle用来缓存从磁盘上读取的数据的内存数量
。默认的优化程序的选择.

和数据库文件相关,执行两个重要的功能
1〉为数据库指出控制文件
2〉为数据库指出归档日志的目标


1.6归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

1.7口令文件:认证哪些用户有权限启动和关闭Oracle例程.


2、逻辑结构(表空间、段、区、块)

表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。
下面介绍一些主要的数据库表空间:
系统表空间:是每个数据库必备的部分,存放的是管理数据库自身所需的信息。
临时表空间:开辟一些临时空间供临时操作使用。
工具表空间:保存数据库工具所需的数据库对象。
用户表空间:存放用户的私有信息。
数据库索引表空间:存放索引信息。
回滚表空间:存放恢复信息。
 

段:是对象在数据库中占用的空间.
区间:是为数据一次性预留的一个较大的存储空间.
数据块:ORACLE最基本的存储单位,在建立数据库的时候指定.

段,区间,数据块三者之间的关系:
数据块是数据库中最小的,最基本的存储单元。区间是表空间内连续分配的相邻的数据块,段是由若干个区间组成。
 
当创建数据库时,可以指定数据库将要使用的数据块的大小,数据块的大小必须等于服务器操作系统的大小的整数倍。

3、内存结构(SGA和PGA)
内存结构是指一个进程在其中进行自身对话或与其他进程对话的内存区域。Oracle使用两种类型的内存结构:系统全局区SGA和程序全局区PGA.

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

SGA主要由以下几个部分构成:
 
数据库高速缓存区:内存中被用来存储被频繁访问的数据的区域。它通常是SGA中最大的部分。由内存中的若干缓存器组成,每个缓存器的大小都和数据块的大小相匹配。相关参数:
db_block_buffers 高速缓存区中缓存器的数量
buffer_pool_keep 保持缓存器池大小(对想在内存中长期保存的被频繁访问的模式对象使用保存缓存器池)
buffer_pool_recycle 再生缓存器池大小 (对想尽快从内存中排除的模式对象使用再生缓存器池)
 
共享池:内存中的一块区域,缓存PL/SQL程序单元以及数据字典信息。由库缓存区和数据字典缓存区组成。
库缓存区:包括共享SQL区和PL/SQL区。oracle利用库缓存区来提高执行SQL的性能。
数据字典缓存区:
shared_pool_size 共享池的大小(应设定足够大以来装载和存储PL/SQL块和SQL语句)
alter system flush shared_pool来整理碎片。
 
重做日志缓存区:
重做日志缓存区用来存储未被刷新写入联机重做日志文件的重做信息。由于磁盘读写远远慢于内存读写,所以引入这个日志主要是为了将内存中暂未写入磁盘的日志放在这个缓存区。
log_bufer 重做日志缓存区的大小
 
大缓存池:一个可选的内存区。主要用于备份还原时的操作。
large_pool_size 大缓存池的大小(default=0)
 
固定的SGA
用于存储极大量的值。

PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收.每一个连到oracle的进程都需要有自已私有的内存区,这个就是PGA.

4、后台进程
包括数据写进程(Database Writer,DBWR)、日志写进程(Log Writer,LGWR)、系统监控(System Monitor,SMON)、进程监控(Process Monitor,PMON)、检查点进程(Checkpoint Process,CKPT)、归档进程ARCH、恢复进程RECO、用户进程JOB QUEUE PROCESS,队列监视进程QMON)

数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件
日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件
系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复
进程监控:负责在一个Oracle 进程失败时清理资源
检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 参数控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。

归档进程:在每次日志切换时把已满的日志组进行备份或归档
服务进程:用户进程服务。
用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器段拿回查询数据。



5、SCN(System ChangeNumber):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
阅读(628) | 评论(0) | 转发(0) |
0

上一篇:浅谈SGA

下一篇:sudoer 配置详解

给主人留下些什么吧!~~