`

Oracle系列之二 体系结构概述

阅读更多

一、概述

大型软件需要有好的架构支撑,此处描述oracle体系结构,从运行期的进程/线程、内存体系结构和静态的文件描述。本来我想按照五种架构视图的运行架构和数据架构来写的,但是想想怕这么写不够严谨,所以还是按照Kyte大叔的分类来写吧。

二、数据库和实例

数据库是磁盘上存储的文件的集合

实例是运行期的一组后台进程/线程和共享内存的集合。注意此处是后台进程,专用服务器不属于后台进程,但是为什么共享服务器属于呢?Oracle运行时候以多进程还是以多线程的形式运行,跟不同操作系统的实现版本有关的,Linux上是多进程,Window上是多线程。后续以多进程术语描述其运行期进程/线程,大家知道不同os实现不同就行。

数据库可以同时有多个实例连接,而实例在生存周期内只能管理一次数据库。

别的dbms中的数据库的概念跟oracle中数据库的概念本身就有些不同,mysql创建一个数据库是一个很简短的过程,而Oracle却很漫长,为何?

三、专用服务器和共享服务器

客户端,如sqlplus发起一次客户请求,服务端会有进程来接受并处理客户的请求。监听连接请求的是TNS监听程序,但是在监听到客户连接请求后,后续的交互过程TNS监听程序就不在干预。按照后续处理方式的不同,处理客户请求的进程分为专用服务器(Dedicated Server)和共享服务器(Shared Server)。

专用服务器连接时,为每一个用户连接请求启动一个进程,并处理这个客户端后续所有的请求,看起来就像这个客户端独占了到服务器的一个通道一样。

共享服务器连接下,客户端跟共享服务器是多对多的方式进行交互,一个客户端的的请求可能由多个服务器来处理,一个服务器进程可以处理多个客户端的请求,当然每次请求由一个服务器进程处理,每个服务器进程每次只能处理一个客户请求。当请求发到调度程序时候,调度程序把请求放入到SGA的请求队列,等待空闲的共享服务器来请求队列获取请求并进行处理。处理后,会把结果放入到SGA中的响应队列,调度程序拿响应信息返回给响应的客户端。

四、客户端连接服务器的过程

客户端连接服务器的时候,会根据连接标识符,也叫TNS服务名到%ORCLE_HOME%\NETWORK\ADMIN\ tnsname.ora 文件查找对应的主机ip和端口号以及协议,然后发起连接

C:> sqlplus scott/tiger@orc11gr2

此处连接标示符为orc11gr2,到我的目录下查找到的连接信息为:

ORC11GR2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yymt)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orc11gr2)
    )
  )

如果连接的时候没有连接描述符则到注册表如下路径下查找ORACLE_SID的键值

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1

  找到对应的主机和端口后,就发起一个连接请求,此处为tcp请求,发给服务器上的TNS监听程序,监听程序接收到请求后,根据是共享服务器还是专用服务器来进行不同的后续处理。

这个连接标识符也可以用其他方式来解析,如Oracle Internet目录,这是一个分布式LDAP服务器等,起作用相当于解析主机名的DNS。不过tnsname.ora通常只适用于大多数中到小型安装,这种情况下这个配置文件的副本不是太多。

4.1、专用服务器连接

如果是专用服务器连接,监听程序则创建一个新的进程来处理后续的客户请求。创建的进程就是专用服务器进程。

4.2、共享服务器连接

如果是共享服务器连接,监听程序则返回一个调度程序的端口号给客户端,客户端后续请求都通过该端口号跟调度程序通信。当请求发到调度程序时候,调度程序把请求放入到SGA的请求队列,等待空闲的共享服务器来请求队列获取请求并进行处理。处理后,会把结果放入到SGA中的响应队列,调度程序拿响应信息返回给响应的客户端。

一个数据库服务器可以同时存在专用服务器连接和共享服务器连接。总体的运行情况如下:

通过什么方式知道当前数据库是共享服务器连接还是专用服务器连接呢?

1、新连接一个sqlplus客户端前后系统里oracle相关进程或线程的数量

2、其他的方法呢?

分享到:
评论

相关推荐

    Oracle体系结构概述

    本文将深入探讨Oracle体系结构的各个关键组成部分。 首先,我们关注物理结构,这是Oracle数据库在磁盘上的实际存储形式。主要包含以下几个部分: 1. **数据文件**:数据文件是Oracle数据库中最基本的存储单元,...

    OracleRAC的架构体系结构概述共21页.pdf.zi

    在"Oracle RAC的架构体系结构概述共21页.pdf"文档中,通常会详细讲解以上概念,并深入探讨各个组件的工作原理、配置步骤、性能调优策略以及最佳实践。这份资料将有助于你全面理解和掌握Oracle RAC的复杂架构,从而更...

    Oracle体系结构概述.pptx

    Oracle体系结构概述.pptx

    Oracle体系结构概述.ppt

    Oracle体系结构是理解其高效运行和管理的关键。本篇将深入探讨Oracle的体系结构及其主要组成部分。 首先,Oracle数据库的核心是数据库本身,它是一个数据的集合,包含在一个或多个物理文件中。数据库分为物理结构和...

    Oracle11g体系结构深入剖析和运维管理(一)

    Oracle 11g体系结构深入剖析和运维管理(一)资源目录:【】1_Oracle学习前奏【】2_Oracle软件安装准备工作【】3_Oracle软件安装和数据库的创建【】4_Oracle数据库及相关软件的启动和关闭【】5_计算机工作机制概述【】...

    Oracle安装和体系结构

    #### 四、Oracle体系结构详解 - **Oracle10g体系结构**:理解Oracle10g的体系结构对于深入学习和使用该数据库系统至关重要。主要包括以下几个方面: - **数据库实例**:一个数据库实例由内存结构和进程组成,是...

    Oracle体系结构概述1.ppt

    学习Oracle体系结构不仅需要数据库理论、编程语言和操作系统知识,还要求积极的学习态度和动力。理解Oracle的体系结构对于数据库管理员、开发人员和IT专业人士来说至关重要,因为它有助于优化性能、确保数据安全和...

    oracle系统概述-体系结构

    oracle的体系结构、实例启动关闭、数据字典、事务管理等

    oracle体系结构8.09

    #### 一、Oracle体系结构概述 Oracle数据库的体系结构主要包括几个关键部分:数据库实例(Instance)和数据库文件(Database Files)。其中,数据库实例由内存结构(Memory Structures)和后台进程(Background ...

    Oracle数据库的体系结构.pdf

    Oracle数据库的体系结构非常复杂,本总结只是对其中的一些关键概念和组件进行了概述。实际上,每个部分都可以展开深入讨论,并涵盖更多的细节。对于希望深入掌握Oracle数据库体系结构的读者来说,需要进一步学习和...

    Oracle概述和体系结构.pptx

    Oracle概述和体系结构.pptx

    oracle的体系结构02

    Oracle 的体系结构概述 Oracle 的体系结构可以分为物理结构、逻辑结构和软件结构三个部分。物理结构指的是 Oracle 数据库的物理存储结构,包括数据文件、日志文件、控制文件和参数文件等。逻辑结构指的是 Oracle ...

    Oracle Database 12c RAC 体系结构

    ### Oracle Database 12c RAC 体系结构详解 #### 一、Oracle RAC 概述与架构 Oracle Real Application Clusters (RAC) 是一种高级数据库集群技术,旨在为大型企业级应用提供高可用性、可扩展性和性能。通过将多个...

    Oracle11g体系结构深入剖析和运维管理(五)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(五)资源目录:【】37_深入剖析事务槽及Oracle多种提交方式【】38_OracleIMU及RedoPrivateStrands技术【】39_读一致性(ORA-01555错误机制分析)及Undo表空间大小设置...

    Oracle11g体系结构深入剖析和运维管理(四)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(四)资源目录:【】28_存储结构_段区块【】29_检查点队列(checkpointqueue)【】30_实例崩溃恢复原理剖析【】31_系统改变号(SCN)详解【】32_事务概述【】33_事务ACID...

Global site tag (gtag.js) - Google Analytics