ORACLEDBA实用教程1第一章ORACLE的体系结构ORACLE的体系结构体系结构概述物理结构数据文件、日志文件、控制文件、参数文件系统全局区(SystemGlobalArea)共享池、数据缓冲区、日志缓冲区进程用户进程、服务器进程、后台进程共享池数据缓冲区日志缓冲区SGA数据文件日志文件参数文件控制文件DBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUserORACLE的体系结构体系结构图示•数据文件•日志文件•控制文件•参数文件ORACLE的体系结构物理结构数据文件(DataFile)是物理存储ORACLE数据库数据的文件。其特点如下:•每一个数据文件只与一个数据库相联系。•数据文件一旦被建立则不能修改其大小。•一个表空间可包含一个或多个数据文件。ORACLE的体系结构物理结构日志文件(LogFile)记录所有对数据库数据的修改,以备恢复数据时使用。其特点如下:•每一个数据库至少包含两个日志文件组。•日志文件组以循环方式进行写操作。•每一个日志文件成员对应一个物理文件。ORACLE的体系结构物理结构日志开关(LogSwitch)是为实现日志文件组的循环使用而设置的。出现日志开关的情况如下:•当一个日志文件组被填满时•关闭数据库时•DBA手动转移日志开关ORACLE的体系结构物理结构日志文件写操作图示LogFile1LogFile2Group1Group2Member2.1Member1.1ORACLE的体系结构物理结构镜像日志文件是为防止日志文件的丢失,在不同磁盘上同时维护两个或多个联机日志文件的副本。其特点如下:•每个日志文件组至少包含两个日志文件成员。•每组的成员数目相同。•同组的所有成员同时被修改。•同组的成员大小相同,不同组的成员大小可不同。ORACLE的体系结构物理结构镜像日志文件图示Group1Group2LogFile1LogFile2Member2.1Member1.1LogFile3LogFile4Member2.2Member1.2Disk1Disk2ORACLE的体系结构物理结构控制文件(ControlFile)是一个较小的二进制文件,用于描述数据库结构。描述信息如下:•数据库建立的日期。•数据库名。•数据库中所有数据文件和日志文件的文件名及路径。•恢复数据库时所需的同步信息。要点注意:•在打开和存取数据库时都要访问该文件。•镜像控制文件。•记录控制文件名及路径的参数为:CONTROL_FILESORACLE的体系结构物理结构参数文件(ParameterFile)是一个文本文件,可直接使用操作系统下的文本编辑器对其内容进行修改。该文件只在建立数据库或启动实例时才被访问,在修改该文件之前必须关闭实例。初始参数文件:init.ora生成参数文件:initSID.oraconfig.oraORACLE的体系结构物理结构参数文件的作用:•确定存储结构的大小。•设置数据库的全部缺省值。•设置数据库的范围。•设置数据库的各种物理属性。•优化数据库性能。ORACLE的体系结构物理结构参数文件中参数的数据类型:•整型例:DB_BLOCK_SIZE=2048•字符型例:DB_NAME=‘ora7’•逻辑型例:CHECKPOINT_PROCESS=trueORACLE的体系结构物理结构•共享池•数据库缓冲区•日志缓冲区ORACLE的体系结构系统全局区实例(INSTANCE)是存取和控制数据库的软件机制,它由系统全局区(SystemGlobalArea,简称SGA)和后台进程组成。ORACLE的体系结构系统全局区SGA是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。ORACLE的体系结构系统全局区共享池(SharedPool)由共享SQL区和数据字典区组成。参数SHARED_POOL_SIZE确定共享池的大小。共享SQL区包括•SQL或PL/SQL语句的文本•SQL或PL/SQL语句的语法分析形式•SQL或PL/SQL语句的执行方案数据字典区用于存放数据字典信息行。ORACLE的体系结构系统全局区数据缓冲存储区(DatabaseBufferCache)用于存储从数据文件中读的数据的备份。数据缓冲区数据文件DB_BLOCK_SIZE确定数据块的大小,一般为2K或4K,对于大数据块的数据库,此参数值为物理块的倍数。DB_BLOCK_BUFFERS确定数据块的数目。ORACLE的体系结构系统全局区数据缓冲存储区分为•脏列表包括被修改过但尚未写到数据文件的缓冲块。•LRU(LeastRecentlyUsed)列表包括空闲缓冲块、正在存取的缓冲块、已被修改但尚未移到脏列表的缓冲块。ORACLE的体系结构系统全局区日志缓冲存储区(LogBuffer)以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录将被写到日志文件中。LOG_BUFFER确定日志缓冲区的大小。日志缓冲区日志文件ORACLE的体系结构系统全局区•用户进程•服务器进程•后台进程ORACLE的体系结构进程ORACLE实例分为单进程实例和多进程实例两种。•SINGLE_PROCESS单进程/多进程实例的转换。ORACLE的体系结构进程单进程/单用户一个进程执行全部ORACLE代码。SGAORACLEServer数据库应用ORACLE的体系结构进程多进程/多用户使用多个进程执行ORACLE的不同代码,对于每一个连接的用户都有一个进程。SGA服务器进程用户进程后台进程ORACLE的体系结构进程专用服务器方式为每个用户单独开设一个服务器进程。适用于实时系统。不设置参数:MTS_SERVICEMTS_DISPATCHERSMTS_SERVERSMTS_LISTERNET_ADDRESSSGA服务器进程用户进程后台进程服务器进程用户进程ORACLE的体系结构进程多线索服务器方式通过调度器为每个用户进程分配服务器进程。设置参数:MTS_SERVICEMTS_DISPATCHERSMTS_SERVERSMTS_LISTERNET_ADDRESS用户进程SGA服务器进程后台进程服务器进程用户进程用户进程调度器ORACLE的体系结构进程参数的涵义•MTS_SERVICE:服务器名,缺省值为DB_NAME•MTS_DISPATCHERS:调度器个数•MTS_SERVERS:可以启动的服务器进程的个数•MTS_LISTERNET_ADDRESS:SQL*NET监听器地址•MTS_MAX_SERVERS:服务器进程的最大数ORACLE的体系结构进程用户进程当用户运行一个应用程序时,就建立一个用户进程。ORACLE的体系结构用户进程服务器进程处理用户进程的请求。处理过程•分析SQL命令并生成执行方案。•从数据缓冲存储区中读取数据。•将执行结果返回给用户。ORACLE的体系结构服务器进程后台进程为所有数据库用户异步完成各种任务。主要的后台进程有•DBWR数据库写进程•LGWR日志写进程•CKPT检查点写进程•SMON系统监控进程•PMON进程监控进程•ARCH归档进程•RECO恢复进程•LCKn封锁进程ORACLE的体系结构后台进程DBWR(DataBaseWriter)将数据缓冲区中所有修改过的缓冲块数据写到数据文件中,并使用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。该进程在启动实例时自动启动。ORACLE的体系结构后台进程DBWR进行写操作的情况:•脏列表达到最低限制。相当于参数DB_BLOCK_WRITE_BATCH值的一半。•一个进程在LRU列表中扫描指定数目的缓冲块,未找到空闲缓冲块。参数DB_BLOCK_MAX_SCAN_CNT确定扫描数目。ORACLE的体系结构后台进程DBWR进行写操作的情况:•出现超时3秒钟内该进程未活动,则该进程将在LRU列表中查找尚未查找的缓冲块,这组缓冲块的数目相当于参数DB_BLOCK_WRITE_BATCH值的2倍。•出现检查点。ORACLE的体系结构后台进程LGWR(LogWriter)将日志缓冲区中的所有记录项写到日志文件中。该进程在启动实例时自动启动。ORACLE的体系结构后台进程LGWR进行写操作的情况:•用户进程提交一个事务(Commit)•日志缓冲区达到1/3范围•DBWR对一个检查点需要清除缓冲块•出现超时(3秒钟内未活动,则进行一次写操作。)ORACLE的体系结构后台进程检查点(Checkpoint):在检查点出现期间,DBWR进程将数据缓冲区中的所有脏缓冲块写到数据文件中,LGWR进程将日志缓冲区中的所有记录项写到日志文件中,以确保上一个检查点至今修改过的所有数据块都被写到磁盘上。ORACLE的体系结构后台进程检查点:•预定数目的记录项被填满。参数LOG_CHECKPOINT_INTERVAL确定了预定数目。•设置指定的秒数。参数LOG_CHECKPOINT_TIMEOUT确定了间隔秒数。•每个日志开关处•关闭实例时•DBA手动操作。•表空间离线。ORACLE的体系结构后台进程CKPT(Checkpointer)在控制文件中记录检查点。参数CHECKPOINT_PROCESS确定了检查点的启动/不启动状态。若CKPT进程不启动,则该进程的工作将由LGWR进程代劳。(如果数据库的数据文件过多,这样操作会降低系统性能。)ORACLE的体系结构后台进程ARCH(Archiver)在日志文件组出现切换时,将旧日志文件的内容拷贝到脱机存储介质上,出现介质失败时用于恢复数据。•LOG_ARCHIVE_START确定了该进程的启动/不启动状态。ARCH存储介质ORACLE的体系结构后台进程ARCH(Archiver)•LOG_ARCHIVE_DEST当数据库在归档模式下操作时,该参数确定了日志文件的归档目标。•LOG_ARCHIVE_FORMAT当数据库在归档模式下操作时,该参数确定了归档日志文件的缺省文件名格式。ARCH存储介质ORACLE的体系结构后台进程SMON(SystemMonitor)负责完成自动实例恢复。该进程在启动实例时自动启动。PMON(ProcessMonitor)撤消异常中断的用户进程,并释放该进程已获得的系统资源或锁。ORACLE的体系结构后台进程RECO(Recover)在分布式操作的情况下,恢复一个事务的失败。LCKn(Lock)在并行服务器系统间加锁,最多可加10个锁,分别为LCK0,LCK1,,LCK9。ORACLE的体系结构后台进程处理SQL语句的三个阶段•语法分析•执行•返回指令Server共享池数据缓冲区日志缓冲区SGAUserUserUserSQLSELECTenameFROMemp;Server共享池数据缓冲区日志缓冲区SGAUserUserUserSMITHALLENWARDServer共享池数据缓冲区日志缓冲区SGAORACLE的体系结构示例SELECT操作SQLSELECTsalFROMempWHEREjob=‘CLERK’;Server共享池数据缓冲区SGAUserUserUserB1B2EMPTableBlock1Block2ORACLE的体系结构示例UPDATE操作为了支持读一致性,恢复和回滚,所有修改操作需要回滚段。修改操作执行:•将数据块送到数据缓冲区•将回滚块送到数据缓冲区•在修改行上设置行锁•保存回滚数据到回滚段块•将修改写到数据块ORACLE的体系结构示例UPDATE操作SQLSELECTsalFROMempWHEREjob=‘CLERK’;Server1UserUserUser1Server2UserUserUser2共享池数据缓冲区SGAB1B2R2R1EMPTableBlock1Block2RB01R1R2DataFile1DataFile2SQLUPDATEempSETsal=sal*1.1WHEREjob=‘CLERK’;ORACLE的体系结构示例第二章ORACLE的逻辑结构ORACLE的逻辑结构