1、,提要,单击此处编辑母版文本样式,第二级,第三级,第四级,第一讲,ORACLE,数据库架构,二零一零年六月,总体介绍,课程目的,通过此门课程可以学习到的技能,:,安装、建立和管理,ORACLE,10G,的企业版数据库,Oracle,数据库产品,Oracle Database 10g,提供了四个版本,每个版本适用于不同的开发和部署环境,Oracle,数据库,10g,标准版,1,Oracle,数据库,10g,标准版,2,Oracle,数据库,10g,企业版,Oracle,数据库,10g,个人版,关系型数据库系统,表,属性,行,列,数据如何组织,EMPLOYEES,DEPARTMENTS,完整性约束
2、,结构化查询语言,SQL,Structured query language(SQL):,是一种用于获取及更改数据库信息的标准的交互式编程语言,SQL,语句可以完成各种任务,如,:,查询数据,从表中插入、更改、删除数据,建立,替代,更改和删除对象,控制对数据库及其对象的访问,保证数据库的一致性及完整性,ORACLE,数据库管理员的任务,按优化顺序安排,ORACLE,数据库的设计、实现及维护工作,:,1.,评估数据库服务器的硬件,.,2.,安装,ORACLE,软件,.,3.,规划数据库,.,4.,建立并打开数据库,.,5.,备份数据库,.,6.,管理系统用户,.,7.,执行数据库的设计,.,8.
3、,从故障中恢复数据库,.,9.,监控数据库性能,.,ORACLE,数据库体系结构,目标,学习此章,需要掌握以下知识,:,描述数据库体系结构,理解实例结构,Oracle,的主要组成部分,Oracle,的主要组成部分,Oracle server,由,Oracle instance,和,Oracle database,组成。,Oracle instance,由后台进程和内存结构构成。,Oracle database,由多个操作系统文件(数据库文件)构成。,其它组成部分,Oracle Server,Oracle Instance,用于存取,Oracle database,一次只能打开一个数据库,建立连
4、接与创建会话,连接与会话,连接(,connection,),连接是用户进程与服务器进程之间的一条通信路径。,会话(,Session,),会话是用户到,Oracle Server,的一次特定连接。,Oracle Database,物理结构,ORACLE,数据库包含三种文件,控制文件、数据文件、联机日志文件,Control,files,Data,files,(includes,Data,Dictionary),Header,Online,Redo Log,files,控制文件,包含数据库的物理结构信息,多路复用防止损坏或丢失,在实例启动时就需要,控制文件分为两种类型可重用和不可重用,控制文件为二进
5、制文件,通过,alter database backup controlfile to trace,命令备份控制文件,控制文件,联机日志文件,用来记录数据库的改变,多路复用防止损坏或丢失,Redo log,buffer,Log,writer,LGWR,Group 1,Group 2,Group 3,联机日志文件,至少要有两组。只有记录的修改写入数据文件,(归档模式下已经归档)才会被重用。建议每组至少两个成员。联机日志文件,io,任务重,建议将数据文件和日志文件分开磁盘放置,联机日志文件和归档日志文件分开磁盘存放。,表空间和数据文件,表空间由一个或多个数据文件组成,数据文件只属于一个表空间,无法
6、使,system,表空间或者含有活动回退段的表空间脱机,USERS,Tablespace,Data file 1,Data file 2,ORACLE,实例的管理,System,Monitor,SMON,Database,Writer,DBW0,Log,Writer,LGWR,Process,Monitor,PMON,Archiver,ARC0,SGA,Java Pool,Shared Pool,Large Pool,Streams Pool,Database,Buffer Cache,Redo Log,Buffer,Check,point,CKPT,Oracle,的内存结构,Java Poo
7、l,Database,Buffer Cache,Redo Log,Buffer,Shared Pool,Large Pool,SGA,Streams Pool,Server,Process,1,PGA,Server,Process,2,PGA,Back-,ground,Process,PGA,Oracle,的内存结构,Oracle,的内存结构由以下两个部分组成:,System Global Area,(,SGA,):,Oracle Instance,的 基本组成部分,在实例启动时分配。,Program Global Area,(,PGA,):当服务器进程启动时分配,在结束时回收,System
8、Global Area(SGA),SGA,由以下内存结构构成,Shared Pool,Database Buffer Cache,Redo Log Buffer,其它结构,还可以选择为,SGA,配置以下三个可选的内存结构:,Large Pool,Java Pool,Stream Pool,SHOW SGA,;,System Global Area(SGA),可动态调整,大小由,SGA_MAX_SIZE/SGA_TARGET,决定,SGA,的分配以,GRANULE,为单位,连续的虚拟内存分配,Granule,的大小由,sga_max_size,决定,Shared Pool,Shared Pool
9、,用于缓存最近被执行的,SQL,语句和最近被使用的数据定义。,它主要由两个内存结构构成:,Library cache,Data dictionary cache,修改共享池的大小,ALTER SYSTEM SET SHARED_POOL_SIZE=64M;,Library Cache,Libray Cache,缓存最近被执行的,SQL,和,PL/SQL,的相关信息。,实现常用语句的共享,使用,LRU,算法进行管理,由以下两个结构构成:,Shared SQL area,Shared PL/SQL area,Data Dictionary Cache,Data dictionary cache,缓
10、存最近被使用的数据库定义。,它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。,在语法分析阶段,,Server Process,访问数据字典中的信息以解析对象名和对存取操作进行验证。,将数据字典信息缓存在内存中有助于缩短响应时间。,Database Buffer Cache,Database Buffer Cache,用于缓存从数据文件中检索出来的数据块。,可以大大提高查询和更新数据的性能。,使用,LRU,算法进行管理,Db_block_size,决定数据库的,primary,数据块的大小,Database Buffer Cache,由几个独立的子缓冲区组成,DB_CAC
11、HE_SIZE,DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE,可以动态更改,alter system set db_cache_size=96M,DB_CACHE_ADVICE,用来提示,Database Buffer Cache,的大小设置是否合适。,Redo Log Buffer Cache,Redo Log Buffer Cache,缓存对于数据块的所有修改。,主要用于恢复,其中的每一项修改记录都被称为,redo,条目。,利用,Redo,条目的信息可以重做修改。,由,LOG_BUFFER,设置大小,Large Pool,Large Pool,是,SGA
12、,中一个可选的内存区域。,可以减轻共享池的负担,SHARED SERVER,可以为备份、恢复等操作来使用,可以用于并行操作,不使用,LRU,算法来管理,指定,Large Pool,的大小,ALTER SYSTEM SET LARGE_POOL_SIZE=64M,Java Pool,Java Pool,为,Java,命令的语法分析提供服务,在安装和使用,Java,的情况下使用,其大小由,JAVA_POOL_SIZE,指定,STREAM Pool,STREAM POOL,为流池,当使用流功能,其大小由,STREAM_POOL_SIZE,指定,Program Global Area(PGA),PGA
13、,是为每个连接到,Oracle database,的用户进程保留的内存。,Userprocess,PGA,Serverprocess,Program Global Area(PGA),PGA,存储一个服务器进程或后台进程的数据和控制信息,并且只能由一个进程使用。它在进程创建时分配,在进程结束时被收回。,进程,Oracle,拥有以下类型的进程:,User Process,Server Process,Background Process,用户进程(,User Process,),是一个需要与,Oracle Server,交互的程序,运行于客户端,当用户运行某个工具或应用程序(如,SQL*Plus
14、,)时创建,当用户退出上述程序时结束,向,Oracle Server,发出调用,但它并不与,Oracle Server,直接交互,而是通过,Server Process,与,Oracle Server,进行交互。,用户进程(,User Process,),Database user,Serverprocess,Userprocess,Connectionestablished,Server Process,是一个直接与,Oracle Server,交互的程序。,与,Oracle Server,运行于同一台机器上,使用,PGA,执行,User Process,发出的调用,并向,User Proc
15、ess,返回结果状态和结果信息。,Server Process,Connection established,Session created,Database user,Userprocess,Serverprocess,Oracle server,Background Process,后台进程用于维护物理存储与内存中的数据之间的关系。主要包括:,必须的后台进程,PMON,CKPT,LGWR,SMON,DBWn,可选的后台进程,ARCn,Dnnn,Database Writer(DBWn),DBWn,在以下情况将数据写入磁盘:,发生检查点,达到脏缓冲区阈值,没有可用的缓冲区,超时,将表空间设置
16、为脱机或只读,删除或截断表,备份表空间,LOG Writer,(,LGWR,),LGWR,在以下情况将缓冲区中的数据写入磁盘:,事务提交,三分之一的,redo,日志缓冲区已满,Redo,日志缓冲区中的内容超过,1M,每三秒钟,在,DBWn,写磁盘之前,System Monitor(SMON),负责检查和维护,Oracle database,的一致性。它主要完成以下工作:,实例恢复,重做已提交的事务,打开数据库,回滚未提交的事务,合并数据文件中相邻的自由空间,释放临时段的空间,System Monitor(SMON),Control files,Data files,Redo Log files
17、,Database,Instance,SGA,SMON,Process Monitor(PMON),当某个进程失效时,清除相关的资源。它主要负责以下工作:,回滚用户的当前事务,释放相关的锁,释放其它相关的资源,Process Monitor(PMON),PGA area,Instance,SGA,PMON,Checkpoint(CKPT),Checkpoint,负责:,使,DBWn,将,SGA,中所有被修改的数据库缓冲区的内容写入磁盘,无论事务是否被提交,用检查点信息更新数据文件头,用检查点信息更新控制文件,它可以保证:,将经常被修改的数据块写入磁盘,简化实例恢复,Checkpoint(CKP
18、T),Archiver,(,ARCn,),是一个可选的后台进程,当把数据库设置为,ARCHIVELOG,模式时,可以自动归档联机,redo,日志,能够保存所有对数据库所做修改的记录,Archiver,(,ARCn,),ARCn,Archived redo log files,Control files,Data,files,Redo log files,逻辑结构,描述数据库的物理空间如何被使用,表空间、段、区及数据块的关系,Tablespace,Datafile,Segment,Blocks,Extent,Segment,段,区和块,段存在于一个表空间中,.,一个或多个区组成一个段,.,一个或
19、多个数据块组成一个区,.,数据块由一个或多个操作系统块组成,.,数据库中一个普通表就是一个段。分区表中每一个分区就是一个段。索引也是一个段。数据库中,io,以数据块为单位进行。,段,segment,区,extents,数据块,data blocks,操作系统块,os blocks,2,数据库的逻辑和物理结构,Database,Logical,Physical,Tablespace,Data file,OS block,Segment,Extent,Oracle datablock,Schema,查询处理,解析,在,Shared Pool,中寻找是否有同样的语句,检查语法、对象名和权限,对解析用
20、到的对象加锁,创建和存储执行计划,执行,获取和返回数据,处理,DML,语句,解析,执行,Database Control,Database control,Grid Control,Grid control,Management server,Management repository,Database control,Database,OS/third-party application,Application server,Application server control,Managed targets,Agent,Agent,Agent,总结,通过本章的学习,应达到,:,描述数据库体系结构,理解实例结构,