1oracle管理科学数据库技术培训2oracle数据库的特点•Oracle是oracle公司出品的十分优秀的DBMS。目前,中国电信行业使用的数据库系统基本上全部是oracle(不是windows下的)。其市场占有率为32.6%。•如果实现的是高端企业应用,需要处理的并发数据量很大,同时对数据库的可靠性、安全性和可扩展性又很高的要求,那么oracle是很好的选择。3oracle数据库的特点•支持大数据库、多用户的高性能的事务处理•ORACLE遵守数据存取语言、操作系统、用户接口和通讯协议的工业标准。•实施安全性控制和完整性控制•支持分布式数据库和分布处理。分布式系统像集中式数据库具有一样的透明性和数据一致性。•具有可移植性、可兼容性和连接性。•Oracle10g支持网格计算4第一章ORACLE的体系结构Oracle的物理结构Oracle的系统全局区Oracle的进程5ORACLE的体系结构体系结构概述•物理结构数据文件、日志文件、控制文件、参数文件•系统全局区(SystemGlobalArea)共享池、数据缓冲区、日志缓冲区•进程用户进程、服务器进程、后台进程6共享池数据缓冲区日志缓冲区SGA数据文件日志文件参数文件控制文件DBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUserORACLE的体系结构体系结构图示7•数据文件•日志文件•控制文件•参数文件ORACLE的体系结构物理结构8数据文件(DataFile)是物理存储ORACLE数据库数据的文件。其特点如下:•每一个数据文件只与一个数据库相联系。•一个表空间可包含一个或多个数据文件。•一个数据文件只能属于一个表空间ORACLE的体系结构物理结构9日志文件(LogFile)记录所有对数据库数据的修改,以备恢复数据时使用。其特点如下:•每一个数据库至少包含两个日志文件组。•日志文件组以循环方式进行写操作。•每一个日志文件成员对应一个物理文件。ORACLE的体系结构物理结构10日志开关(LogSwitch)是为实现日志文件组的循环使用而设置的。出现日志开关的情况如下:•当一个日志文件组被填满时•关闭数据库时•DBA手动转移日志开关ORACLE的体系结构物理结构11日志文件写操作图示LogFile1LogFile2Group1Group2Member2.1Member1.1ORACLE的体系结构物理结构12镜像日志文件是为防止日志文件的丢失,在不同磁盘上同时维护两个或多个联机日志文件的副本。其特点如下:•每个日志文件组至少包含两个日志文件成员。•每组的成员数目相同。•同组的所有成员同时被修改。•同组的成员大小相同,不同组的成员大小可不同。ORACLE的体系结构物理结构13镜像日志文件图示Group1Group2LogFile1LogFile2Member2.1Member1.1LogFile3LogFile4Member2.2Member1.2Disk1Disk2ORACLE的体系结构物理结构14共享池数据缓冲区日志缓冲区SGADBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUserORACLE的体系结构体系结构图示15控制文件(ControlFile)是一个较小的二进制文件,用于描述数据库物理结构。描述信息如下:•数据库建立的日期。•数据库名。•数据库中所有数据文件和日志文件的文件名及路径。•恢复数据库时所需的同步信息。要点注意:•在打开和存取数据库时都要访问该文件。•镜像控制文件。•记录控制文件名及路径的参数为:CONTROL_FILESORACLE的体系结构物理结构16参数文件(PFILE)和服务器端参数文件(SPFILE)oracle8i以前的版本都是使用普通文本形式的本地初始化参数文件,initSID.ora。自oracle9i开始使用服务器端参数文件,SPFILE是二进制格式的,默认名为SPFILESID.ORA。尽管能够打开并编辑器中的内容,但是任何用户都不应该手工修改其中的内容,否则实例将无法启动。ORACLE的体系结构物理结构17参数文件的作用:•确定存储结构的大小。•设置数据库的全部缺省值。•设置数据库的范围。•设置数据库的各种物理属性。•优化数据库性能。ORACLE的体系结构物理结构18创建服务器端初始化参数文件SPFILE在创建时必须基于一个传统的文本初始化参数文件,而且必须在启动实例之前完成创建工作。SqlcreateSPFILE=‘D:\ORACLE\…’FROMPFILE=‘D:\ORACLE\…\TEMPFILE\…’;PFILE子句是必需的,SPFILE子句可以省略,则SPFILE存贮在缺省位置ORACLE_HOME\DATABASE\下。ORACLE的体系结构物理结构19ORACLE的体系结构物理结构•查看服务器端参数文件在SQLPLUS中使用SHOWPARAMETERS命令查询V$PARAMETER或V$PARAMETER2动态性能视图,V$PARAMETER2的格式更加简介。查询V$SPPARAMETER动态性能视图•导出服务器端参数文件SQLCREATEPFILE=‘D:\…’FROMSPFILE=‘…’20ORACLE的体系结构物理结构•修改服务器端参数文件在9i中直接手工修改本地参数化文件是没用的,不会改变数据库的设置。利用ALTERSYSTEMSETparameter=value语句可以在数据库运行时修改初始化参数的值。在SET子句中可以使用SCOPE选项来设置影响范围,所谓影响范围就是ALTERSYSTEM语句对参数的修改是仅对当前实例有效(记录在内存中),还是永久有效(记录在SPFILE中)。21ORACLE的体系结构物理结构SCOPE选项有三种选择:SCOPE=SPFILE对参数的修改仅记录在SPFILE,改选项同时适用动态初始化参数和静态初始化参数。修改后的参数在下次启动后生效SCOPE=MEMORY对参数的修改仅记录在内存中,更改立即生效,仅对本次实例有效。对静态参数,不能使用这个选项值。SCOPE=BOTH对参数的修改同时记录在内存和SPFILE中,立即生效,下次启动后使用修改后的参数。对于静态参数,不能使用这个选项。22ORACLE的体系结构物理结构•主要的初始化参数全局数据库名和SIDDB_NAME本地数据库标识,在只有一个实例的情况下,本地数据库标识和实例标识SID相同。DB_DOMAIN网络域名则全局名GLOBAL_NAME为DB_NAME.DB_DOMAIN控制文件参数control_files='d:\oracle\oradata\test\CONTROL01.CTL','d:\oracle\oradata\test\CONTROL02.CTL','d:\oracle\oradata\test\CONTROL03.CTL'23ORACLE的体系结构物理结构数据块参数db_block_size,数据库建立后不能修改。一般是操作系统块的整数倍。对I/O密集的操作,使用双倍大小的数据块能提高40%左右的I/O性能,但是所这块的增大,数据库对内存SGA的需求也增大,会对系统性能产生负面影响db_cache_size指定SGA区数据库告诉缓冲区的大小。Oracle8i中是使用db_block_buffers来决定的。撤销空间的管理方式undo_management='AUTO‘\’MANUAL’undo_tablespace='UNDOTBS1'24共享池数据缓冲区日志缓冲区SGA数据文件日志文件参数文件控制文件DBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUserORACLE的体系结构体系结构图示25•共享池•数据库缓冲区•日志缓冲区ORACLE的体系结构系统全局区26实例(INSTANCE)是存取和控制数据库的软件机制,它由系统全局区(SystemGlobalArea,简称SGA)和后台进程组成。ORACLE的体系结构系统全局区27SGA是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。ORACLE的体系结构系统全局区28ORACLE的体系结构系统全局区•SGA区的初始化参数DB_CACHE_SIZE数据库缓存的大小LOG_BUFFER重做日志缓存的大小SHARED_POOL_SIZE共享池的大小LARGE_POOL_SIZE大型池的大小•为了优化系统性能,SGA区最好全部位于物理内存中。如果超过了系统物理内存的大小,则不得不使用虚拟内存来补偿,部分SGA区必须由操作系统进行换页操作,将在很大程度上降低系统性能。共享池数据缓冲区日志缓冲区SGA29共享池(SharedPool)由共享SQL区和数据字典区组成。参数SHARED_POOL_SIZE确定共享池的大小。共享SQL区包括•SQL或PL/SQL语句的文本•SQL或PL/SQL语句的语法分析形式•SQL或PL/SQL语句的执行方案数据字典区用于存放数据字典信息行。ORACLE的体系结构系统全局区30数据缓冲存储区(DatabaseBufferCache)用于存储从数据文件中读的数据的备份。数据缓冲区数据文件DB_BLOCK_SIZE确定数据块的大小,一般为2K或4K,对于大数据块的数据库,此参数值为物理块的倍数。DB_CACHE_SIZE(oracle9i)DB_BLOCK_BUFFERS(oracle8i)确定数据块的数目。ORACLE的体系结构系统全局区31数据缓冲存储区分为•脏列表包括被修改过但尚未写到数据文件的缓冲块。•LRU(LeastRecentlyUsed)列表包括空闲缓冲块、正在存取的缓冲块、已被修改但尚未移到脏列表的缓冲块。ORACLE的体系结构系统全局区32日志缓冲存储区(LogBuffer)以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录将被写到日志文件中。LOG_BUFFER确定日志缓冲区的大小。日志缓冲区日志文件ORACLE的体系结构系统全局区33共享池数据缓冲区日志缓冲区SGA数据文件日志文件参数文件控制文件DBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUserORACLE的体系结构体系结构图示34•用户进程•服务器进程•后台进程ORACLE的体系结构进程35ORACLE实例分为单进程实例和多进程实例两种。•SINGLE_PROCESS单进程/多进程实例的转换。ORACLE的体系结构进程36单进程/单用户一个进程执行全部ORACLE代码。SGAORACLEServer数据库应用ORACLE的体系结构进程37多进程/多用户使用多个进程执行ORACLE的不同代码,对于每一个连接的用户都有一个进程。SGA服务器进程用户进程后台进程ORACLE的体系结构进程38用户进程当用户运行一个应用程序时,就建立一个用户进程。ORACLE的体系结构用户进程39服务器进程处理用户进程的请求。处理过程•分析SQL命令并生成执行方案。•从数据缓冲存储区中读取数据。•将执行结果返回给用户。ORACLE的体系结构服务器进程40后台进程为所有数据库用户异步完成各种任务。主要的后台进程有•DBWR数据库写进程•LGWR日志写进程•CKPT检查点写进程•SMON系统监控进程•PMON进程监控进程•ARCH归档进程•RECO恢复进程•LCKn封锁进程ORACLE的体系结构后台进程41ORACLE的体系结构后台进程DBWR(DataBaseWriter)•将数据缓冲区中所有修改过的缓冲块数据写到数据文件中,并使用LRU(Least-Recently-Used)算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。该进程在启动实例时自动启动42DBWR进行写操作的情况:•脏列表达到最低限制。相当于参数DB_BLOCK_WRITE_BATCH