6 实例与服务器模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Instance SGA
Database Buffer Cache DBWR

功能:
数据库写入进程负责把数据高速 缓冲区中已经被修改过的数据
(“脏”缓存块)成批写入数
据文件中永久保存,同时使数 据高速缓冲区有更多的空闲缓
存块,保证服务器进程将所需
Data files Control files Redo log files
文件写的次数,适合长时间运行的、产生大量
重做记录的事务。
(3)共享池

功能
共享池用于缓存最近执行过的SQL语句、PL/SQL程序和数据字典信 息,是对SQL语句、PL/SQL程序进行语法分析、编译、执行的区域。

组成
库缓存
• 库缓存用于缓存已经解释并执行过的SQL语句和PL/SQL程序代码,以 提高SQL或PL/SQL程序的执行效率。 • 包括SQL工作区和PL/SQL工作区

进程的概念
进程是操作系统中一个独立的可以调度的活动,用于完成指定的 任务。进程与程序的区别在于: 进程是动态的概念,即动态创建,完成任务后立即消亡;而程序 是一个静态实体。 进程强调执行过程,而程序仅仅是指令的有序集合。

进程的类型
用户进程 服务器进程 后台进程
Oracle进程概述
设置参数SGA_TARGET
• 通过ALTER SYSTEM语句设置参数SGA_TARGET的值,该值可以是(1)中计算出来的结果, 也可以是当前SGA大小与SGA_MAX_SIZE之间的某个值
如果要取消自动管理,只需将参数SGA_TARGET设置为0即可。
3、PGA

功能
PGA 是为每一个与Oracle数据库连接的用户保留的内存区,主要存储该连
实例的运行:在启动数据库时,Oracle首先在内存中获取一定的空
间,启动各种用途的后台进程,即创建一个数据库实例,然后由
实例装载数据文件和重做日志文件,最后打开数据库。 用户操作数据库的过程实质上是与数据库实例建立连接,然后通
过实例来连接、操作数据库的过程。
实例概述

数据库与实例的关系
单实例数据库系统 多实例数据库系统

数据高速缓冲区大小
数据高速缓冲区越大,用户需要的数据在内存中的可能性就
越大,即缓存命中率越高,从而减少了Oracle访问硬盘数据的 次数,提高了数据库系统执行的效率 如果数据高速缓冲区的值太大,Oracle就不得不在内存中寻找 更多的块来定位所需要的数据,反而降低了系统性能。显然
需要确定一个合理的数据高速缓冲区大小。

Java池大小
JAVA_POOL_SIZE 通常不小于20M,以便安装Java虚拟机
(6)流池

功能
流池是一个可选的内存配置项,用于对流的支
持。

流池大小
STREAMS_POOL_SIZE
2、SGA的管理

SGA组件大小查询
SQL>SHOW PARAMETERS DB_CACHE_SIZE SQL>SHOW PARAMETERS LOG_BUFFER SQL>SHOW PARAMETERS SHARED_POOL_SIZE
数据字典缓存区
• 数据字典缓存区保存最常用的数据字典信息
共享池

共享池大小
SHARED_POOL_SIZE 合适的共享池大小,可使编译过的程序代码长驻 内存,大大降低重复执行相同的SQL语句、 PL/SQL程序的系统开销,从而提高数据库的性能。
(4)大型池

功能
大型池是一个可选的内存配置项,主要为Oracle多线程服务器、服 务器I/O进程、数据库备份与恢复操作、执行具有大量排序操作的
实例与服务器模式
实例与模式

Oracle实例概述
Oracle内存结构


Oracle后台进程
服务器工作模式 数据字典
实例概述

Oracle实例的概念
Oracle数据库组成
• 存储在磁盘中的物理数据库 • 对物理数据库进行管理的数据库管理系统,又称为实例,由一系列内 存结构和后台进程组成。
实例概述

实例组成
内存结构:系统全局区(SGA)和程序全局区(PGA) 后台进程组成
实例概述

客户应用程序 处理数据的内存结构
服务器进程

后台进程
数据库
实例概述
实例
用户进程 共享池 库缓冲区 服务器进程 数据字典 缓冲区 PMBiblioteka BaiduN SMON DBWR LGWR CKPT Others 数据库缓存
(1)数据高速缓冲区

功能
存储从数据文件中检索出来的数据拷贝。应用程序要 访问的数据必须从磁盘的数据文件读到数据缓冲区中 处理。 在数据缓冲区中被修改后的数据由数据写入进程写到
硬盘的数据文件中永久保存。
提高获取和更新数据的性能。
数据高速缓冲区

数据高速缓冲区的工作过程
数据高速缓冲区
User process
SGA
SGA
Session information
Shared SQL areas
Shared SQL areas
4、在OEM中管理数据库实例的内存结 构
实例与模式

Oracle实例概述
Oracle内存结构


Oracle后台进程
服务器工作模式 数据字典
1、Oracle进程概述
DB_CACHE_SIZE(标准块)
(2)重做日志缓冲区

功能
重做日志缓冲区用于缓存用户对数据库进行修改操作时生成的重 做记录。
为了提高工作效率,重做记录并不是直接写入重做日志文件中,
而是首先被服务器进程写入重做日志缓冲区中,在一定条件下, 再由日志写入进程(LGWR)把重做日志缓冲区的内容写入重做日
要的数据从数据文件读取到数 据高速缓冲区中,提高缓存命
Database
中率。
(2)LGWR(日志写入进程)

功能
日志写入进程负责把重做 日志缓冲区的数据写入重 做日志文件中永久保存。
Instance SGA
Redo Log Buffer
数据写入进程在工作之前, 需要了解日志写入进程是 否已经把相关的日志缓冲 区中记载的数据写入硬盘 中,如果相关的日志缓冲 区中的记录还没有被写入,
SQL>SHOW PARAMETERS LARGE_POOL_SIZE
SQL>SHOW PARAMETERS Java_POOL_SIZE SQL>SHOW PARAMETERS STRAMS_POOL_SIZE
SQL>SHOW PARAMETERS SGA_MAX_SIZE

SGA组件大小调整
DBWR LGWR
Data files
Control files
Redo log files
DBWR 会通知 LGWR 完成相 应的工作,然后DBWR才开
Database
始写入。
(3)CKPT(检查点进程)
Instance
SGA
Redo Log Buffer
检查点概念
检查点是一个事件,当该 事件发生时(每隔一段 时间发生),DBWR进 程把数据高速缓冲区中 脏缓存块写入数据文件 中,同时Oracle将对数 据库控制文件和数据文 件的头部的同步序号进 行更新,以记录下当前 的数据库结构和状态, 保证数据的同步。
• 由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控 制信息 • 用户对数据库的各种操作主要在SGA中进行 • 当多个用户同时连接同一个实例时,SGA数据可供多个用户共享,
SGA又称为共享全局区(Shared Global Area)
程序全局区(Program Global Area,PGA)
Oracle进程概述

后台进程
为了保证Oracle数据库在任意一个时刻可以处理多用户的并发请求,
进行复杂的数据操作,而且还要优化系统性能,Oracle数据库起用 了一些相互独立的附加进程,称为后台进程。服务器进程在执行 用户进程请求时,调用后台进程来实现对数据库的操作。

后台进程任务:
在内存与磁盘之间进行I/O操作 监视各个服务器进程状态 协调各个服务器进程的任务 维护系统性能和可靠性等
SQL语句、执行并行化的数据库操作等需要大量缓存的操作提供内
存空间。如果没有在SGA区中创建大型池,上述操作所需要的缓存 空间将在共享池或PGA中分配,因而影响共享池或PGA的使用效率。

大型池大小
LARGE_POOL_SIZE
(5)Java池

功能
Java池提供对Java程序设计的支持,用于存储Java代码、 Java语句的语法分析表、Java语句的执行方案和进行 Java程序开发。

设置SGA自动管理的方法
计算参数SGA_TARGET的大小
SELECT ((SELECT SUM(value) FROM V$SGA) (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) /1024/1024 ||'MB' "SGA_TARGET" FROM DUAL;
志文件中做永久性保存
在归档模式下,当重做日志切换时,由归档进程(ARCH)将重做 日志文件的内容写入归档文件中
重做日志缓冲区

The work process of redo log buffer
重做日志缓冲区

重做日志缓冲区的大小
LOG_BUFFER
较大的重做日志缓冲区,可以减少对重做日志
SGA
日志缓存
PGA
参数文件
数据文件
控制文件
重做日志 文件
归档日志 文件
口令文件 数据库
实例与模式

Oracle实例概述
Oracle内存结构


Oracle后台进程
服务器工作模式 数据字典
Oracle内存结构

Oracle内存可以分为两类
系统全局区(System Global Area,SGA)

用户进程:当用户连接数据库执行一个应用程序时,会创建一个用户 进程,来完成用户所指定的任务

服务器进程
由Oracle自身创建,用于处理连接到数据库实例的用户进程所提出的请求 分为专用服务器进程和共享服务器进程两种

服务器进程任务
解析并执行用户提交的SQL语句和PL/SQL程序 在SGA的数据高速缓冲区中搜索用户进程所要访问的数据,如果数据不在 缓冲区中,则需要从硬盘数据文件中读取所需的数据,再将它们复制到 缓冲区中 将用户改变数据库的操作信息写入日志缓冲区中 将查询或执行后的结果数据返回给用户进程
• PGA是在用户进程连接数据库时,由Oracle为用户分配的内存区域 • 保存当前用户私有的数据和控制信息,因此该区又称为私有全局区 (Private Global Area) • 每个服务器进程只能访问自己的PGA
1、SGA

SGA 结构:
数据高速缓冲区(Database Buffer Cache) 共享池(Shared Pool) 重做日志缓冲区(Redo Log Cache) 大型池(Large Pool) Java池(Java Pool) 流池(Streams Pool) 其他结构(如固定SGA、锁管理等)
2、Oracle后台进程

DBWR 数据库写入进程 LGWR 日志写入进程 CKPT 检查点进程
SMON 系统监控进程 PMON 进程监控进程 ARCH 归档进程 RECO 恢复进程 LCKn Dnnn Snnn 封锁进程 调度进程 共享服务器进程
(1)DBWR(数据库写入进程)
PGA
PGA Server process Dedicated server
Stack information space sort area, cursor
information Session
Shared server
Stack sort area, cursor information space
接使用的变量信息和与用户进程交换的信息。是非共享的,只有服务进 程本身才能访问它自己的PGA区

组成
排序区:主要用于存放排序操作所产生的临时数据,其大小由初始化参 数SORT_AREA_SIZE定义
会话区:用于保存用户会话所具有的权限、角色、性能统计信息
游标区:用于存放执行游标操作时所产生的数据 堆栈区:用于保存会话过程中的绑定变量、会话变量等信息。
除了SGA_MAX_SIZE不能修改外,其他几个参数可以使用ALTER SYSTEM语 句进行动态调整。 SQL>ALTER SYSTEM SET DB_CACHE_SIZE=40M
SGA的管理

SGA自动管理
在Oracle 10g中,通过设置初始化参数SGA_TARGET,可以实现对SGA中的自动管理
相关文档
最新文档