第一章 Oracle体系结构

实例和数据库

  定义

    实例:一组后台进程/线程以及一个共享内存区。

    数据库:物理操作系统文件或磁盘的集合,包括数据文件、临时文件、重做日志文件和控制文件(使用oracle的ASM或RAW分区时,数据库可能不作为操作系统中单独的文件)

  实例和数据库之间的关系

    数据库可以由多个实例装载和打开(RAC环境下),而实例可以在任何时间点装载和打开一个数据库。实例在其整个生存期中最多能装载和打开一个数据库!

      • OracleServer:Instance+Database
      • Instance在数据库启动时加载入内存(按参数文件Parameterfile来分配内存等)
      • oracle memory:sga+pga
      • Instance:sga+background process
      • database:data files、control files、redo log files
      • sga 组成:sga 在一个 instance 只有一个 sga,sga 为所有 session 共享,随着 instance 启动而分配,instance down ,sga 被释放。

 

SGA和后台进程 

SGA:系统全局区,它会做以下工作

  • 维护所有进程需要访问的多种内部数据结构
  • 缓存磁盘上的数据,另外重做数据写至磁盘这前先在这里缓存
  • 保存已解析的SQL计划,等等

 

连接Oracle
Oracle服务器处理请求的两种常见方式:

  • 专用服务器(dedicated server)
  • 共享服务顺(share server)

专用服务器:
  使用一个专用服务器登录数据库,会创建一个新的进程,提供专门的服务,这个服务器进程会在我的会话生存期中专门为我服务。对于每个会话,都会出现一个新的专用服务器,会话与专用服务器之间存在一对一的映射。按照定义,这个专用服务器不是实例的一部分。这个服务器进程的主要目标就是对我提交的SQL调用作出响应。

  对专用连接来说,用户在客户端启动了一个应用程序,例如 sql*plus,就是在客户端启动一 个用户进程;与 oracle 服务器端连接成功后,会在服务器端生成一个服务器进程,该服务器 进程作为用户进程的代理进程,代替客户端执行各种命令并把结果返回给客户端。用户进程一旦中止,与之对应的服务器进程立刻中止。

共享服务器:
  这种方式实际上就是一种连接池机制,不会对每条用户连接创建另外的线程或新的Unix进程。只需要建立很少的一部分进程/线程,给所有会话共享。采用共享服务器模式,共享进程通常与数据库一同启动。多个 user process 共享一个 server process。它通过调度进程(dispatcher)与共享服务器 连接,共享服务器实际上就是一种连接池机制(connectionpooling),连接池可以重用已有的超时连接,服务于其它活动会话。但容易产生锁等待。此种连接方式现在已经很少见了。

两种服务器的区别:

  客户进程不会与共享服务器直接通信,而是通过一个调度程序进行“对话”

补充:

  驻留连接池模式(database resident connection pooling,简称 DRCP): 适用于必须维持数据库的永久连接。结合了专用服务器模式和共享服务器模式的特点,它提供了服务器连接池,但是放入连接池的是专用服务器。它使用连接代理(而不是专用服务器) 连接客户机到数据库,优点是可以用很少的内存处理大量并发连接(11g 新特性,特别适用于Apache的PHP应用环境)

 

TCP/IP连接的基本原理

  服务器DBA安装并配置了Oracle Net,并且有一个监听器的端口1521上监听连接请求。

  客户端可以发现以下命令:sqlplus scott/tiger@orcl。这里客户是程序SQL Plus ,scott/tiger为用户名和密码,orcl是一个TNS服务名。TNS代表透明网络底层(Transparent Network Substrate)。TNS连接串告诉Oracle软件如何与远程数据库连接。一般你的机器上运行的客户软件会读取一个tnsnames.ora文件。根据这个配置信息,客户软件即可链接上服务器。

posted @ 2018-04-10 21:43  liyj88  阅读(135)  评论(0编辑  收藏  举报