Oracle体系结构

来源:互联网 发布:星际战甲数据模块在哪 编辑:程序博客网 时间:2024/04/20 15:52

Oracle体系结构

 

*      物理结构 : 数据文件(*.dbf),控制文件(*.ctl),日志文件(*.log),参数文件(Init*.ora)

*      SGAsystem global area):shared_pooldatabase_buffer_cacheredo_log_buffer

*      进程:用户进程,服务器进程,后台进程

 

 

        物理结构

 

数据文件(Data File是物理存储ORACLE数据库数据的文件。其特点如下:

           每一个数据文件只与一个数据库相联系。

           数据文件一旦被建立则不能修改其大小。

           一个表空间可包含一个或多个数据文件。

日志文件(Log File记录所有对数据库数据的修改,以备恢复数据时使用。其特点如下:

           每一个数据库至少包含两个日志文件组。

           日志文件组以循环方式进行写操作。

           每一个日志文件成员对应一个物理文件。

日志开关(Log Switch是为实现日志文件组的循环使用而设置的。出现日志开关的情况如下:

           当一个日志文件组被填满时

           关闭数据库时

           DBA手动转移日志开关

镜像日志文件是为防止日志文件的丢失,在不同磁盘上同时维护两个或多个联机日志文件的副本。

其特点如下:

           每个日志文件组至少包含两个日志文件成员。

           每组的成员数目相同。

           同组的所有成员同时被修改。

           同组的成员大小相同,不同组的成员大小可不同。

控制文件(Control File是一个较小的二进制文件,用于描述数据库结构。

描述信息如下:

            数据库建立的日期。

           数据库名。

           数据库中所有数据文件和日志文件的文件名及路径。

           恢复数据库时所需的同步信息。

要点注意:

            在打开和存取数据库时都要访问该文件。

           镜像控制文件。

           记录控制文件名及路径的参数为: CONTROL_FILES

参数文件(Parameter File是一个文本文件,可直接使用操作系统下的文本编辑器对其内容进行修改。该文件只在建立数据库或启动实例时才被访问,在修改该文件之前必须关闭实例。

初始参数文件:init.ora

生成参数文件:initSID.oraconfig.ora

参数文件的作用:

         确定存储结构的大小。

         设置数据库的全部缺省值。

         设置数据库的范围。

         设置数据库的各种物理属性。

         优化数据库性能。

参数文件中参数的数据类型:

         整型

 例:DB_BLOCK_SIZE = 2048

         字符型

 例:DB_NAME = ora7’

         逻辑型

 例:CHECKPOINT_PROCESS = true

 

                                                

        SGASystem 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区包括

           SQLPL/SQL语句的文本

           SQLPL/SQL语句的语法分析形式

           SQLPL/SQL语句的执行方案

数据字典区用于存放数据字典信息行。

 

数据缓冲存储区(Database Buffer Cache用于存储从数据文件中读的数据的备份。

 

DB_BLOCK_SIZE确定数据块的大小,一般为2K4K,对于大数据块的数据库,此参数值为物理块的倍数。

DB_BLOCK_BUFFERS确定数据块的数目。           

数据缓冲存储区分为

 

           脏列表

        包括被修改过但尚未写到数据文件的缓冲块。

 

           LRULeast 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_ADDRESSSQL*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个锁,分别为LCK0LCK1¼LCK9

 

 

 

 

 

 

 
原创粉丝点击