Oracle体系结构
来源:互联网 发布:星际战甲数据模块在哪 编辑:程序博客网 时间:2024/04/20 15:52
Oracle体系结构
物理结构 : 数据文件(*.dbf),控制文件(*.ctl),日志文件(*.log),参数文件(Init*.ora)
SGA(system global area):shared_pool,database_buffer_cache,redo_log_buffer
进程:用户进程,服务器进程,后台进程
一 物理结构
数据文件(Data File)是物理存储ORACLE数据库数据的文件。其特点如下:
• 每一个数据文件只与一个数据库相联系。
• 数据文件一旦被建立则不能修改其大小。
• 一个表空间可包含一个或多个数据文件。
日志文件(Log File)记录所有对数据库数据的修改,以备恢复数据时使用。其特点如下:
• 每一个数据库至少包含两个日志文件组。
• 日志文件组以循环方式进行写操作。
• 每一个日志文件成员对应一个物理文件。
日志开关(Log Switch)是为实现日志文件组的循环使用而设置的。出现日志开关的情况如下:
• 当一个日志文件组被填满时
• 关闭数据库时
• DBA手动转移日志开关
镜像日志文件是为防止日志文件的丢失,在不同磁盘上同时维护两个或多个联机日志文件的副本。
其特点如下:
• 每个日志文件组至少包含两个日志文件成员。
• 每组的成员数目相同。
• 同组的所有成员同时被修改。
• 同组的成员大小相同,不同组的成员大小可不同。
控制文件(Control File)是一个较小的二进制文件,用于描述数据库结构。
描述信息如下:
• 数据库建立的日期。
• 数据库名。
• 数据库中所有数据文件和日志文件的文件名及路径。
• 恢复数据库时所需的同步信息。
要点注意:
• 在打开和存取数据库时都要访问该文件。
• 镜像控制文件。
• 记录控制文件名及路径的参数为: CONTROL_FILES
参数文件(Parameter File)是一个文本文件,可直接使用操作系统下的文本编辑器对其内容进行修改。该文件只在建立数据库或启动实例时才被访问,在修改该文件之前必须关闭实例。
初始参数文件:init.ora
生成参数文件:initSID.ora,config.ora
参数文件的作用:
• 确定存储结构的大小。
• 设置数据库的全部缺省值。
• 设置数据库的范围。
• 设置数据库的各种物理属性。
• 优化数据库性能。
参数文件中参数的数据类型:
• 整型
例:DB_BLOCK_SIZE = 2048
• 字符型
例:DB_NAME = ‘ora7’
• 逻辑型
例:CHECKPOINT_PROCESS = true
二 SGA(System Global Area)
SGA由共享池(shared pool)数据缓冲区(database buffer cache)日志缓冲区(redo log buffer)组成,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。
如下图所示:
占OS内存的60-70%,大小可由参数文件内参数计算
SGA=share_pool_size+db_block_size*db_block_buffers +log_buffers
共享池(Shared Pool)由共享SQL区和数据字典区组成。参数SHARED_POOL_SIZE 确定共享池的大小。
共享SQL区包括
• SQL或PL/SQL语句的文本
• SQL或PL/SQL语句的语法分析形式
• SQL或PL/SQL语句的执行方案
数据字典区用于存放数据字典信息行。
数据缓冲存储区(Database Buffer Cache)用于存储从数据文件中读的数据的备份。
DB_BLOCK_SIZE确定数据块的大小,一般为2K或4K,对于大数据块的数据库,此参数值为物理块的倍数。
DB_BLOCK_BUFFERS确定数据块的数目。
数据缓冲存储区分为
• 脏列表
包括被修改过但尚未写到数据文件的缓冲块。
• LRU(Least Recently Used)列表
包括空闲缓冲块、正在存取的缓冲块、已被修改但尚未移到脏列表的缓冲块。
日志缓冲存储区(Log Buffer)以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录将被写到日志文件中。
LOG_BUFFER确定日志缓冲区的大小。
实例( INSTANCE )
是存取和控制数据库的软件机制,它由系统全局区(System Global Area,简称SGA)和后台进程组成――》instance=SGA+background process
三 进程
instance=SGA+background process
ORACLE实例分为单进程实例和多进程实例两种。
• SINGLE_PROCESS单进程/多进程实例的转换。
单进程/单用户
一个进程执行全部ORACLE代码。
S G A ORACLE Server 数据库应用
多进程/多用户
使用多个进程执行ORACLE的不同代码,对于每一个连接的用户都有一个进程。
专用服务器方式
为每个用户单独开设一个服务器进程。适用于实时系统。
不设置参数:
MTS_SERVICE
MTS_DISPATCHERS
MTS_SERVERS
MTS_LISTERNET_ADDRESS
多线索服务器方式
通过调度器为每个用户进程分配服务器进程。设置参数:
MTS_SERVICE
MTS_DISPATCHERS
MTS_SERVERS
MTS_LISTERNET_ADDRESS
参数的涵义:
• MTS_SERVICE:服务器名,缺省值为DB_NAME
• MTS_DISPATCHERS:调度器个数
• MTS_SERVERS:可以启动的服务器进程的个数
• MTS_LISTERNET_ADDRESS:SQL*NET监听器地址
• MTS_MAX_SERVERS:服务器进程的最大数
用户进程:当用户运行一个应用程序时,就建立一个用户进程。
服务器进程:处理用户进程的请求。处理过程:
• 分析SQL命令并生成执行方案。
• 从数据缓冲存储区中读取数据。
• 将执行结果返回给用户
后台进程:为所有数据库用户异步完成各种任务。
主要的后台进程有:
• DBWR 数据库写进程:将数据缓冲区中所有修改过的缓冲块数据写到数据文件中,并使用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。该进程在启动实例时自动启动。
DBWR进行写操作的情况:
1. 脏列表达到最低限制。 相当于参数DB_BLOCK_WRITE_BATCH值的一半。
2. 一个进程在LRU列表中扫描指定数目的缓冲块,未找到空闲缓冲块。参数DB_BLOCK_MAX_SCAN_CNT确定扫描数目。
DBWR进行写操作的情况:
1. 出现超时,3秒钟内该进程未活动,则该进程将在LRU列表中查找尚未查找的缓冲块,这组缓冲块的数目相当于参数DB_BLOCK_WRITE_BATCH值的2倍。
2. 出现检查点。
• LGWR 日志写进程:将日志缓冲区中的所有记录项写到日志文件中。
该进程在启动实例时自动启动。
LGWR进行写操作的情况:
1. 用户进程提交一个事务(Commit)
2. 日志缓冲区达到1/3范围
3. DBWR对一个检查点需要清除缓冲块
4. 出现超时(3秒钟内未活动,则进行一次写操作。)
检查点(Checkpoint) :
在检查点出现期间,DBWR进程将数据缓冲区中的所有脏缓冲块写到数据文件中,LGWR进程将日志缓冲区中的所有记录项写到日志文件中,以确保上一个检查点至今修改过的所有数据块都被写到磁盘上。
1. 预定数目的记录项被填满。
参数LOG_CHECKPOINT_INTERVAL确定了预定数目。
2. 设置指定的秒数。
参数LOG_CHECKPOINT_TIMEOUT确定了间隔秒数。
3. 每个日志开关处
4. 关闭实例时
5. DBA手动操作。
6. 表空间离线。
• CKPT 检查点写进程:在控制文件中记录检查点。参数
CHECKPOINT_PROCESS 确定了检查点的启动/不启动状态。 若CKPT进程不启动,则该进程的工作将由LGWR进程代劳。(如果数据库的数据文件过多,这样操作会降低系统性能。)
• SMON 系统监控进程:负责完成自动实例恢复。该进程在启动实例时自动启动。
• PMON 进程监控进程:撤消异常中断的用户进程,并释放该进程已获得的系统资源或锁。
• ARCH 归档进程:在日志文件组出现切换时,将旧日志文件的内容拷贝到脱机存储介质上,出现介质失败时用于恢复数据。LOG_ARCHIVE_START确定了该进程的启动/不启动状态。
LOG_ARCHIVE_DEST
当数据库在归档模式下操作时,该参数确定了日志文件的归档目标。
LOG_ARCHIVE_FORMAT
当数据库在归档模式下操作时,该参数确定了归档日志文件的缺省文件名格式。
• RECO 恢复进程:在分布式操作的情况下,恢复一个事务的失败。
• LCKn 封锁进程:在并行服务器系统间加锁,最多可加10个锁,分别为LCK0,LCK1,¼,LCK9。
- ORACLE 体系结构
- ORACLE 体系结构
- oracle体系结构
- oracle体系结构
- oracle 体系结构
- Oracle体系结构
- Oracle体系结构
- Oracle体系结构
- oracle体系结构
- oracle体系结构
- ORACLE 体系结构
- Oracle 体系结构
- ORACLE体系结构
- oracle 体系结构
- Oracle体系结构
- ORACLE体系结构
- Oracle 体系结构
- oracle体系结构
- asp.net 时间比较
- VC中创建MFC规则DLL工程
- 在DropDownList中显示树形结构
- 生活妙语--智慧语言
- C#监视文件系统如此简单
- Oracle体系结构
- 现在找教师的工作真难啊!!!
- 自己制作arm-linux交叉编译环境(二)-crosstool篇
- 使用struts+spring+hibernate 组装web应用
- oracle实现自增长序列(主键)
- IIS服务器组建一览
- UNICODE与ANSI的区别
- VC6下开发OCCI程序的环境配置
- 在Struts 2.0中实现表单数据校验(Validation)