Oracle体系结构详解
《ORACLE体系结构》PPT课件

– 将表空间设置为脱机或 只读
– 删除或截断表
– 备份表空间
整理ppt
24
LOG Writer(LGWR)
LGWR在以下情况将缓 冲区中的数据写入磁盘:
– 事务提交 – 三分之一的redo日志缓
冲区已满
– Redo日志缓冲区中的内 容超过1M
– 每三秒钟 – 在DBWn写磁盘之前
整理ppt
25
System Monitor(SMON)
Redo Log Buffer Cache缓存对于数据块 的所有修改。
– 主要用于恢复 – 其中的每一项修改记录都被称为redo 条目。 – 利用Redo条目的信息可以重做修改。
整理ppt
15
Large Pool
Large Pool是SGA中一个可选的内存区域, 它只用于shared server环境。
information
SGA
Shared Server
Stack space
sort area, cursor information
SGA Session information
Shared SQL整A理repapt
Shared SQL Area
18
Program Global Area(PGA)
– ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
整理ppt
11
Library Cache
Libray Cache缓存最近被执行的SQL和 PL/SQL的相关信息。
– 实现常用语句的共享 – 使用LRU算法进行管理 – 由以下两个结构构成:
• Shared SQL area • Shared PL/SQL area
Oracle数据库体系结构

Oracle数据库体系结构⼀、oracle数据库体系结构基本组成:Oracle server:⼀般情况下是⼀个instance和⼀个database组成⼀般:1个instance只能对应⼀个数据库。
特殊:1个数据库可以有多个instance(RAC)⼀台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应⼀个instance,也可以理解成每个数据库只有⼀个SID 。
利⽤DBCA建出的每个库都是相对独⽴的,在同⼀服务器上如果创建多库必须将环境变量的参数⽂件做区分,并且在对实例切换时需如下操作:connect ⽤户名/密码@实例的服务名1.1 oracle服务器和实例1.1.1实例由内存区和后台进程组成①内存区:数据库⾼速缓存、重做⽇志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)③注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执⾏库数据的输⼊、输出以及监控其它Oracle进程。
在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT),否则实例⽆法创建。
1.1.2服务器Oracle服务器由数据库实例和数据⽂件组成,也就是我们常说的数据库管理系统。
数据库服务器除了维护实例和数据库⽂件之外,还在⽤户建⽴与服务器的连接时启动服务器进程并分配PGA1.2 oracle数据库逻辑结构表空间:据库的基本逻辑结构,是⼀系列数据⽂件的集合;段:不同类型数据在数据库中占⽤的空间,有许多区组合⽽成;区:由连续的块组成,⽬的是为数据⼀次性预留⼀个较⼤的空间,oracle为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。
(参考资料)oracle 体系结构详解

oracle 体系结构详解一、体系结构图oracle实例=SGA区+后台进程oracle服务器=oracle实例+oracle数据库数据库实例启动实质上即为:分配SGA区,启动后台进程Oracle 实例1、是访问Oracle 数据库的一种方式2、通常只开一个且仅开一个数据库3、由内存结构和进程结构组成,即SGA区+后台进程连接Oracle实例:包括建立用户连接和创建会话Oracle数据库是作为整体的数据集,由三类文件组成:Data files, Control files, Redo log files二、物理结构主要由三类文件组成:data files ,control files,redo-log files1.data files:数据文件,存放基本表信息(即表中数据等)、索引信息(系统内建有索引表)、回退信息(主要为数据的rollback)、临时信息(如有orderby 等操作时系统有临时信息)、系统引导信息(如数据字典等)2、control files:控制文件(二进制的)。
存放库物理结构、库名、库创建日期、序列号(存有同步信息);控制文件至少有两个一摸一样的,用做备份用参数Controlfiles=/../../文件名1,/../../文件名2;指定3、redo log files:回退日志文件,存放修改前后的信息,主要用于数据的恢复,一个数据库至少有两个redo log files文件,以便可以循环记录信息注:三类文件都有序列号,必须同步才能使用,且已Control files中的序列号为准,其他的必须与其保持一致除了上面三类文件还有:Parameter file(参数文件),Password file(口令文件),Archived log files(归档文件)等参数文件:有二进制、文本两种,用于设定参数的值。
二进制参数文件可以及时更改,即时生效;文本参数文件需重启口令文件:可用orapwd.exe 建口令文件。
第4章ORACLE服务器体系结构和组成

PFILE子句是必需的,SPFILE子句可以省略, 那么SPFILE存贮在缺省位置 <ORACLE_HOME>\DATABASE\下。
ORACLE的体系构造 物理构 造
• 查看效劳器端参数文件
• 在SQL PLUS中使用SHOW PARAMETERS命令
• 修改效劳器端参数文件
• 在9i中直接手工修改本地参数化文件是没 用的,不会改变数据库的设置。
• 利用ALTER SYSTEM SET parameter = value语句可以在数据库运行时修改初始化参 数的值。
• 在SET子句中可以使用SCOPE选项来设 置影响范围,所谓影响范围就是ALTER SYSTEM语句对参数的修改是仅对当前实例 有效〔记录在内存中〕,还是永久有效〔记 录在SPFILE中〕。
日志缓冲存储区〔Log Buffer〕 日志缓冲区
以记录项的形式备份数据库缓
冲区中被修改的缓冲块,这些
记录将被写到日志文件中。
LOG_BUFFER
日志文件
确定日志缓冲区的大小。
ORACLE的体系构造 图示
PMON LCKn RECO SMON
共享池
SGA
数据缓冲区 日志缓冲区
体系构造
Server UUUssseeerrr
当一个日志文件组被填满时
关闭数据库时
ORACLE的体系构造 物理构 造
日志文件写操作图示
Log File 2
ORACLE的体系构造 物理构 造
镜像日志文件是为防止日志文件的丧失,在 不同磁盘上同时维护两个或多个联机日志文件 的副本。 其特点如下: 每个日志文件组至少包含两个日志文件成员。 每组的成员数目一样。 同组的所有成员同时被修改。 同组的成员大小一样,不同组的成员大小可 不同。
Oracle数据库体系结构

Oracle数据库体系结构一.Oracle数据库体系结构1.实例:一组用于管理数据库文件的内存结构,实例对应着数据库;RAC/CDB CDB:CDB为数据库容器,PDB插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC),即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。
当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
RAC:允许多个Oracle数据库实例在多台服务器上共享同一个数据库存储空间,并通过集群来保证高可用性和容错性。
简单来说,RAC就是将多个数据库实例连接起来,形成一个“集群”。
2.ShardingSphere:中间件,不同的数据库对应不同的实例,中间有一个中间件,使用者连接中间件;数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表。
常见的中间件有MyCat,Mysql-Proxy,DRDS,Atlas,Zebra二.Orcal数据库体系结构:Orcal服务器=数据库+实例1.实例是暂时的,它只不过是一组逻辑划分的内存结构和进程结构,它会随着数据的关闭而消失数据库它就是一堆物理文件(控制文件、数据文件、日志文件等等)它呢是永久存在的数据库和实例是一对一的,这种结构我们一般称为单实例体系结构;既然有一对一,那就会有一对多,在复杂的分布式结构中,一个数据库可以对多个实例,多个实例之间可以通过网络来进行数据的一个交互或着交换2.PGA:程序全局区,为单独的服务器进程存储私有数据的内存区域(SAG属于公共资源,PAG是私有的)3.SGA:系统全局区,所有用户都可以访问的共享内存区域启动Oracle数据库时,系统先在内存内规划一个固定区域,用来储存用户需要的数据,以及Oracle运行时必备的系统信息4.后台进程结构,此处只罗列必须启动的5个后台进程系统监控器SMON:负载检查数据库一致性,有必要会在数据库打开时启动数据库恢复进程监视器PMON:负责一个Orcal数据库进程失败时清理资源,会定期唤醒或者被其他主动事务主动唤醒数据库写进程DBWR:负责将更改的数据从“数据库高速缓冲区”写入“数据文件”日志写进程LGWR:负载把日志数据写到练级日志文件检查点进程SKPT:负责检查点操作,主要检查数据库状态一致性和记录系统变更时间5.三个文件1)控制文件:存储数据库结构,一个控制文件只属于一个数据库,包含数据文件日志文件信息及相关状态归档信息,2)数据文件:存储数据,xxx.dbf文件存储着系统数据,数据字典数据,索引数据及用户存储的数据3)日志文件:存储与事务有关的重做日志三.逻辑存储结构1.块是Oracle用来管理存储的最小单元,也是最小的逻辑存储结构2.区是Oracle数据库分配空间的最小单位3.段由多个区组成,这些区可以是连续的,也可以是不连续的4.表空间是Oracle数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。
第2讲_Oracle的体系结构

Page 9
2.2.3 控制文件(.ctl)
控制文件(control files)是一个较小的二进制文件,在Oracle服务器在启 动期间用来标识物理文件和数据库物理结构。 创建数据库时,创建控制文件。数据库的启动和正常运行都离不开控制文 件。启动数据库时,Oracle从初始化参数文件中获得控制文件的名字及位 置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件的信 息,最后打开数据库。数据库运行时,Oracle会修改控制文件。 三个控制文件内容一样,镜像关系。
– 将执行结果返回用户
2.5.3 后台进程
为所有数据库用户异步完成各种任务
Page 21
服务器进程
后台进程
用户进程
Page 22
2.5.3.1 DBWR进程
数据库写进程。该进程执行将缓冲区写入数据文件,是负责缓冲存储区管 理的一个ORACLE后台进程。 当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是 将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
实例
用户进程 共享缓冲区 库缓冲区 服务器进程 PGA 数据字典
SGA
数据缓冲区 日志缓冲区 大池
Java池
PMON SMON DBWR LGWR CKPT Others
参数文件 口令文件
数据文件
控制文件
重做日 志文件
归档日志文件
数据库
Page 3
数据库和实例
数据库(Database)及实例(Instance) 数据库:物理操作系统文件或磁盘(disk)的集合。 实例:数据库启动时,系统首先在服务器内存中分配系统全局区 (SGA),构成了Oracle的内存结构,然后启动若干个常驻内存 的操作系统进程,即组成了Oracle的进程结构,内存区域和后台 进程合称为一个Oracle实例。
简述oracle体系结构

简述oracle体系结构
Oracle体系结构
Oracle是一种支持分布式数据库管理系统,其体系结构主要包
括E-R图,表和索引,存储过程和视图, SQL,PL/SQL程序和组件,等等。
1. E-R图
E-R图是一种关系数据库管理系统的基本模型,其中实体表示客观事物,关系表示实体之间的联系。
E-R图可以被用来描述实体和它们之间的关系,以及实体的属性和它们之间的关系。
2.表和索引
表是由一系列列组成的逻辑结构,它们包含每行和每列的数据。
索引是一种特别的表,可以被用来提高表的搜索速度和性能。
3.存储过程和视图
存储过程是一种特定类型的程序,它们可以被用来完成某些操作,比如查询和更新。
视图是一种准备好的查询,它们可以被用来返回数据库中的数据。
4.SQL,PL/SQL程序和组件
SQL(Structured Query Language)是一种用于在数据库中执行查询和更新操作的语言,是一种面向关系型数据库的核心语言。
PL/SQL是一种可以嵌入SQL语句的程序设计语言,用来定义复杂的
查询,更新和实现回调函数。
组件是一种模块化的程序,用来构建更复杂的系统。
Oracle体系结构简要介绍

Oracle体系结构简要介绍1.o racle数据库软件介绍oracle数据库包括:oracle数据库和oracle实例两个东西。
Oracle实例指的是:oracle 启动后占用的内存和后台进程的总称;oracle数据库是实例和数据文件的总称。
数据库关闭后数据库实例就不存在了,数据库文件一直存在。
Oracle是由oracle软件和oracle数据库组成,oracle数据库主要指的是三类文件,分别是控制文件(*.ctl)、日志文件(*.log)、数据文件(*.dbf)。
2.o racle中内存结构介绍oracle数据库启动起来后有两大内存结构,一是SGA(系统全局区),二是PGA,其中SGA 是用来共享的,PGA是用来给进程使用的。
2.1SGA介绍Sga是就是oracle系统的全局区,在linux和nuix中用ipcs -m命令来查看占用的共享内存。
Sga包括:共享池(shared pool)、stream池(stream pool)、大型池(large pool)、java 池、数据库缓冲区高速缓存(buffer cache)、重做日志缓冲区(log buffer)。
其中主要的缓冲区包括:共享池(shared_pool)、数据库高速缓存区(db_cache)、重做日志缓冲区(log_buffer),最容易出问题的也是这三个。
在plsql中可以通过show parameters sga 或者show sga 来查看sga的参数配置。
2.1.1共享池(shard pool)共享池(shard pool)主要用来缓存SQL语句以及所对应的SQL执行计划。
参数是shared_pool_size。
SQL语句的执行计划存放在shard pool中,下次去执行的时候先到shard pool中去找,这样大大减少资源的消耗。
SQL语句的解析以及执行计划的缓存、shard pool的访问,都是有server process 来做的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。
如图:一、基本组成:Oracle server:一般情况下是一个instance和一个database组成1个instance只能对应一个数据库。
特殊:1个数据库可以有多个instance(rac)一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID 。
利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作:connect 用户名/密码@实例的服务名Oracle Instance:是由内存(SGA)和后台进程(backupground Process)组成通过instance来访问database一个实例只能打开一个数据库Oracle database:数据文件(Data files):数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等重做日志(Redo log):“先记后写”重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。
控制文件(Control file)控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
归档日志(Archive log):是非活动(Inactive)重做日志的备份。
口令文件(Password file):用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)参数文件(Parameter file):用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)(二进制文件放入裸设备,引入spfile)User and Server process :在执行sql语句时产生的进程,每一个连接,oracle server创建一个session,产生一个server process,在client发起一个connection时就产生了一个user process。
体系结构可以分为,database结构和instance结构如下结构:二、instance结构详解1、内存结构主要包括sga(system global area)和pga(program global area)Pga是当程序起来时,给server process用(排序,数据挖掘等order by)SGA(System Global Area)由一组内存结构组成,它是由所有用户进程共享的一块内存区域。
启动例程时,Oracle自动分配SGA,关闭例程时,oracle自动释放SGA所占用的内存空间。
Sga包括,share pool,db buffer cache,redo log buffer,large pool,java pool。
在9i 中我们都知道在管理Oracle中使用动态SGA时,Granule(是连续虚拟内存分配的单位)的大小是和SGA的大小有关系。
SGA 分配的最小单元为一个granule.Oracle SGA的大小总是granule的整数倍,即分配是以整数个granule来分配的。
9i 中的规则如下:linux/unixSGA <=128 M granule 4MSGA >128M granule 16MWindowsSGA <=128 M granule 4MSGA >128M granule 8M10g 中的分配规则为linux/unixSGA <=1G granule 4MSGA >1G granule 16MWindowsSGA <=1G granule 4MSGA >1G granule 8MSQL> select component, granule_size from v$sga_dynamic_components; COMPONENT GRANULE_SIZE---------------------------------------------------------------- ------------shared pool 4194304large pool 4194304java pool 4194304streams pool 4194304DEFAULT buffer cache 4194304KEEP buffer cache 4194304RECYCLE buffer cache 4194304DEFAULT 2K buffer cache 4194304DEFAULT 4K buffer cache 4194304DEFAULT 8K buffer cache 4194304DEFAULT 16K buffer cache 4194304DEFAULT 32K buffer cache 4194304ASM Buffer Cache 419430413 rows selected.Elapsed: 00:00:00.06SQL>SQL> desc v$sga_dynamic_components;Name Type--------------------------------------------------------COMPONENT VARCHAR2(64)CURRENT_SIZE NUMBERMIN_SIZE NUMBERMAX_SIZE NUMBERUSER_SPECIFIED_SIZE NUMBEROPER_COUNT NUMBERLAST_OPER_TYPE VARCHAR2(13)LAST_OPER_MODE VARCHAR2(9)LAST_OPER_TIME DATEGRANULE_SIZE NUMBERSQL>SQL> select * from v$sga_dynamic_components;COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE USER_SPECIFIED_SIZE OPER_COUNT LAST_OPER_TYP LAST_OPER LAST_OPER GRANULE_SIZE-------------------- ------------ ---------- ---------- ------------------- ---------- ------------- --------- --------- ------------shared pool 92274688 92274688 0 0 0STATIC 4194304large pool 4194304 4194304 0 0 0STATIC 4194304java pool 4194304 4194304 0 0 0STATIC 4194304streams pool 0 0 0 0 0STATIC 4194304DEFAULT buffer cache 62914560 62914560 0 0 0 INITIALIZING 4194304KEEP buffer cache 0 0 0 0 0STATIC 4194304RECYCLE buffer cache 0 0 0 0 0STATIC 4194304DEFAULT 2K buffer ca 0 0 0 0 0STATIC 4194304DEFAULT 4K buffer ca 0 0 0 0 0STATIC 4194304DEFAULT 8K buffer ca 0 0 0 0 0STATIC 4194304DEFAULT 16K buffer c 0 0 0 0 0STATIC 4194304DEFAULT 32K buffer c 0 0 0 0 0STATIC 4194304ASM Buffer Cache 0 0 0 0 0STATIC 419430413 rows selected.Buffer Cache Size数据缓存,调高数据命中率可以提高性能。
按数据块存放。
db_cache_sizedb_keep_cache_sizedb_recycle_cache_sizealter system set db_cache_size = xxx MSQL> show parameter adviceNAME_COL_PLUS_SHOW_PARAM TYPE VALUE_COL_PLUS_SHOW_PARA M--------------------------------------------------------------------------------db_cache_advice string ONSQL>SQL> select * from v$db_cache_advice;SQL>Large Pool Size rman 和一些并行处理时候会用到。
Java Pool Size java存储过程的支持Streams Pool SizeOracle 10g 中sga_target自动调整只是针对这四项:data buffer cache, large_pool, shared_pool, java_pool1)03:41:30 SQL> show sga2)3)Total System Global Area 285212672 bytes4)Fixed Size 1218992 bytes5)Variable Size 71304784 bytes6)Database Buffers 209715200 bytes7)Redo Buffers 2973696 bytes8)04:45:40 SQL>9)04:46:18 SQL> select name,bytes/(1024*1024) ,resizeable from v$sgainfo;10)11)NAME BYTES/(1024*1024) RES12)-------------------------------- ----------------- ---13)Fixed SGA Size 1.16252136 No14)Redo Buffers 2.8359375 No15)Buffer Cache Size 200 Yes16)Shared Pool Size 60 Yes17)Large Pool Size 4 Yes18)Java Pool Size 4 Yes19)Streams Pool Size 0 Yes20)Granule Size 4 No ;区组大小为4M21)Maximum SGA Size 272 No22)Startup overhead in Shared Pool 36 No23)Free SGA Memory Available 024)04:49:34 SQL> select sum(bytes)/(1024*1024) size_in_mb from v$sgastat;25)26)SIZE_IN_MB27)----------28)276.00307129)30)04:48:19 SQL> select * from v$sgastat;31)32)POOL NAME BYTES33)------------ -------------------------- ----------34)shared pool KKJ WRK LAT 30035)shared pool kfkhsh_kfdsg 205236)shared pool event statistics ptr arra 68037)shared pool KGKP randnum 4000038)large pool PX msg pool 20620839)large pool free memory 398809640)java pool free memory 419430441)42)602 rows selected.43)04:50:37 SQL> show parameter sga;44)45)NAME TYPE VALUE46)------------------------------------ ----------- ------------------------------47)lock_sga boolean FALSE48)pre_page_sga boolean FALSE49)sga_max_size big integer 272M50)sga_target big integer 272MSGA动态尺寸总计不能超过初始化参数SGA_MAX_SIZE的值。