模式的概念及进程的概念_第1页
模式的概念及进程的概念_第2页
模式的概念及进程的概念_第3页
模式的概念及进程的概念_第4页
模式的概念及进程的概念_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 模式的概念:模式是一系列逻辑数据结构或对象的集合。一个模式只能够被一个数据用户所拥有,并且模式的名称与这个用户的名称相同。从数据库理论的角度看,模式是数据库中存储的数据的一个逻辑表示或描述,是一系列数据结构和数据对象的集合(既可以是全局逻辑描述也可是局部逻辑描述)。调度进程:DDN它是位于用户进程和共享进程之间的关键进程,负责将请求队列中的用户进程分配给空闲的服务进程处理,并将处理后的结果返回给用户进程。在一个实例中可以同时运行同时多个调度进程,但是至少要为Oracle数据库所用的每种网络协议建立一个调度进程。在共享服务器操作模式下,由监听程序来接受用户端传来的用户进程请求,然后将用户进程

2、请求交给合适的调度进程处理。如果监听程序无法找到一个合适的调度进程,它将启动一个服务进程来为用户进程提供服务。这个专用服务进程并不属于实例,而是oracle网络结构中的一个进程。 服务进程:在共享服务器操作模式下,每个服务进程能够为任何一个用户进程提供服务,而不是固定地为一个用户进程提供服务。共享服务器进程的PGA区并不包括任何与用户相关的数据,因为这些数据所有的服务进程都将使用到。在共享服务进程的PGA区中,只包含与共享服务进程本身相关的私有SQL工作区部分,其他与会话相关的私有sql工作区部分都保存在SGA区中,这样所有的服务进程都可以访问任何一个会话的信息。 .共享服务器操作模式下处理用

3、户进程的过程:1。用户通过使用Oracle工具或执行应用程序在客户端创建一个用户进程,该用户进程将尝试连接到一个数据库实例。2。客户端计算机通过网络与数据库服务器建立连接。位于数据库中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户和口令,验证通过后将该用户进程分配给一个调度进程。3。当某个共享服务进程空闲时,它从请求队列中取出一条处理后的SQL语句。4。共享服务器进程对这条SQL语句进行解析和执行,最后得到它所请求的数据。5。共享服务进程对这条SQL语句进行解析和执行,最后得到它所请求的数据。6。调度程序定期地检查返回队列,如果他发现在返回队列中有自己送出请求的处理结果

4、,则将结果取出。7。调度程序将处理结果返回给用户进程。创建实例时启动的共享服务进程数量由初始化参数SHARED_SERVERS。在实例运行过程中,Oracle会根据请求队列长度自动调整共享服务器的数量。实例中能创建的共享服务进程数量不能超出由初始化参数MAX_SHARED_SERVERS指定的值。 共享服务器操作模式:1。共享服务器操作模式的概念:实质是由少数服务进程为大量用户进程提供服务,使这些进程始终处于繁忙状态,这就是Oracle数据库的共享服务器操作模式。2。共享服务器操作模式的结构:在创建实例时,每个调度进程将自己的监听地址告诉Oracle监听程序,监听程序将根据监听地址把用户进程的

5、请求传递给相应的调度进程。一个Oracle实例至少要为它所支持的每一个网络协议启动一个调度进程。当用户进程请求连接时,监听程序首先检查该用户进程是否能够使用共享服务进程。如果可以,监听程序将这个用户进程的请求传递给当前负荷最轻的调度进程。 共享服务器操作模式:1。共享服务器操作模式的概念:实质是由少数服务进程为大量用户进程提供服务,使这些进程始终处于繁忙状态,这就是Oracle数据库的共享服务器操作模式。 数据库操作模式数据库为用户进程提供服务的方式叫做数据库操作模式。一、专用服务器操作模式:1。专用服务器操作模式的概念:在专用服务器操作模式中,Oracle为每一个连接到实例的用户进程启动一个

6、专门的服务进程。一个专用服务器进程仅为一个用户进程提供服务。各个专用服务进程之间是完全独立的,它们不需要共享数据。在用户进程连接到实例的整个过程中,专用服务器进程一直存在,直到用户进程断开连接它才被终止。2。专用服务器操作模式下处理用户进程:1。用户通过使用Oracle工具或执行应用程序在客户端创建一个用户进程,该用户进程将尝试连接到一个数据库实例。2。客户端计算机通过网络与数据库服务器建立连接,位于数据库服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,通过后建立一个专用服务器进程为该用户进程提供服务。3。用户提交一条SQL语句。4。专用服务器进程首先判

7、断在共享SQL工作区中是否存在类似的SQL语句。若不存在,它将为这条SQL语句分配新的共享SQL工作区。5。解析完成后,服务进程开始在数据库缓存中寻找这条SQL语句对应的数据。6。开始执行SQL语句。7。将结构返回给用户。 Dnnn调的程序进程:它实际上时多线程服务器的组成部分,它以后台进程的形式运行。它接受用户进程的请求,将它们放入到请求队列中,然后为请求队列中的用户进程分配一个服务进程。 ARCn归档进程:当数据库运行在归档模式下时,归档进程ARCn负责在日志切换后将已经写满的重做日志文件复制到归档目标中,以防止写满的重做日志文件被覆盖。只有数据库运行在归档模式下,ARCn才启动。要启动它

8、,初始化参数ARCHIVE_LOG_START必须设置为TRUE。 RECO恢复进程:负责在分布式数据库环境中自动恢复那些失败的分布事务。如果在分布式事务处理下(初始化参数DISTRIBUTED_TRANSACTIONS的值设置为大于0,RECO进程会自动启动)。当某个分布式事务由于网络连接故障或者其他原因而失败时,RECO进程将尝试与该事务相关的所有数据库进行联系,以完成对失败事务的处理工作。负责在分布式数据库环境中自动恢复那些失败的分布事务。如果在分布式事务处理下(初始化参数DISTRIBUTED_TRANSACTIONS的值设置为大于0,RECO进程会自动启动)。当某个分布式事务由于网络

9、连接故障或者其他原因而失败时,RECO进程将尝试与该事务相关的所有数据库进行联系,以完成对失败事务的处理工作。 PMON进程监视进程:负责对失败的用户进程或服务进程进行恢复,并释放进程所占用的资源。用户可能关闭客户端程序,但是却没有从数据库中退出,或者由于网络的突然中断而造成一个数据库连接的异常终止。这时,Oracle将PMON进程来启动清除中断或失败的用户进程,包括清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA区、PGA区等资源。此外,它还会定期的检查调度程序和服务程序进程的状态。SMION相似,PMON也会定期的被唤醒。 SMON系统监视进程:系统监视

10、进程是在实例启动时负责对数据库进行恢复操作。如果上一次数据库是非正常关闭的,当下一次启动实例时,它会自动读取重做日志文件,对数据库进行恢复。此外,它还有两个任务:*在临时段或临时表空间中回收不再使用的存储空间。*将各个表空间中的空闲空间碎片合并在一起。在实例运行期间,它也可以定期地被唤醒。 检查点的相关初始化参数3。检查点的相关初始化参数:*LOG_CHECKPOINT_TIMEOUT这个参数用于指定检查点执行的最大间隔时间。*LOG_CHECKPOINT_INTERVAL这个参数用于指定在出现检查点之前必须写入重做日志文件中的操作系统块的数量。*LOG_CHECKPOINT_TO_ALERT

11、用于设置是否将检查点信息记录到警告日志中。 CKPT检查点进程CKPT检查点进程1。检查点的概念:“检查点”是一个事件。当该事件发生时,数据库缓存中的脏缓存块被写入数据文件,同时Oracle将对数据库控制文件和数据文件进行更新,以记录下当前的数据库结构和状态。在执行了一个检查点后,Oracle知道自己所有以提交事务对数据库所做的更改已经全部被写入到硬盘中了,此时数据库处于一个完整状态。在发生数据库崩溃后,只要将数据库恢复到上一个检查点执行时刻即可。2。CKPT进程的工作。*执行检查点和更新控制文家和数据文件*将脏缓存块写入数据文件的任务交给DBWR进程完成。 快速提交和组提交2。快速提交:当用

12、户提交一条COMMIT语句时,LGWR进程会立即将一条提交记录写入到重做日志文件中,然后再开始写入与该事务相关的重做信息。这时事务产生的脏缓存块并不会立即被DBWR进程写入数据文件,这称为“快速提交”机制。事务提交成功后,Oracle将为该事务生成一个系统变更码(SCN)。事务的scn将同时记录在它的提交记录和重做记录中。它还有个任务:实例没有启动CKPT进程,则由LGWR进程来完成检查点执行任务。3。组提交:数据库中同时存在许多事务,LGWR进程在写入重做日志文件时可以采取“组提交”的方式。一个用户提交事务时,LGWR进程开始将该进程的重做记录写入硬盘。如果在写入的过程中有其他多个用户也执行

13、COMMIT语句提交事务,这时LGWR进程不能立即将这些事务的重做记录写入硬盘,而必须等待当前的写操作完成。当第一个事务的重做记录都被写入到硬盘中后,LGWR进程将被重做日志缓存中的数据一次性全部写入重做日志文件。 LGWR日志写文件LGWR日志写文件:日志写文件负责将重做日志缓存中的重做记录写入到联机重做日志文件。前面已经提到,重做日志缓存是一个循环结构,在LGWR进程将缓存中的数据写入重做日志文件的同时,Oracle还能够继续向缓存中写入新的数据。1。将缓存数据写入重做日志文件的情况:*用户通过COMMIT语句提交当前事务。*重做日志缓存被写满1/3时。*DBWR进程开始将脏数据块写入数据

14、文件。*每隔3秒,即发生一次超时,此时会启LGWR。与DBWR进程相关的初始化参数2。与DBWR进程相关的初始化参数:*DB_WRITER_PRICESSES这个参数用于设置创建实例时启动的DBWR后台进程的数量。*DB_BLOCK_CHECKPOINT_BATCH这个参数用于设置每个检查点发生时,DBWR进程写入的脏缓存块的最大数目。*DB_BLOCK_RLU_LATCHES这个参数用于设置数据库缓存区中LRU的数量。在多处理器系统中,它通常设为处理器数目的一半。 BDWR(数据库写进程)BDWR(数据库写进程):数据库写进程DBWR负责将数据库缓存中的脏数据缓存块成批写入到数据文件中。默认

15、情况下,Oracle只在创建实例时启动一个DBWR进程(称为DBWR)。如果数据库中的数据更改操作十分频繁,DBA可以启动等多的DBWR进程以提高写入能力。Oracle最多允许启动9个额外的DBWR进程,但是进程数目不应超过系统CPU的数目,因为每个处理器同时只能运行一个DBWR进程。在数据库缓存区中,如果某个缓存块的数据被修改,它将被标记为脏。但是缓存块并不是一旦产生就立即被DBWR进程写入数据库文件。另外,DBWR进程也不是将所有的脏缓存块写入数据文件。因为脏缓存块一旦被写入数据文件,它将被标记为空闲缓存块,其中保存的数据将丢失。通过LRU算法能够解决这个问题。最近未被访问过的缓存块被标记

16、为“冷缓存块”,DBWR进程只将那些同时被标记为“脏”和“冷”的缓存块写入数据文件,这样,那些经常被访问的脏缓存块将继续留在缓存中。1。将脏缓存块写入数据文件的情况:*当用户执行Insert或Update等操作时,会首先将插入的数据写入数据库缓存。*当检查点发生时,将启动DBWR进程。*当数据库缓存的LRU列表的长度达到初始化DB_BLOCK_WRTCH_BATCH指定值的一半时DBAWR进程将被启动。*若发生超时(大约3秒钟内未被启动),DBWR进程将被启动。后台进程后台进程:oracle进程oracle进程:1。服务进程:它是由oracle自身创建,用于处理连接到实例中的用户进程所提出的请

17、求。oracle通过创建服务器进程为连接到数据库实例中的进程服务。在9i中可以同时存在两种类型的服务进程:*专用服务进程,一个专用服务进程只能为一个用户进程提供服务。*共享服务进程,一个共享服务进程可以为多个用户进程提供服务。服务进程的任务:*解析并执行用户所提交的sql语句;*在sga区的数据库缓存中搜索用户进程所访问的数据,如不存在,则从硬盘中读取。*将数据返回给用户进程。2。后台进程:主要作用:是以最有效的方式为并发建立的多个用户进程提供oracle的系统服务,这些系统服务包括进行i/o操作、监视各个进程的状态、维护系统的性能和可靠性等。*数据库写进程(DBWn)*日志写进程(LGWR)

18、*检查点进程(CKPT)*系统监视进程(SMON)*进程监视进程(PMON)*归档进程(ARCn)*恢复进程(RECO)调度程序进程(Dnnn) 用户进程用户进程:当用户执行一个oracle应用程序时,或者启动一个oracle工具时,oracle将创建一个用户进程来执行相应的用户任务。“连接”和“会话”:*连接是一个用户进程与数据库实例之间的一条通信路径。*会话是一个用户到数据库的指定连接。所以,会话是通过连接建立的。同一个用户可以通过建立多个连接来创建到oracle数据库的多个会话。 实例进程结构实例进程结构:它是操作系统中一个独立的可以调度的活动,用于完成指定的任务。进程与程序的区别在于前

19、者是一个动态概念,后者是一个静态实体;程序仅仅是指令的有序集合,而进程则强调执行过程。进程可以动态地创建,完成任务后即会消亡。1。进程类型:在oracle系统工作过程中,主要设计到如下两类进程:*用户进程:在用户连接数据库时会创建一个用户进程。*oracle进程:oracle进程在创建实例时由oracle本身产生,执行的是oracle自身的代码,用于完成特定的服务功能。一个完整的oracle实例由sga区和一系列后台进程组成,如图:查询pga区查询pga区:*v$sysstat*v$sesstat*v$pgastat*v$sql_workarea*v$sql_workarea_active s

20、ql工作区内存分配sql工作区内存分配:在oracle中,通过引入一个新的初始化参数pga_aggregate_target,解决了设置pga区中sql工作区大小的难题。如果设置了初始化参数pga_aggregate_target,其他pga区相关的area_size参数就不需要再进行设置了。 设置sql工作区设置sql工作区:1。sql工作区的概念:用户在执行一些包含特殊操作的sql语句时,需要在处理用户会话的服务进程的pga区中创建一些专用的内存结构,这些内存结构统称为sql工作区。在执行比较复杂的查询时,常常需要在pga中创建一个比较大的动态缓存区,用户专门执行如下一些必须在内存中进行的

21、操作:*排序*连接*集合运算这些缓存区称为“sql工作区”。比如一条sql语句在执行过程中需要进行大量排序,会在pga中创建一个专用来缓存记录的排序区;如果一条查询语句在执行过程中需要进行散列连接操作,将在pga中创建一个专门用来缓存左连接数据的散列区。2。sql工作区的特点:排序区是最常使用的一种sql工作区,下面将以它为例介绍sql工作区的一些工作特点。dba可以调整用户使用的排序区的大小,使用更大的排序区能够显著地提高那些需要进行大量排序操作的sql语句的执行速度。每个用户能够使用的最大排序区由初始化参数sort_area_size指定。语句执行完毕后排序区保留的大小由初始化参数sort

22、_area_retained_size指定会话内存区2。会话内存区:会话内存区由于保存用户会话的变量(登录信息)以及其他与会话相关的信息。如果数据库处于共享服务器操作模式下,会话内存区将位于sga区中而不是pga区中,因为会话信息被所有的共享服务器进程所使用。如果数据库处于专用服务器操作模式下,会话内存区将保存为这个会话提供服务的专用服务器进程的pga去中。这时只有这个服务器进程需要使用该会话的会话信息。游标游标:在开发oracle应用程序时(比如plsql或oci程序),将会使用到“游标(Cursors)”的概念。一个游标可以看作是命名的数据库连接资源。应用程序通过创建并打开一个游标在数据库中获取或更新数据。对私有sql工作区的操作是由游标完成的,因此,一个用户能够使用的私有sql工作区数目取决与他能打开的游标数目。通过设置初始化参数oper_cursors可以限制用户能够同时打开的游标数目,该参数的默认值为50。私有sql工作区

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论