1、Oracle10g结构组件2022-12-51Oracle10g的组件概述PasswordfileInstanceSGARedo LogBufferShared PoolData DictionaryCacheLibraryCacheDBWRSMONPMONCKPTLGWRARCnUserprocessServerprocessPGAControl filesDatafiles DatabaseDatabaseBuffer CacheRedo Log filesJava PoolLarge PoolParameterfileArchived Log filesStreams PoolMMONM
2、MANMMNLOthers2022-12-52Oracle10g服务器一个oracle10g服务器是一个开放的,全面综合的数据库管理系统由一个Oracle实例和一个Oracle数据库组成Oracle server2022-12-53Oracle10g实例一个Oracle实例:是一种访问Oracle数据库的方法一个实例只能用于访问一个数据库由内存和后台进程组成后台进程结构后台进程结构内存结构内存结构InstanceSGARedo LogBufferShared PoolData DictionaryCacheLibraryCacheDBWRSMONPMONCKPTLGWROthersDataba
3、seBuffer CacheJava PoolLarge PoolStreams Pool2022-12-54建立一个连接和创建一个会话连接到一个Oracle的实例:建立一个用户连接创建一个会话创建会话创建会话数据库用户数据库用户UserprocessServerprocess建立连接建立连接Oracle server2022-12-55三种连接方式o本地连接o网络连接(通过Net)o三层连接(通过中间层服务器)2022-12-56Oracle10g数据库一个Oracle数据库:可以看成是一个数据存储的单元主要由三种类型文件组成(数据文件、日志文件、控制文件)PasswordfileParam
4、eterfileArchived Log filesControl filesDatafiles Redo Log filesOracle Database2022-12-57物理结构物理结构包括三种文件类型:控制文件数据文件联机重做日志文件ControlfilesDatafiles(includes Data Dictionary)HeaderOnlineRedo Logfiles2022-12-58内存结构内存结构包括两个部分:系统全局区(SGA):在实例启动的时候分配,是Oracle实例的基础组件程序全局区(PGA):当服务器进程产生时分配2022-12-59内存分配单位o分配的基本单位
5、是粒度(granule)连续的虚拟内存分配根据SGA_MAX_SIZE调整大小大小按照以下规则分配:SQL select decode(floor(to_number(value/1024/1024/1024),0,4M,16M)granules 2 from v$parameter where name=sga_max_size;GRA -4MoSGA内存按SGA组件显示,单位为粒度oV$BUFFER_POOL显示分配和取消分配的情况2022-12-510系统全局区系统全局区包括以下几个部分:共享池数据缓冲区重做日志缓冲区其他(例如 statistical data)三个额外的内存结构:St
6、reams Pool大池Java池2022-12-511系统全局区动态的由参数SGA_MAX_SIZE决定大小SGA_TARGET如果设置了SGA_TARGET,以下组件将自动调整:Buffer cache(DB_CACHE_SIZE)Shared pool(SHARED_POOL_SIZE)Large pool(LARGE_POOL_SIZE)Java pool(JAVA_POOL_SIZE)2022-12-51210g自动SGA调整oSGA_TARGET SQL show parameter sga_ NAME TYPE VALUE -sga_max_size big integer 30
7、0M sga_target big integer 276M2022-12-513V$SGAINFOSQL select*from v$sgainfo;NAME BYTES RES-Fixed SGA Size 1301704 NoRedo Buffers 1048576 NoBuffer Cache Size 25165824 YesShared Pool Size 125829120 YesLarge Pool Size 8388608 YesJava Pool Size 125829120 YesStreams Pool Size 0 YesGranule Size 4194304 No
8、Maximum SGA Size 314572800 NoStartup overhead in Shared Pool 37748736 NoFree SGA Memory Available 2516582411 rows selected.2022-12-514v$sga_dynamic_componentsSQL select component,current_size,min_size,max_size 2 from v$sga_dynamic_components;COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE-shared pool 13841
9、2032 138412032 0large pool 8388608 8388608 0java pool 125829120 125829120 0streams pool 0 0 0DEFAULT buffer cache 37748736 37748736 0KEEP buffer cache 0 0 0RECYCLE buffer cache 0 0 0DEFAULT 2K buffer cache 0 0 0DEFAULT 4K buffer cache 0 0 0DEFAULT 8K buffer cache 0 0 0DEFAULT 16K buffer cache 0 0 0D
10、EFAULT 32K buffer cache 0 0 0OSM Buffer Cache 0 0 013 rows selected.2022-12-515共享池用于存储:最近执行的SQL语句最近使用的数据定义由两个与性能相关的部分组成:库缓存数据字典缓存由参数SHARED_POOL_SIZE决定大小Shared PoolDataDictionaryCacheLibraryCacheALTER SYSTEM SET SHARED_POOL_SIZE=100M;2022-12-516库缓存存储最近使用的SQL和PL/SQL语句的信息共享最常用的语句管理上遵循LRU规则包括两个部分:共享SQL区
11、共享PL/SQL区大小由Shared_Pool_Size的大小决定2022-12-517数据字典缓存存储在数据库中最近使用的定义包括数据文件,表,索引,列,用户,权限和其他的数据库对象在分析阶段,服务器进程查找数据字典去验证对象的名字以及是否是合法访问对于查询和DML语句,如果数据字典的信息在缓存中能够提高响应时间大小由Shared Pool的大小决定2022-12-518数据缓冲区存储从数据文件中获得的数据块的镜像当获取和更新数据的时候能够大幅度的提高性能管理上遵循LRU规则参数DB_BLOCK_SIZE其块的大小Database BufferCache2022-12-519数据缓冲区包括以
12、下独立的子缓存:DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE能够动态的调整大小ALTER SYSTEM SET DB_CACHE_SIZE=100M;2022-12-520重做日志缓冲区记录所有数据库的块改变主要的目的是用于恢复大小由参数LOG_BUFFER决定Redo LogBuffer2022-12-521大池是系统全局区中可选的一个部分减轻在共享池中的负担用于:共享服务器的会话内存(UGA)I/O slaver进程备份恢复操作或者是使用RMAN大小由参数LARGE_POOL_SIZE决定能够被动态的改变大小2022-12-522
13、Java池Java命令的分析如果要安装和使用Java大小由参数JAVA_POOL_SIZE决定,如果granule是4M,默认是24M;如果granule是16M,默认大小是32M2022-12-523程序全局区为每个用户连接Oracle数据库保留的内存当进程创建时分配进程结束后被释放只能被一个进程使用参数PGA_AGGREGATE_TARGET指定PGA的总共大小 UserprocessPGAServerprocess2022-12-524建议值 For OLTP 系统PGA_AGGREGATE_TARGET =(*80%)*20%For DSS 系统 PGA_AGGREGATE_TARGE
14、T =(*80%)*50%2022-12-525进程结构Oracle有以下几种进程:用户进程:在用户连接数据库时产生服务器进程:当连接到Oracle实例并且用户建立会话的时候产生后台进程:Oracle实例启动的时候产生2022-12-526用户进程请求与Oracle服务器连接必须要先建立一个连接不会直接和Oracle服务器联系Database userServerprocessUserprocessConnectionestablished2022-12-527服务器进程直接和Oracle服务器联系完成调用并返回结果独立服务器或者是共享服务器都能产生Connection established
15、Session createdDatabase userUserprocessServerprocessOracle server2022-12-528后台进程维持物理和内存之间的关联:必须要有的后台进程:DBWnPMONCKPTLGWRSMON可选的后台进程:ARCn CJQ0 LMON RECO QMNnLMSSnnn LCKn Pnnn LMDn2022-12-529数据库写进程(DBWn)DBWn写的条件写的条件:发生检查点发生检查点脏缓存到达限制脏缓存到达限制没有空闲的缓存没有空闲的缓存超时发生超时发生RAC ping请求请求 表空间离线表空间离线表空间只读表空间只读表被删除或者截断
16、表被删除或者截断开始备份表空间开始备份表空间InstanceSGAControl filesData files Redo Log filesDatabaseDBWnDatabaseBufferCache2022-12-530日志写进程(LGWR)LGWR写的条件写的条件:提交的时候提交的时候达到三分之一满达到三分之一满日志的大小到日志的大小到1M每隔三秒每隔三秒在在DBWn进程写之前进程写之前InstanceSGAControl filesData files Redo Log filesDatabaseRedo LogBufferDBWn LGWR2022-12-531系统监测进程(SMO
17、N)作用作用:实例恢复实例恢复前滚所有重做日志中前滚所有重做日志中的改变的改变打开数据库为了用户打开数据库为了用户能访问能访问回滚没有提交的事务回滚没有提交的事务接合自由的空间接合自由的空间(coalesce every three seconds)释放临时表空间释放临时表空间(deallocated)Control filesData files Redo Log filesDatabaseInstanceSGASMON2022-12-532进程监测进程(PMON)清除失败的进程清除失败的进程:回滚事务回滚事务释放锁释放锁释放其他资源释放其他资源重启死掉的重启死掉的dispatchersPG
18、A areaInstanceSGAPMON2022-12-533检查点进程(CKPT)Control filesData files Redo Log filesDatabaseInstanceSGADBWn LGWRCKPT作用作用:给信号给给信号给DBWn更新数据文件头更新数据文件头 更新控制文件更新控制文件2022-12-534归档进程(ARCn)可选的后台进程当启用归档方式后自动归档重做日志文件ARCnArchived redo log filesControl filesDatafiles Redo log files2022-12-535逻辑结构表明数据库的物理空间如何使用分为表空间,段,范围,块TablespaceDatafileSegmentBlocksExtentSegment2022-12-536处理SQL语句连接到一个实例:用户进程服务器进程对于不同的语句Oracle服务器使用不同的组件:查询返回行DML记录改变提交确保事务恢复一些Oracle组件不参与SQL语句的处理.2022-12-537处理查询2022-12-538处理DML语句2022-12-539小结在这课中,我们应该学会:了解数据库的文件了解系统全局区的内存结构了结必须的后台进程了解可选的后台进程了解逻辑结构2022-12-540