oracle基本组件概览.docx

上传人:b****5 文档编号:7852450 上传时间:2023-01-26 格式:DOCX 页数:15 大小:25.87KB
下载 相关 举报
oracle基本组件概览.docx_第1页
第1页 / 共15页
oracle基本组件概览.docx_第2页
第2页 / 共15页
oracle基本组件概览.docx_第3页
第3页 / 共15页
oracle基本组件概览.docx_第4页
第4页 / 共15页
oracle基本组件概览.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

oracle基本组件概览.docx

《oracle基本组件概览.docx》由会员分享,可在线阅读,更多相关《oracle基本组件概览.docx(15页珍藏版)》请在冰豆网上搜索。

oracle基本组件概览.docx

oracle基本组件概览

基本组件概览

Oracle体系结构包括很多基本组件,将详细介绍这些组件。

Oracle服务器:

Oracle服务器中包含多种文件结构、进程结构和内存结构;但是,处理SQL语句时,并非所有这些结构都会用到。

某些结构用于提高数据库的性能,确保该数据库在遇到软件或硬件错误时可以恢复,或者执行维护该数据库所需的其它任务。

Oracle服务器包括一个Oracle例程和一个Oracle数据库。

数据库服务器是信息管理的关键。

一般来说,服务器必须可靠地管理多用户环境中的大量数据,以便多个用户能够同时访问同一数据。

所有这一切都必须在保证高性能的同时进行。

数据库服务器还必须防止XX的访问,并为故障恢复提供有效的解决方案。

Oracle例程:

Oracle例程是后台进程和内存结构的组合。

只有启动例程后,才能访问数据库中的数据。

每次启动例程时,会分配系统全局区(SGA)并启动Oracle后台进程。

后台进程代表调用进程执行各种功能。

它们把为每个用户运行的多个Oracle程序所处理的功能统一起来。

后台进程执行输入/输出(I/O),并监视其它Oracle进程来提高并行性,从而使性能和可靠性更加优越。

Oracle例程由系统全局区(SGA)内存结构和用于管理数据库的后台进程组成。

例程是通过使用特定于每个操作系统的方法来标识的。

例程一次只能打开和使用一个数据库。

建立连接和创建会话用户只有在连接到例程后,才能向Oracle数据库提交SQL语句。

用户启动SQL*Plus之类的工具,或者运行使用OracleForms之类的工具开发的应用程序。

该应用程序或工具将作为用户进程来执行。

在最基本的配置中,用户登录到Oracle服务器时,运行Oracle服务器的计算机上就会创建一个进程。

这个进程称为服务器进程。

服务器进程代表客户机上运行的用户进程与Oracle例程进行通信。

服务器进程代表用户执行SQL语句。

连接:

连接是用户进程和Oracle服务器之间的通信路径。

数据库用户可以采用以下三种方式之一连接到Oracle服务器:

用户登录到运行Oracle例程的操作系统上,然后启动访问该系统中的数据库的应用程序或工具。

通信路径是使用主机操作系统上的进程间通信机制建立的。

用户在本地计算机上启动应用程序或工具,然后通过网络连接到运行Oracle例程的计算机。

在这个称为客户机/服务器的配置中,用户和Oracle服务器使用网络软件进行通信。

在三层连接中,用户计算机通过网络与应用程序服务器或网络服务器进行通信,这些服务器又通过网络与运行Oracle例程的计算机连接。

例如,用户在网络中的一台计算机上运行浏览器来使用位于NT服务器上的应用程序,该NT服务器又从UNIX主机上运行的Oracle数据库中检索数据。

会话:

会话是用户与Oracle服务器的一种特定连接。

会话在Oracle服务器验证用户后启动,当用户退出或出现异常终止时会话结束。

对某个具体的数据库用户来说,如果该用户从很多工具、应用程序或者终端同时登录,则可能有很多并发会话。

除了一些专用的数据库管理工具以外,启动数据库会话还要求Oracle服务器可供使用。

注:

在此处所讲的连接类型中,用户进程和服务器进程之间存在一对一的通信关系,这称作专用服务器连接。

使用共享服务器(SharedServer)配置时,多个用户进程可以共享服务器进程。

Oracle数据库:

Oracle数据库包含操作系统文件(也称为数据库文件),这些文件为数据库信息提供了实际的物理存储。

数据库文件用于确保数据一致性并能在例程失败时得以恢复。

数据库的一般用途是存储和检索相关信息。

Oracle数据库具有逻辑结构和物理结构。

数据库的物理结构是数据库中操作系统文件的集合。

Oracle数据库包含以下三类文件:

数据文件,包含数据库中的实际数据

重做日志文件,包含数据库的更改记录,可以在出现故障时恢复数据

控制文件,包含维护和验证数据库完整性所需的信息

其它关键文件:

非数据库文件用于配置例程、验证特权用户以及在磁盘出现故障时恢复数据库。

Oracle服务器还使用一些其它文件,这些文件并不是数据库的一部分:

参数文件,用来定义Oracle例程的特性。

例如,它包含调整SGA中一些内存结构大小的参数。

口令文件验证哪些用户有权启动和关闭Oracle例程。

归档的重做日志文件是重做日志文件的脱机副本,当必须从介质失败中进行恢复时可能会需要这些副本。

用户进程和服务器进程:

执行SQL语句时,用户进程和服务器进程是其中涉及的主要进程;但是,其它进程也会有助于服务器完成SQL语句的处理。

其它进程:

还有很多供其它选件使用的其它进程,例如,高级排队(AdvancedQueuing)、实时应用集群(RealApplicationClusters)、共享服务器(SharedServer)和高级复制(AdvancedReplication)等。

物理结构

Oracle数据库的物理结构包括以下三种文件类型:

控制文件、数据文件和重做xx文件。

内存结构

Oracle的内存结构由两个内存区组成,分别是:

系统全局区(SGA):

在例程启动时分配,是Oracle例程的基本组件

程序全局区(PGA):

在服务器进程启动时分配

系统全局区(SGA)

SGA包括以下几种内存结构:

共享池数据库缓冲区高速缓存重做日志缓冲区其它结构(例如锁定和栓锁管理以及统计数据)

在SGA中还可配置其它两种内存结构:

大型共享xxJavaxx

SGA也称作共享全局区,用于存储数据库进程共享的数据库信息。

它包含有关Oracle服务器的数据和控制信息,在Oracle服务器所在计算机的虚拟内存中分配。

要查看SGA内存的分配情况,可以使用下面的语句:

SQL>SHOWSGA:

动态SGA:

从Oracle9i开始,动态SGA实施了一种体系结构,可以对SGA配置进行更改,而不必关闭例程。

这样,在不关闭例程的情况下,就可以更改数据库缓冲区高速缓存和共享池的大小。

因此,开始时可将数据库缓冲区高速缓存和共享池配置为一个较小的值,然后根据它们各自的工作量增减,但最大值不能超过由SGA_MAX_SIZE指定的值。

调整SGA的大小:

SGA的大小由几个初始化参数决定。

对SGA的大小影响最大的参数有:

DB_CACHE_SIZE:

标准块的高速缓存大小。

对于UNIX,缺省值是48MB,对于NT,缺省值是52MB

LOG_BUFFER:

为重做xx缓冲区分配的字节数

SHARED_POOL_SIZE:

专用于共享SQL和PL/SQL的内存区的大小(以字节为单位)。

缺省值是16MB。

如果是64位,则缺省值是64MB

LARGE_POOL_SIZE:

大型共享池的大小。

缺省值是零(如果未将init.ora参数PARALLEL_AUTOMATIC_TUNING设置为TRUE,则自动计算缺省值。

JAVA_POOL_SIZE:

Java池的大小。

缺省值是24MB

因此,SGA的大小不能超过SGA_MAX_SIZE-DB_CACHE_SIZE-LOG_BUFFER–SHARED_POOL_SIZE-LARGE_POOL_SIZE-JAVA_POOL_SIZE。

分配单位:

粒组是一个连续虚拟内存分配单位。

粒组的大小取决于估算的SGA的总大小,这个总大小是根据参数SGA_MAX_SIZE的值计算的。

如果估算的SGA的大小小于128MB,那么粒组大小是4MB

否则为16MB

组件(数据库缓冲区高速缓存和共享池)能够以粒组为单位进行增减。

对于拥有粒组的每个组件而言,分配给该组件的粒组数、对该组件执行但暂时挂起的任何操作(例如,通过ALTERSYSTEM分配粒组、通过ALTERSYSTEM释放粒组,相应的自身优化),以及以粒组为单位的目标大小都将由V$BUFFER_POOL视图来跟踪和显示。

启动例程时,Oracle服务器将分配粒组条目,每个粒组使用一个条目来支持SGA_MAX_SIZE字节的地址空间。

继续启动时,每个组件将根据需要获取足够的粒组。

SGA的最低配置是三个粒组(一个粒组用于固定的SGA(包括重做缓冲区);一个粒组用于数据库缓冲区高速缓存;另一个粒组用于共享池)。

共享xx

用于存储:

最近执行的SQL语句最近使用的数据定义

它包括以下两个与性能相关的关键内存结构:

库xx数据字典xx

其大小由SHARED_POOL_SIZE参数确定

共享池环境既包含固定结构,也包含可变结构。

固定结构的大小相对保持不变,而可变结构的大小会根据用户和程序的需求增减。

固定结构和可变结构的实际大小由一个初始化参数和Oracle内部算法来确定。

调整共享xx大小:

由于共享池用于可以全局共享的对象,如可重复使用的SQL执行计划、PL/SQL程序包、过程、函数和游标信息,所以必须对它的大小进行调整,以满足固定区和可变区的需要。

分配给共享池的内存由SHARED_POOL_SIZE初始化参数确定。

使用ALTERSYSTEMSET,便可以动态地重新调整它的大小。

经过性能分析后,就可以调整它的大小,但SGA的总大小不能超过SGA_MAX_SIZE。

库xx

库高速缓存的大小视所定义的共享池大小而定。

内存分配是在对语句进行语法分析或调用程序单元时进行。

如果共享池的大小太小,就会将语句连续重新载入库高速缓存,从而使性能受到影响。

库高速缓存由算法LRU来管理。

高速缓存填满时,将从库高速缓存中删除最近很少使用的执行路径和语法分析树,以便为新条目腾出空间。

如果某些SQL或PL/SQL语句未再次使用,它们最终会被删除。

库xx包括以下两个结构:

共享SQL:

共享SQL为针对数据库运行的SQL语句存储并共享执行计划和语法分析树。

下次运行同一SQL语句时,这个语句就能利用共享SQL提供的语法分析信息来加快其执行速度。

要确保SQL语句随时可以使用共享SQL区,文本、方案和绑定变量必须完全相同。

共享PL/SQL:

共享PL/SQL区存储并共享最近执行的PL/SQL语句。

经过语法分析和编译的程序单元和过程(函数、程序包和触发器)都存储在这个区中。

数据字典xx

数据字典高速缓存也称作字典高速缓存或行高速缓存。

将数据字典信息同时高速缓存到数据库缓冲区和共享池内存中,可以提高性能。

有关数据库(用户帐户数据、数据文件名、段名、区的位置、表的说明和用户权限)的信息都存储在数据字典表中。

当服务器需要用到这类信息时,将会读取数据字典表,返回的数据将存储在数据字典高速缓存中。

调整数据字典的大小:

数据字典的整体大小取决于共享池的大小,并由数据库进行内部管理。

如果数据字典高速缓存太小,那么数据库必须对数据字典表进行反复地查询,才能获得服务器所需要的信息。

这些查询称作递归调用,它在速度上要慢于对数据字典高速缓存所进行的直接查询,因为直接查询不使用SQL。

处理查询时,Oracle服务器进程在数据库缓冲区高速缓存中查找任何所需的块。

如果未在数据库缓冲区高速缓存中找到这个块,服务器进程就从数据文件读取这个块,并在数据库缓冲区高速缓存中放置一个副本。

由于对同一个块的后续请求可以在内存中找到这个块,因此这些请求可能不需要进行物理读取。

Oracle服务器使用LRU算法来释放近期未被访问的缓冲区,以便在数据库缓冲区高速缓存中为新块腾出空间。

数据库缓冲区xx

存储已从数据文件中检索到的数据块的副本

能够大幅提高获取和更新数据时的性能

通过LRU算法管理

主块的大小由DB_BLOCK_SIZE确定

处理查询时,Oracle服务器进程在数据库缓冲区高速缓存中查找任何所需的块。

如果未在数据库缓冲区高速缓存中找到这个块,服务器进程就从数据文件读取这个块,并在数据库缓冲区高速缓存中放置一个副本。

由于对同一个块的后续请求可以在内存中找到这个块,因此这些请求可能不需要进行物理读取。

Oracle服务器使用LRU算法来释放近期未被访问的缓冲区,以便在数据库缓冲区高速缓存中为新块腾出空间。

调整数据库缓冲区xx的大小:

数据库缓冲区高速缓存中每个缓冲区的大小等于一个Oracle块的大小,它由

DB_BLOCK_SIZE参数来指定。

数据库缓冲区高速缓存由独立的子高速缓存组成,子高速缓存用于缓冲区池和多个块大小。

参数DB_BLOCK_SIZE确定主块的大小,主块的大小用于SYSTEM表空间。

以下三个参数定义了数据库缓冲区高速缓存的大小:

DB_CACHE_SIZE:

只调整缺省缓冲区高速缓存的大小,这个参数始终存在且不能设置为零DB_KEEP_CACHE_SIZE:

调整保留缓冲区高速缓存的大小,用于保留内存中很可能会重新使用的块

DB_RECYCLE_CACHE_SIZE:

调整循环缓冲区高速缓存的大小,用于删除内存中重新使用的可能性很小的块

FF、ON和READY。

DB_CACHE_ADVICE参数值:

OFF:

ON:

如果参数处于OFF状态,在尝试将它设置为ON状态时会产生ORA-4031错误:

READY:

重做xx缓冲区

记录对数据库数据块所做的全部更改

主要用于恢复

其中记录的更改称作重做条目

重做条目包含用于重新构造或重做更改的信息

大小由LOG_BUFFER定义

重做日志缓冲区是一个循环缓冲区,它包含对数据文件块所做的各种更改。

此信息存储在重做条目中。

重做条目包含将数据恢复到使用INSERT、UPDAT

E、DELET

E、CREAT

E、ALTER、或DROP操作进行更改前的状态所需要的信息。

调整重做xx缓冲区的大小:

重做日志缓冲区的大小由初始化参数LOG_BUFFER定义。

大型共享xx

SGA中的可选内存区

分担了共享池的一部分工作

用于:

共享服务器的会话内存(UGA)I/O服务器进程备份和恢复操作或RMAN并行执行消息缓冲区

将PARALLEL_AUTOMATIC_TUNING设置为TRUE

不使用LRU列表

大小由LARGE_POOL_SIZE确定

通过从大型共享池为共享服务器、OracleXA或并行查询缓冲区分配会话内存,Oracle可将共享池主要用于高速缓存共享的SQL语句。

这样,便减轻了共享池中各区的工作负担。

共享池无需再提供内存以高速缓存SQL语法分析树,来支持共享服务器会话信息、I/O以及备份和恢复进程。

由于增减共享SQL高速缓存的开销降低,性能得以提高。

备份和恢复:

如果设置了BACKUP_DISK_IO=n和BACKUP_TAPE_IO_SLAVE=TRUE参数,则恢复管理器(RMAN)将使用大型共享池。

如果大型共享池已经配置,但不够大,则在大型共享池中分配内存就会失败。

RMAN将错误消息写入警报日志文件,而且不使用I/O操作进行备份或恢复操作。

并行执行:

如果将PARALLEL_AUTOMATIC_TUNING设置为TRUE,将使用大型共享池。

否则,将把这些缓冲区分配至共享池。

调整大型共享池的大小:

大型共享池的大小由LARGE_POOL_SIZE参数定义,单位是字节。

该参数不是动态参数。

大型共享池和LRU列表:

大型共享池并不包含LRU列表。

它与使用LRU列表的共享池中的保留空间不同。

Java池

存储Java命令的服务分析要求在安装并使用Java时是必需的大小由

JAVA_POOL_SIZE参数确定

Java池是一个可选设置,但如果安装并使用Java,则需要使用Java池。

Java池大小可以使用JAVA_POOL_SIZE参数设置,单位为字节。

在Oracle9i,Java池的缺省大小是24MB。

程序全局区(PGA)

程序全局区或进程全局区(PGA)是内存区,它包含有关单个服务器进程或单个后台进程的数据和控制信息。

PGA在创建进程时分配,并在终止进程时回收。

与由若干个进程共享的SGA相比,PGA是仅供一个进程使用的区。

PGA的内容:

PGA内存的内容会因不同情况而变化,这取决于例程是在专用服务器配置还是在共享服务器配置下运行。

一般来讲,PGA内存包括下列组件:

专用SQL区:

包含绑定信息和运行时内存结构之类的数据。

发出SQL语句的每个会话均拥有一个专用SQL区。

提交同一SQL语句的每个用户都拥有自己的使用单个共享SQL区的专用SQL区。

因此,许多专用SQL区都与同一个共享SQL区相关联。

一个游标的专用SQL区可以分成以下两个区:

永久区:

包含绑定信息,并且只在关闭游标时释放

运行时区:

在执行请求时的第一步创建。

对于INSERT、UPDATE和DELETE命令,该区在执行语句后释放,对于查询操作,该区只在提取所有行或取消查询后释放。

专用SQL区的位置取决于为会话建立的连接类型。

在专用服务器环境中,专用SQL区位于各自服务器进程的PGA中。

在共享服务器环境中,专用SQL区位于SGA中。

管理专用SQL区是用户进程的职责。

用户进程可以分配的专用SQL区的数目始终由初始化参数OPEN_CURSORS来限制。

该参数的缺省值是50。

会话内存:

包含为保留会话变量以及与该会话相关的其它信息而分配的内存。

对于共享服务器环境,该会话是共享的而不是专用的。

SQL工作区:

用于大量占用内存的操作,如排序、散列联接、位图合并和位图创建。

工作区的大小可进行控制和调整。

自Oracle9i起,工作区的大小可以进行自动的全局管理。

要实现这种功能,可将WORKAREA_SIZE_POLICY参数设置成缺省情况下的AUTO,同时设置

PGA_AGGREGATE_TARGET初始化参数。

DBA可以对PGA_AGGREGATE_TARGET参数进行设置,以指定该例程可以使用的PGA内存的目标聚集数目。

此参数只是一个指标,可以由DBA在例程一级动态修改。

设置值的单位可以是字节数、千字节数、兆字节数或吉字节数。

设置完这些参数后,工作区的大小即可自动调整,这些会话将忽略所有的*_AREA_SIZE参数。

专用服务器和共享服务器之间的内存分配差异:

PGA内存的内容会因不同情况而变化,这取决于例程是在专用服务器配置下还是在共享服务器配置下运行。

一般来讲,PGA内存包括下列组件:

进程结构

Oracle利用了以下几种进程的优势:

用户进程:

在数据库用户请求连接到Oracle服务器时启动

请求与Oracle服务器交互的程序

必须先建立连接

不与Oracle服务器直接交互

需要从数据库请求信息的数据库用户必须先建立与Oracle服务器的连接。

连接由SQL*Plus这类的数据库接口工具请求,并开始用户进程。

用户进程并不与Oracle服务器直接进行交互操作,而是通过用户程序接口(UPI)生成各种调用。

用户程序接口则可以创建会话并启动服务器进程。

服务器进程:

与Oracle例程相连接,在用户建立会话时启动

直接与Oracle服务器交互的程序

执行生成的调用并返回相关结果

可以是专用服务器或共享服务器

用户建立连接后,服务器进程便会启动,以处理用户进程的请求。

服务器进程可以是专用服务器进程或共享服务器进程。

在专用服务器环境中,服务器进程只处理一个用户进程的请求。

用户进程断开连接后,服务器进程就会终止。

在共享服务器环境中,服务器进程将处理多个用户进程的请求。

服务器进程可以通过Oracle程序接口(OPI)与Oracle服务器进行通信。

后台进程:

在Oracle例程启动时启动

维护并加强物理结构与内存结构之间的关系

必备的后台进程:

DBWnPMONCKPT

LGWRSMON

可选的后台进程:

ARCnLMDnRECO

CJQ0LMONSnnn

DnnnPnnn

LCKnQMNn

Oracle体系结构有五个必备的后台进程,本课将详细介绍这些进程。

除了必备的后台进程列表以外,Oracle体系结构中还有很多可选的后台进程。

如果选择使用这些可选的后台进程,它们便会启动。

除了ARCn后台进程之外,这些可选的进程不在本课所涉及的范围之内。

下面列出了一些可选的后台进程:

RECO:

恢复程序

QMNn:

高级排队

ARCn:

归档程序

LCKn:

RAC锁管理器–例程锁

LMON:

RACDLM监控程序–全局锁

LMDn:

RACDLM监控程序–远程锁

CJQ0:

协调程序作业队列后台进程

Dnnn:

调度程序

Snnn:

共享服务器

Pnnn:

并行查询从属

数据库写入程序(DBWn)

服务器进程在数据库缓冲区高速缓存中记录对还原块和数据块所做的更改。

DBWn将数据库缓冲区高速缓存中的灰数据缓冲区写入数据文件。

这可确保数据库缓冲区高速缓存中有足够数量的空闲缓冲区(即当服务器进程需要读取数据文件中的块时可以覆盖的缓冲区)可用。

由于服务器进程只在数据库缓冲区高速缓存中进行更改,因此提高了数据库的性能。

DBWn延迟写入数据文件,直到发生下列事件之一:

增量或正常检查点

灰数据缓冲区的数量达到阈值

进程扫描指定数量的块而无法找到任何空闲缓冲区时

出现超时

实时应用集群(RealApplicationClusters,RAC)环境中出现ping请求

使一般表空间或临时表空间处于脱机状态

使表空间处于只读模式

删除或截断表

执行ALTERTABLESPACE表空间名BEGINBACKUP操作

xx写入器(LGWR)

LGWR在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:

当提交事务时

当重做xx缓冲区的三分之一填满时

当重做日志缓冲区中记录了超过1MB的更改时

在DBWn将数据库缓冲区高速缓存中修改的块写入数据文件以前

每隔三秒

因为恢复操作需要重做,所以LGWR只在重做写入磁盘后确认提交操作。

LGWR还可以调用DBWn来写入数据文件。

系统监控程序(SMON)

如果Oracle例程失败,那么SGA中尚未写入磁盘的所有信息都会丢失。

例如,操作系统的失败导致例程失败。

例程丢失后,后台进程SMON在数据库重新打开时自动执行例程恢复。

恢复例程需要执行以下步骤:

1.前滚以恢复尚未记入数据文件但已经记入联机重做日志中的数据。

由于例程失败时SGA的丢失,所以尚未将这些数据写入磁盘。

在该进程中,SMON读取重做日志文件并将重做日志中记录的更改应用到数据块中。

由于提交的所有事务处理都已写入重做日志,因此该进程完全恢复了这些事务处理。

2.打开数据库以便用户可以登录。

未被未恢复事务处理锁定的任何数据都立即可用。

3.回退未提交的事务处理。

它们由SMON回退,或在访问锁定的数据时由单个服务器进程回退。

SMON也执行一些空间维护功能:

它联合或合并数据文件中空闲空间的邻近区域。

它回收临时段,将它们作为数据文件中的空闲空间返回。

过程监视器(PMON)

进程失败后,后台进程PMON通过下面的方法进行清理:

回退用户的当前事务处理

释放当前保留的所有表锁或行锁

释放用户当前保留的其它资源

重新启动已失效的调度程序

检查点(CKPT)

每隔三秒,CKPT进程就会向控制文件存储数据,以标识重做日志文件中恢复操作的起始位置,该操作称作检查点。

检查点的用途是确保

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1