Oracle数据库体系结构详解资料.docx
- 文档编号:16820623
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:17
- 大小:1.02MB
Oracle数据库体系结构详解资料.docx
《Oracle数据库体系结构详解资料.docx》由会员分享,可在线阅读,更多相关《Oracle数据库体系结构详解资料.docx(17页珍藏版)》请在冰点文库上搜索。
Oracle数据库体系结构详解资料
Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。
如图:
一、基本组成:
Oracleserver:
一般情况下是一个instance和一个database组成
1个instance只能对应一个数据库。
特殊:
1个数据库可以有多个instance(rac)
一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID。
利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作:
connect 用户名/密码@实例的服务名
OracleInstance:
是由内存(SGA)和后台进程(backupgroundProcess)组成
通过instance来访问database
一个实例只能打开一个数据库
Oracledatabase:
数据文件(Datafiles):
数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等
重做日志(Redolog):
“先记后写”
重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志
执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。
控制文件(Controlfile)
控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
归档日志(Archivelog):
是非活动(Inactive)重做日志的备份。
口令文件(Passwordfile):
用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)
参数文件(Parameterfile):
用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)
UserandServerprocess:
在执行sql语句时产生的进程,每一个连接,oracleserver创建一个session,产生一个serverprocess,在client发起一个connection时就产生了一个userprocess。
体系结构可以分为,database结构和instance结构
如下结构:
二、instance结构详解
1、 内存结构
主要包括sga(systemglobalarea)和pga(programglobalarea)
Pga是当程序起来时,给serverprocess用(不包含在instance里面,这里不做重点讨论)
SGA(SystemGlobalArea)由一组内存结构组成,它是由所有用户进程共享的一块内存区域。
启动例程时,Oracle自动分配SGA,关闭例程时,oracle自动释放SGA所占用的内存空间。
SGA动态尺寸总计不能超过初始化参数SGA_MAX_SIZE的值。
如果sga_target超过了sga_max_size的大小,在Instance重新启动后,sga_max_size会调整成和sga_target一样大小的值。
如果在初始化参数里这些内存池设置为非零,则系统启动后,这些值将作为该参数对应的最小值运行。
如果那个值在系统运行时不够,则Oracle将自动为其添加容量,以帮助其优化操作,直到内存使用达到SGA_TARGET所表明的上限。
sharepool:
共享池(SharePool)用于存放最近执行的SQL语句和数据字典信息。
共享池主要有库高速缓存(LibraryCache)和数据字典高速缓存(Dictionarycache)两部分组成
1)库高速缓存(LibraryCache)
库高速缓存用于存放最近执行的sql语句信息,包括sql语句文本,解析代码值及执行计划。
假设执行一条sql语句
-selectename,jobfromempwhereempno=7788;
如果最近(还没有被lru淘汰)执行过这条语句,他就会直接从cache里面读结果;如果没有执行过,就需要读数据文件,这个过程就比较复杂,效率差距很大。
这里还有两个概念:
物理i/o和逻辑i/o---------1:
1000
物理i/o:
从数据缓冲区找不到所需要的数据,就要从硬盘里面读取。
逻辑i/o:
从数据缓冲区能找到所需要的数据,
理论上讲一个数据库性能是否良好,这个逻辑i/o应该占95%以上
dave哥对命中率有详细的描述
2)、数据字典高速缓存区(Dictionarycache)
用于存放数据字典的信息,包括表、列定义以及权限信息)
库高速缓存和数据字典高速缓存大小是动态变化的,不是固定的。
SQL>alter system set share_pool_size=60m;
DBbuffer
数据高速缓存(DatabaseBuffercache)用于存放最近访问的数据块信息,它由许多小缓冲区(缓冲区大小=数据尺寸)组成
Db_cache_size 定义标准的高速缓存尺寸
Db_nk_cache_size 定义非标准的高速缓存尺寸
数据库高速缓存区:
Db_cache_sizeDefault 默认池,所有段都被默认高速缓存到默认池。
(采用LRU)
Db_keep_cache_size,确保某些数据块始终被保留到内存中
Db_recycle_cache_size,数据高速缓存区“回收池”
Redologbuffer
重做日志缓存区(Redologbuffer),用于记载实例的变化。
执行DDL或DML语句时,服务器进程首先将事物的变化记载到重做日志缓存区,然后才会修改数据高速缓存。
重做日志缓存区由很多重做记录(Redorecord)组成,并且每条重做记录记载了被修改数据块的位置以及变换后的数据
Largepool
PGA(ProgramGlobalArea)
用于存放服务器进程的数据和控制信息,独立于SGA的一块内存区域。
当用户连接到OracleServer时,Oracleserver会为每个服务器进程分配相应的PGA.
SGA是所有服务器进程都可共享那个的一块内存区域,而每个服务器进程都具有私有的PGA内存空间。
客户端在通过sql语句连接database时,必须通过实例Instance来连接和管理数据库。
Connection:
客户端进程和服务端进程建立通讯。
Session:
当用户经过Oracleserver认证后开始建立会话,直到用户退出登录,会话结束
2、进程结构
用户进程
server进程
当客户端运行应用程序时,会启动形影的应用进程,该进程称为用户进程;
当连接到OracleServer 时,Oracle在服务器端会为用户进程派生一个新的进程
后台进程
启动实例时,Oracle不仅会分配SGA,还会启动后台进程。
DBWN
DBWR,用于将数据高速缓存的脏缓冲区数据写入到数据文件中
默认情况下只有一个DBWR0进程,通过db_writer_process可以定义最多10个DBWR进程(DBWR0-DBWR9).
DBWR工作触发条件:
1、 系统发出检查点(CheckPoint)
如:
altersystemcheckpointlocal;这是手动操作。
2、 脏数据块达到阀值
3、服务器进程不能找到空闲的缓冲区
3、超时
4、racping
3、删除或截断表(表空间的相关操作只写表空间相关的内容)
4、表空间正常脱机(ALTER TABLE…OFFLINENORMAL)
5、开始表空间备份(ALTER TABLESAPCE...BEGIN BACKUP)
Lgwr
LGWR,用于将重做日志缓冲区所记载的全部内容写入到重做日志文件中。
Oracle 总是“先日志后修改”(先记载变化然后修改数据);
在DBWR工作之前,LGWR首先将事务变化写入到重做日志。
LGWR工作触发条件:
1、提交事务(commit)
2、每隔3秒钟
3、当重做日志信息超过1M
4、重做日志缓冲区超过1/3满
5、在DBWR进程将脏缓冲区写入到数据文件前
Smon
在例程失败的情况下,SMON做以下的恢复:
Instancerecovery
1、REDO,重新应用那些被记载的重做日志,但尚未记载的数据文件的数据。
因为所有被提交的事务已经记载到了重做日志,所以可以确保恢复事务数据。
(前滚)
2、打开数据库,在打开数据库时,既包含了被提交的数据,也包含了未被提交的数据(加锁)。
3、Undo,取消未提交的数据。
打开数据库之后,Oracle会自动使用Undo段回退未提交的数据。
(回滚)
整合空闲空间
临时段
Pmon
PMON,用于监视服务器进程的执行,并且在服务器进程失败时清除该服务器进程。
用户例程意外终止运行时,PMON可以轮询检测该服务进程,并执行以下操作:
1、回退用户的当前事务
2、释放服务器进程所占用的所有表锁和行锁
3、释放用户所占用的其他资源
Checkpoint
CKPT,用于发出检查点(CheckPoint),检查点会同步数据库的数据文件和控制文件、重做日志)。
当发出检查点时,后台进程CKPT将检查点时刻的SCN(SystemChangeNumber)写入到控制文件、和数据文件头部,同时会促使后台进程DBWR将所有的脏缓冲区写入到数据文件中。
当发出检查点是,不仅后台进程CKPT和DBWR要开始工作,LGWR也会将重做日志缓冲区写入到重做日志,从而确保数据文件、控制文件、重做日志的一致性。
CKPT工作触发条件:
1、日志切换(包括手动:
ALTERSYSTEMSWITCHLOGFILE,手动归档应该也可以)
2、关闭实例(shutdownabort除外)
3、手工检查点操作(alter system checkpoint)
4、热备
5、当运行ALTERTABLESPACE/DATAFILEREADONLY的时候
6、手动设置fast_start_mttr_target
检查点发生后,他会立马做出如下事件:
1、更新数据文件头部
2、更新控制文件
主要是scn,用于恢复,chpt发生的频率越高,恢复的时间越短,频率高了,数据库性能可能有影响;所以设置这个参数的时候要慎重。
Arcn
ARCH,用于将重做日志的事务变化复制到归档日志中(用于重做日志的备份)
三、 database结构
1、物理结构
Oracle物理结构主要由:
数据文件,日志文件,控制文件
当然还有一些其他的文件:
参数文件,口令文件,告紧日志文件,归档日志文件等
2、逻辑结构
1、表空间(tablespace),是数据库的逻辑组成部分。
2、段(Segment),用于存放特定的逻辑对象(表、簇、索引等)的所有数据,它由一个或多个区组成的。
如表段、索引段、临时段、undo段等
3、区(extent),是Oracle进行空间分配的逻辑单元,它由相邻的数据块组成。
4、Oracle块,数据块,是Oracle在数据文件上执行I/0的最小单位,其尺寸应该为OS块的整数倍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 体系结构 详解 资料