📄 1742.html
字号:
<TR>
<TD colSpan=3><A title=linux知识宝库
href="index.html" tppabs="http://www.linuxhero.com/docs/index.html"><IMG height=83
src="images/header_r1_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c1.gif" width=472 border=0
name=header_r1_c1></A></TD>
<TD colSpan=3>
<form action="http://www.linuxhero.com/docs/search.html" method=get>
<table
style="BORDER-RIGHT: #c4c4c4 1px solid; BORDER-TOP: #c4c4c4 1px solid; BORDER-LEFT: #c4c4c4 1px solid; BORDER-BOTTOM: #c4c4c4 1px solid"
cellspacing=0 cellpadding=3 width="95%" border=0 align="center">
<tbody>
<tr>
<td noWrap background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif">
<div align=center><font class=normalfont>搜索文章:
<input type=hidden value=result name=action2>
<input type=radio checked value=title name=type>标题
<input type=radio value=content name=type>内容
<input type=image src="images/button_go.gif" tppabs="http://www.linuxhero.com/docs/images/button_go.gif" border=0 name=image2>
</font></div>
</td>
</tr>
<tr>
<td noWrap>
<div align="center">
<input maxlength=100 size=30 name=keyword2>
</div>
</td>
</tr></tbody>
</table>
</form>
</TD>
<TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
<TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
<TR>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22
src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0
name=header_r2_c1></TD>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
<DIV align=right><FONT class=normalfont>当前位置:
<A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
<font color="#FF6699">>></font>
<A href="type28.html" tppabs="http://www.linuxhero.com/docs/type28.html">oracle</A> | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
</TD>
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>ORACLE实例的进程结构和内存结构</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:作者<br>来自:http://www.fanqiang.com<br>联系方式:无名<br><br>1. ORACLE实例的进程结构和内存结构 <br>
1) 进程结构 <br>
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使<br>
用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACL<br>
E进程的体系结构设计使性能最大。 <br>
ORACLE实例有两种类型:单进程实例和多进程实例。 <br>
单进程ORACLE(又称单用户ORACLE)是一种数据库系统,一个进程执行全部ORAC<br>
LE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代<br>
码和用户的数据库应用是单个进程执行。 <br>
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行O<br>
RACLE 。 <br>
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分<br>
,对于每一个连接的用户都有一个进程。 <br>
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用<br>
程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一<br>
个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于<br>
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,<br>
而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可<br>
降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一<br>
个分离服务器进程与ORACLE通信。它可执行下列任务: <br>
? 对应用所发出的SQL语句进行语法分析和执行。 <br>
? 从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(<br>
该块不在缓冲区时)。 <br>
? 将结果返回给应用程序处理。 <br>
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为<br>
后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORAC<br>
LE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为: <br>
DBWR 数据库写入程序 <br>
LGWR 日志写入程序 <br>
CKPT 检查点 <br>
SMON 系统监控 <br>
PMON 进程监控 <br>
ARCH 归档 <br>
RECO 恢复 <br>
LCKn 封锁 <br>
Dnnn 调度进程 <br>
Snnn 服务器 <br>
每个后台进程与ORACLE数据库的不同部分交互。 <br>
下面对后台进程的功能作简单介绍: <br>
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个OR<br>
ACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主<br>
要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储<br>
区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的<br>
缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用<br>
的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。 <br>
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中<br>
的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写<br>
入磁盘: <br>
? 当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度<br>
时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH<br>
的值的一半。 <br>
? 当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没<br>
有查到未用的缓冲区,它停止查找并通知DBWR进行写。 <br>
? 出现超时(每次3秒),DBWR 将通知本身。 <br>
? 当出现检查点时,LGWR将通知DBWR <br>
在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数<br>
DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DB<br>
WR从LUR表中查找另外一个弄脏缓冲区。 <br>
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目<br>
的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新<br>
的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BAT<br>
CH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。 <br>
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲<br>
区写入磁盘。 <br>
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘<br>
,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。 <br>
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志<br>
缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输<br>
出,LGWR输出: <br>
? 当用户进程提交一事务时写入一个提交记录。 <br>
? 每三秒将日志缓冲区输出。 <br>
? 当日志缓冲区的1/3已满时将日志缓冲区输出。 <br>
? 当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。 <br>
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或<br>
不可用,LGWR 可继续地写入该组的其它文件。 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -