`
linsea
  • 浏览: 90494 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle进程类别(1)

阅读更多

Oracle进程类别

 

n        Oracle实例主要有3类进程:

Ø         服务器进程(server process):这些进程根据客户的请求来完成工作。我们已经对专用服务器和共享服务器有了一定的了解。它们就是服务器进程。

Ø         后台进程(background process):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。

Ø         从属进程(slave process):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。

专用服务器(dedicated server)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程或线程之间存在一对一的映射。

共享服务器(shared server)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。

 

n        连接与会话

连接并不是会话的同义词,在一条连接上可以建立0个、一个或多个会话。各个会话是单独而且独立的,即使它们共享同一条数据库物理连接也是如此。一个会话中的提交不会影响该连接上的任何其他会话。实际上,还可以有连接而无相应的会话。另外,一个会话可以有连接也可以没有连接。使用高级Oracle Net特性(如连接池)时,客户可以删除一条物理连接,而会话依然保留(但是会话会空闲)。客户在这个会话上执行某个操作时,它会重新建立物理连接。

连接(connection):连接是从客户到Oracle实例的一条物理路径。连接可以在网络上建立,或者通过IPC机制建立。通常会在客户进程与一个专用服务器或一个调度器之间建立连接。

会话(session):会话是实例中存在的一个逻辑实体。这就是你的会话状态(session state),也就是表示特定会话的一组内存中的数据结构。提到“数据库连接”时,大多数人首先想到的就是“会话”。你要在服务器中的会话上执行SQL、提交事务和运行存储过程。

 

专用服务器模式中连接与会话的例子:如果一个用户连接上数据库进行操作,操作时也打开set autotrace on statistics 则会创建一个跟踪统计的会话,此时一个连接有两个会话。如果用户执行命令disconnect,(其实这个命令真正的意思应该是“destroy_all_session”,因为用户并没有真正断开连接,如果要真正断开连接,则应该执行“exit“命令。)另一个用户在另一个窗口中打开另一个会话查询系统会话视图v$session则不会看到之前的会话,但仍有一个进程,即相应地有一条物理连接。这说明可以有连接而没有会话。之前的用户可以使用connect命令(真正的意思应该是create_session)在刚才的连接上再创建新会话。

 

如果是共享服务器模式,一个会话可能由多个服务进程轮流为之服务,一个进程可能为多个会话服务。简单地说,连接和会话之间有一种多对多的关系。

1. 什么时候使用专用服务器?

因为存在一对一的映射,所以不必担心长时间运行的事务会阻塞其他事务。其他事务只通过其自己的专用进程来处理。因此,在非OLTP环境中,也就是可能有长时间运行事务的情况下,应该只考虑使用这种模式。专用服务器是Oracle的推荐配置,它能很好地扩缩。只要服务器有足够的硬件(CPURAM)来应对系统所需的专用服务器进程个数,专用服务器甚至可以用于数千条并发连接。

某些操作必须在专用服务器模式下执行,如数据库启动和关闭,所以每个数据库中可能同时有专用服务器和共享服务器,也可能只设置一个专用服务器。

 

2. 什么时候使用共享服务器?

对于共享服务器,则有一种多对一的关系:多个客户对应一个共享服务器。共享服务器的首要原则:要确保事务的持续时间尽量短。事务可以频繁地执行,但必须在短时间内执行完(这正是OLTP系统的特点)。

共享服务器只适用于OLTP系统,这种系统的特点是事务短而且频繁。共享服务器对数据仓库很不适用,因为在数据仓库中,可能会执行耗时1分钟、2分钟、5分钟甚至更长时间的查询。

如果你的系统中90%都是OLTP,只有10%“不那么OLTP”,那么可以在同一个实例上适当地混合使用专用服务器和共享服务器。

许多高级连接特性都要求使用共享服务器。如果你想使用Oracle Net连接池,就必须使用共享服务器。如果你想在数据库之间使用数据库链接集合(database link concentration),也必须对这些连接使用共享服务器。

共享服务器主要为我们做3件事:减少操作系统进程/线程数,刻意地限制并发度,以及减少系统所需的内存。

使用共享服务器时,UGASGA中分配。这说明,转变为共享服务器时,必须能准确地确定需要多少UGA内存,并适当地在SGA中分配(通过LARGE_POOL_SIZE参数)。所以,共享服务器配置中对SGA的需求通常很大。这个内存一般要预分配,从而只能由数据库实例使用。

注意 对于大小可以调整的SGA,随着时间的推移确实可以扩大或收缩这个内存,但是在大多数情况下,它会由数据库实例所“拥有”,其他进程不能使用。

分享到:
评论

相关推荐

    Oracle常见等待事件说明

    Oracle 等待事件主要分为两种类别:空闲(idle)等待事件和非空闲(non-idle)等待事件。空闲事件指 Oracle 正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。常见的空闲事件有 dispatcher ...

    ORACLE 错误码大全

    7. **实例与进程状态**:某些错误码与数据库实例或后台进程的状态有关,了解这些状态可以帮助理解错误的上下文。 8. **PL/SQL编程错误**:对于在PL/SQL代码中遇到的错误,手册会指导如何调试和修复代码。 9. **...

    ORACLE的SQLPLUS常用命令.doc

    下面按类别列出一些 ORACLE 用户常用数据字典的查询使用方法: 1. 用户查看当前用户的缺省表空间: SQL>select username,default_tablespace from user_users; 2. 用户查看当前用户的缺省临时表空间: SQL>...

    最全的oracle常用命令大全.txt

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    oracle_asm_管理_中文.pdf

    ASM实例拥有特定的后台进程(如RBAL)来协调磁盘组的重新平衡,并有两个额外的后台进程(ASMB和RBAL)与数据库实例通信。数据库实例通过ASM实例来获取ASM文件的布局信息。 创建ASM实例通常通过运行Database ...

    oracle 错误代码一览表

    这些错误代码可以分为不同的类别,如语法错误、语义错误、运行时错误、系统错误等。 下面是 Oracle 错误代码的一些常见示例: 1. ORA-00001: 违反唯一约束条件 这种错误发生在尝试插入或更新数据时,但该操作违反...

    oracle数据库的性能调整

    1. **调整进程数**:Oracle数据库默认的进程数为50,但实际需求可能会更高。可以通过查询`V$DISPATCHER`视图来检查并发连接数是否达到瓶颈。如果某个网络接口的忙闲比例超过50%,则需要增加MTS DISPATCHERS的数量。 ...

    监控oracle的等待事件

    Oracle 等待事件按照类型可细分为多个类别: 1. 管理类:如重建索引时产生的等待。 2. 应用程序类:由用户应用程序代码引起,如锁等待。 3. 群集类:涉及 RAC 资源的等待,如 gc cr block busy。 4. 提交确认类:如...

    oracle体系架构

    - **数据库实例**:由系统全局区(SGA)和Oracle进程组成,是访问和控制数据库的软件机制。 - **物理结构**:包括数据文件、重做日志文件、控制文件等操作系统级别的文件。 - **逻辑结构**:包括表空间、段、范围、...

    第五章Oracle数据库性能优化

    具体来说,Oracle提供了多个不同类别的性能视图: 1. **实例/数据库**:如`v$database`、`v$instance`、`v$parameter`、`v$system_event`等,用于查看数据库和实例级别的配置和统计信息。 2. **用户/会话**:如`v$...

    Oracle初始化参数

    - 指定Oracle运行过程中为后台进程(如LGWR、DBWn等)写入跟踪文件的路径名(目录或磁盘)。 - 跟踪文件包含了重要的事件和消息,有助于故障排查。 - **值范围**:任何有效的目录名 - **默认值**:`ORACLE_HOME/...

    Oracle 性能调整定位总结

    1. **查看Oracle内部参数**: 使用`SELECT substr(ksppinm,1,50), ksppdesc FROM x$ksppi WHERE substr(ksppinm,1,1)= ‘_’;`此SQL语句,可以获取Oracle数据库中不常显示的内部参数及其描述,这对于理解数据库的...

    Oracle 动态性能表学习

    ### Oracle 动态性能表学习:深入理解 v$sysstat #### 一、v$sysstat 视图概述 在 Oracle 数据库管理中,动态性能视图(Dynamic Performance Views)是一组特殊的内置视图,提供了关于数据库实例及其内部组件的...

    oracle运维手册

    表和索引的存储情况,数据库的创建日期和归档方式,以及如何查看所有数据库对象的类别和大小,设置RAC为归档模式。 5. AWR报告:介绍自动工作负载仓库(Automatic Workload Repository)报告,用于收集统计信息以及...

    ORACLE系统报表输出流程.docx

    - 接下来选择“工具”菜单中的“自定义……”选项,找到类别是“宏”的自定义按钮,并将其拖动到菜单栏中。 - 完成以上步骤后,关闭“自定义”窗口。 3. **宏的使用**: - 单击之前设置的笑脸按钮,会跳出一个新...

    oracle性能监控常用语句集合

    以下是这些语句的主要类别及其详解: 1. **V$视图查询**: Oracle提供了大量的动态性能视图(V$视图),通过查询它们可以获取数据库运行时的详细信息。例如,`V$SESSION`用于查看当前会话状态,`V$INSTANCE`显示...

    ORACLE运行报错.doc

    这些错误代码分为多个类别,包括唯一约束条件错误、会话错误、进程错误、锁定错误、存储错误等等。 唯一约束条件错误 * ORA-00001: 违反唯一约束条件 (.): 这个错误通常发生在尝试插入重复数据时。 * ORA-00017: ...

Global site tag (gtag.js) - Google Analytics