1、 Oracle 10g 体系结构 目录 1 概述 3 2 数据库(DATABASE) 4 3 实例(INSTANCE) 5 4 内存结构 6 4.1 PGA(Program Global Area)程序全局区 6 4.2 SGA(System Global Area)系统全局区 6 4.2.1 数据库高速缓冲区(Database Buffer Cache) 6 4.2.2 共享池(Shared Pool) 7 4.2.3 重做日志缓冲区 7 4.2.4 Java Pool 8 4.2.5 Lagre Pool 8 4.2.6 Stream Pool
2、8 4.2.7 排序区 8 5 ORACLE存放结构 10 5.1 数据库逻辑结构 10 5.2 数据库逻辑结构说明 11 5.2.1 表空间(Tablespace) 11 5.2.2 表空间、段、区、块她们之间关系 11 5.2.3 ORACLE自动创建表空间 11 5.2.4 段 12 5.2.5 区 14 5.2.6 块 14 5.3 物理存放结构 14 5.3.1 控制文件 14 5.3.2 数据文件 15 5.3.3 重做日志文件 15 1 概述 RACLE 10g数据库系统为含有管理ORACLE10g数据库功效计算机系统。ORAC
3、LE 10g数据库服务器指是数据库管理系统和数据库总和。Oracle10g体系结构是指Oracle10g数据库服务器关键组成和这些组成部分之间联络和操作方法。Oracle10g数据库服务器从宏观方面来讲包含数据库(DB)和实例(Instance),其整体结构图1-1所表示: 图 11 ORACLE10g数据库整体结构 2 数据库(DataBase) 数据库是一个数据集合,不仅是指物理上数据,也指物理、存放及进程对象一个组合。 3 实例(Instance) 数据库实例(也称为服务器Server)就是用来访问一个数据库文件集一个存放结构及后台进程集合。它使一个单独数据库能够
4、被一个实例或多个实例访问(也就是ORACLE并行服务器-- OPS)。实例和数据库关系图3-1和图3-2所表示: 图 31(单实例访问) 图 32 (多实例访问) 注:决定实例组成及大小参数存放在init.ora文件中。 要想访问数据库就要先开启实例,开启实例oracle就会分配一片被称为SGA内存结构,并开启一系列后台进程。SGA中存放是数据库信息,这些信息被后台进程所共享。 实例和数据库关系是多对一关系,一个实例能够驱动一个数据库,也能够是多个实例驱动一个数据库,多个实例驱动一个数据库就被称为集群RAC(Real Application Cluster)。 4 内存
5、结构 4.1 PGA(Program Global Area)程序全局区 用来存放是服务器进程数据和控制信息。 4.2 SGA(System Global Area)系统全局区 SGA(System Global Area)是系统全局区,是用来存放数据库例程数据和控制信息,这部分信息是共享。当有多个用户并发连接到数据库例程时候,它们能够共享SGA中信息。 sga区是例程内存结构关键组成部分,每个例程全部只有一个sga区,当多个用户同时连接到一个例程时,全部用户进程,服务进程全部能够共享使用sga区。它是不一样用户进程和服务进程进行通信中心,数据库多种操作关键全部在sga区中进行,sg
6、a使用内存最多,同时也是影响数据库性能最大参数。sga是一块用于加载数据,对象并保留运行状态和数据库控制信息一块内存区域,在数据库实例开启时分配,当实例关闭时释放,每个实例全部用于自己sga区。当数据库开启到nomount状态时,sga区已经分配,同时开启后台进程。 SGA各个不一样区用途为: 4.2.1 数据库高速缓冲区(Database Buffer Cache) 存放是数据文件副本,全部连接到数据库用户全部能够共享数据库高速缓冲区中数据 1) Default(默认池) 默认数据全部放在这个池中缓存,假如有些数据长久不用,数据会被踢出缓存 2) Keep(保留池) 通常将
7、访问比较频繁数据放在这个池中。此池数据一直保留(除非其它段要数据),数据不会被踢出 3) Recycle(回收池) 是将不适合缓存数据放在这个池中,以免因为这个数据比较大,将其它池数据踢出缓存。回收池要小部分,以确保大数据快速进入和离开缓存。 4.2.2 共享池(Shared Pool) 1) 库缓冲区 用来运行PL/SQL代码和存放使用过SQL语句 2) 字典缓冲区 数据库对象信息被存放在数据字典表中,数据库对象信息包含用户帐号数据、数据文件名、段名、盘区位置、表说明及权限。当数据库需要这些信息时候就会去读取数据字典表,把这些信息放到字典缓冲区中 说明:共享池通常不会很大,
8、也就300-500M就能够了 4.2.3 重做日志缓冲区 将数据写到在线重做日志当中,则在写到磁盘前要在重做缓存区中临时缓存部分数据。 数据不会在“重做缓存区”里停留很长时间,LGWR(Log Writer)会在以下情况下触发: 1)每3秒一次; 2)不管何时提交请求(commit); 3)LGWR切换日志时; 4)重做日志区1/3满时,或包含了1M日志数据时。 通常重做事务日志就几M,超出了3M就没意义了。 4.2.4 Java Pool 支持数据库中java代码。通常比较小 4.2.5 Lagre Pool 它用于“大块”内存分配,共享池不会处理如此大内存。
9、通常关键用于备份。 4.2.6 Stream Pool 设计数据库共享和复制,设计流池能够避免在流数据库特征下“窃取”共享池10%空间。 4.2.7 排序区 排序需要内存空间,ORACLE利用该内存排序数据,这部分空间称为排序区。排序区存在于请求排序用户进程内存中,该空间大小为适就排序数据量大小,可增加,但受初始化参数SORT_AREA_SIZER所限制 相关排序区设置是否有效: if ( 数据库版本 >= 10gR1 ) then if (workarea_size_policy=auto) then sort area size 无
10、效 else sort area size 有效 end if else -- 数据库版本 < 10gr1 if ( shared server 连接方法 ) then sort area size 有效 else -- dedicated server连接方法 if (workarea_size_policy=auto) then sort area size 无效 else sort area si
11、ze 有效 end if end if end if 数据库版本在10gR1以后,workarea_size_policy设置为MANUAL时,SORT_AREA_SIZER有效。 版本在10gR1之前,当连接方法为共享服务器时,SORT_AREA_SIZER有效。当为专属服务器时,workarea_size_policy设置为MANUAL时,SORT_AREA_SIZER有效。 5 Oracle存放结构 ORACLE10g数据库存放结构是指逻辑结构在物理上是怎样实现,共有3层,图5-1所表示。 图 51 数据库存放结构 ORACLE数据
12、库存放结构分为逻辑存放结构和物理存放结构。 逻辑存放结构关键描述ORACLE数据库内部存放结构,物理存放结构关键描述数据库外部存放结构。从物理上看数据库由控制文件、数据文件、重做日志文件、初始化参数文件等操作系统文件组成。 从逻辑上看数据库是由表空间组成。表空间是最大逻辑单位,块是最小逻辑单位。 5.1 数据库逻辑结构 Oracle 10g数据库逻辑结构关键指从数据库使用者角度来考查数据库组成,图5-2所表示。自下向上,数据库逻辑结构共6层。 图 52 数据库逻辑结构 5.2 数据库逻辑结构说明 5.2.1 表空间(Tablespace) 数据库能够划分成表空间。
13、每个表空间全部是相关对象一个分组。表空间包含一个或多个段,每个表空间只能属于一个数据库,不过一个数据库能够包含多个表空间。 5.2.2 表空间、段、区、块她们之间关系 多个块组成区、多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。表空间是最大逻辑单位,一个数据库由多个表空间组成、一个表空间能够包含多个数据文件,但一个数据文件只能属于一个表空间。 5.2.3 ORACLE自动创建表空间 1) SYSTEM系统表空间 用来存放表空间名称、控制文件、数据字典、数据文件等信息; 2) SYSAUX表空间 SYSAUX表空间是新引进用来存放和ORACLE供给特征相关方案对象;
14、3) TEMP表空间 临时表空间存放临时表和临时数据用于排序。 4) 工具表空间(Tools tablespace) 用于保留Oracle数据库工具所需数据库对象,这些工具表空间存放在工作时所用专用表。旧Oracle版本无此表空间。安装以后工具表空间是Tools。 5) 用户表空间(Users tablespace) 用于存放部分试验例子用空间,当然也能够用于存放应用系统数据。旧版本无Users表空间。现在用户表空间为 USERS 。 6) 数据及索引表空间 存放数据及索引表空间,Oracle7以后全部提倡在应用系统中,尤其是含有大量数据系统,要把数据和索引分开存放在不一样分区中
15、方便提升查询速度。在安装后索引表空间可能是INDX。数据表空间就是USERS。 7) 回滚段表空间(Rollback Segment) Oracle数据库系统在运行Insert、Update、Delete时全部需要一个磁盘空间来存放恢复信息(Undo Information),方便在进行恢复时能将原来信息读出来。安装后回滚段表空间是RBS表空间。数据库管理员也可依据应用需要建立另外回滚段表空间。 5.2.4 段 用于存放表空间中某一个特定、含有独立存放结构数据库对象数据,它是由一个或多个连续区组成。段伴随数据增加而不停变大,段增大过程是经过增加区个数而实现,每个区大小是块整数倍。下面
16、是段类型: 1) 表段 存放表全部数据,当用户创建表时就会在该用户默认表空间中为该表分配一个和表名相同表段,方便未来存放该表全部数据,显然在一个表空间中创建了多个表在该表空间中就有多个表段。 SELECT SEGMENT_NAME, TABLESPACE_NAME, BYTES, BLOCKS FROM USER_EXTENTS; 查询数据字典USER_EXTENTS得到 2) 表分区段 用于存放分区表全部数据,当用户创建分区表时,就会在该用户默认表空间中为该表每个分区分配一个表分区段,经过将一个大表数据分散到不一样表分区段中,就能降低I/O次数、提升性能。 3) 索引段
17、存放索引全部数据,当用户使用CREATE INDEX命令创建索引或在定义约束而自动创建索引时,就会在该用户默认表空间中为该索引分配一个和索引名相同索引段。 SELECT INDEX_NAME, TABLE_OWER, TABLE_NAME, TABLESPACE_NAME FROM USER_INDEXS; 查询数据字典USER_INDEXS得到。 4) 索引分区段 假如为分区表创建分区索引则会为每个分区索引分配一个索引分区段,功效和表分区段相同。 5) 临时段 用于存放排序操作所产生临时数据,临时数据首先会被暂存到排序区(PGA)中,当排序区不足以暂存这些临时数据时,则会在该
18、用户临时表空间中自动创建一个临时段用于暂存这些临时数据排序结束时临时段会自动消除。 6) 回退段 存放数据修改之前位置和值,利用这些信息能够回退未提交事务,维护数据库读一致性,并能从例程瓦解中进行恢复。 7) 撤销段 5.2.5 区 由物理上连续存放块组成,一个区只能属于一个数据文件经过查询DBA_EXTENTS就能够知道已分配区,查询DBA_FREE_SPACE就能够知道表空间中空闲区。 5.2.6 块 最小数据管理单位即数据管理中输入输出最小单位。 5.3 物理存放结构 物理存放结构由控制文件、数据文件、重做日志文件组成。物理存放结构和逻辑存放结构在操作上一个区分是逻辑存
19、放结构只有创建、删除操作而物理存放结构除了创建、删除外还有一个将其移动到另一个位置操作这么能够实现多路复用和将她们安排到不一样磁盘位置并更更名称功效了。 5.3.1 控制文件 ORACLE 10G装完后自动创建3个控制文件以下: C:\oracle\product\10.2.0\oradata\orcl\control01.ctl C:\oracle\product\10.2.0\oradata\orcl\control02.ctl C:\oracle\product\10.2.0\oradata\orcl\control03.ctl 5.3.2 数据文件 数据文件是实际存放插入
20、到数据库表中实际数据操作系统文件,自动创建6个表空间全部有其对应数据文件 C:\oracle\product\10.2.0\oradata\orcl\example01.dbf C:\oracle\product\10.2.0\oradata\orcl\sysaux01.dbf C:\oracle\product\10.2.0\oradata\orcl\system01.dbf C:\oracle\product\10.2.0\oradata\orcl\temp01.dbf C:\oracle\product\10.2.0\oradata\orcl\undotbs01.dbf C:
21、\oracle\product\10.2.0\oradata\orcl\users01.dbf 5.3.3 重做日志文件 重做日志文件是当用户对数据进行修改时ORACLE实际上是先在内存中进行修改过段时间后再集中将内存中修改结果写入到上面数据文件中。重做日志文件就是随时保留这些修改结果为了丢失时候恢复。ORACLE是以循环方法使用重做日志文件所以每个数据库最少需要2个重做日志文件当第一个写满后就会写入第二个,第二个满后又会开始写第一个,以这类推。此时还能够启用自动归档功效将被覆盖重做日志文件类推。此时还能够启用自动归档功效将被覆盖重做日志文件内容存放到另外归档文件中,安装完ORACLE后自动创建3个重做日志文件: C:\oracle\product\10.2.0\oradata\orcl\redo01.log C:\oracle\product\10.2.0\oradata\orcl\redo02.log C:\oracle\product\10.2.0\oradata\orcl\redo03.log






