加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle 11g 服务器结构

发布时间:2021-01-23 23:04:41 所属栏目:站长百科 来源:网络整理
导读:副标题#e# Oracle 服务器主要又实例、数据库、程序全局区和前台进程组成。 实例可以进一步划分为系统全局区(SGA)和后台进程(PMON、SMON等)两部分,其中,SGA 使用操作系统的内存资源,而后台进程需要使用 CPU 与内存资源。数据库(Database)中包含数据

  程序全局区(Program Global Area)也可称做用户进程全局区,它的内存在进程私有区而不是共享区。虽然 PGA 是一个全局区,可以把代码,全局变量和数据结构都可以存放在其中,但区域内的资源并不像 SGA 一样被所有的用户进程所共享,而是每个 Oracle 服务器进程都只拥有属于自己的那部分 PGA资源。

  在程序全局区(PGA)中,一个服务进程只能访问属于它自己的那部分 PGA 资源区,各个服务进程的 PGA 区总和即为实例 PGA区的大小。通常 PGA 区由私有 SQL 区和会话区组成。

  1、私有 SQL区

  私有 SQL 区用于存储变量以及 SQL 语句运行时的内存结构信息,当每个用户连接到实例时,都会在实例中创建一个会话。这些会话可能会在 SGA 区中创建一个共享 SQL区,但在 PGA 区中可能会创建多个私有 SQL 区。把一个私有 SQL 区与对应的共享 SQL 区合并在一起,就可以获得一条 SQL语句的完整缓存数据。

  每个会话的私有 SQL 区可以再分为静态区和动态区两部分。静态区的信息在会话过程中保持不变,只有当会话结束时,静态区才会被释放掉;而动态区的信息在整个会话过程中是不断变化的,一旦 SQL 语句指定完毕,即使会话还没有结束,动态区也被释放掉。

  2、会话区

  会话区用于存放用户的会话信息(如登录用户名)。如果数据库处于共享服务器连接模式下,则会话区将位于 SGA 区域,而不是 PGA 中。

  查看程序全局区(PGA)的信息可以通过显示 pga 参数的内容来实现。

三、前台进程

  前台进程包括用户进程和服务进程,它不属于实例的一部分,但是用户在不知不觉中经常会用到它,使用前台进程能够实现用户与实例的沟通。

  1、用户进程

  用户进程是指那些能够产生或执行 SQL 语句的应用程序,无论是 SQL*Plus,还是其他应用程序,只要是能生成或执行 SQL 语句,都被称作用户进程。

  在用户进程中有两个非常重要的概念:连接和会话。连接是一个用户进程与实例之间建立的通信渠道,这个渠道可以通过操作系统上的相关通信机制或网络连接来实现。会话是指用户进程与实例之间建立连接后形成的用户与实例之间的交互方式,一般是用户发出请求,数据库实例为用户返回响应消息的方式。

  2、服务器进程

  服务进程就是用于处理用户会话过程中向数据库实例发出 SQL 语句或 SQL*Plus 命令,它可以分为专用服务器模式和共享服务器模式。在专用服务器模式下,每个用户进程都有一个专用的服务器进程,这个服务器进程代表用户进程执行 SQL 语句,必要时还可以回传执行结果给用户进程。在共享服务器模式下,每个用户进程不直接与服务器进程连接,而是连接到分派程序,每个分派程序可以同时连接多个用户进程。

四、后台进程

  Oracle 后台进程是一组运行与 Oracle 服务器端的后台程序,是 Oracle 实例的重要组成部分。这组后台进程有若干个,它们分工明确——分别完成不同的系统程序。

其中 SMON、PMON、DBWR、LGWR 和 CKRT 这5哥后台进程必须正常启动,否则将导致数据库崩溃。还有很多的辅助进程,用于实现相关的辅助功能,如果这些辅助进程发生问题,只会使某些功能受到影响,一般不会到时数据库实例崩溃。

  1、数据写入进程(DBWR)

   数据写入进程的主要任务是负责将内存中的 “脏” 数据块回写到数据文件中。“脏” 数据块是指高速数据缓冲区中的被修改过的数据块,这些数据块的内容与数据文件内容不一致。但 DBWR 并不是随时将所有的 “脏” 数据块都写入数据文件,只有满足一定的条件时, DBWR 进程才开始成批量地将 “脏” 数据写入数据文件, Oracle 这样做的目的是为了尽量减少 I/O 操作,提供 Oracle 服务器性能。通常在下面几种情况下,DBWR 进程将 “脏” 数据块写入数据文件。

  •   当用户进程执行插入或修改操作时,需要将 “新数据” 写入高速数据缓冲区,如果在高速数据缓冲区中没有找到足够大的空闲数据块来存放这些“新数据”,这时, Oracle 系统将启动 DBWR 进程并将 “脏” 数据块写入数据文件,已获得空闲数据块来存储这些 “新数据”。
  • ? ? ? ?当检查点进程启动后,它会强制要求 DBWR 将某些 “脏” 数据块写入数据文件文件中。
  •   当 “脏” 数据块在高速数据缓冲区中存放超过3秒钟,DBWR 进程会自行启动并将某些 “脏”数据库写入到数据文件中。

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!