" 学习一东西,一般思路是:框架->细节",某老师曾经这样说,这也符合本人的习惯,废话不多说,进入正题.
一.oracle体系的组成
oracle的体系结构主要分为三大部分:
1.文件 主要包括构成数据库的五大类文件:参数文件,数据文件,临时文件,控制文件和重做日志文件。
2.内存结构 主要包括系统全局区(System Global Area,SGA),进程全局区(System Global Area,PGA)和
用户全局区(User Global Area,UGA).
3.进程或线程 主要包括3类不同的进程:服务器进程,后台进程和从属进程
二.常用术语
实例与数据库
数据库:物理操作系统文件或磁盘的集合。
实例:一组oracle后台进程或线程以及一个共享内存区,内存共享区,有同一个计算机上运行的进程或线程所共享, 没
有磁盘存储,数据库实例也能存在.
关系:一个数据库可以由多个实例装载和打开,而实例在其生存期中最多能装载和打开一个数据库.
本质:实例就是一组操作系统进程(或者一个多线程的进程)以及一些内存,这些进程可以操作数据库.而数据库只
是 一个文件的集合(数据文件,临时文件,重做日志文件,控制文件等).一个实例只能有一组相关的文件.
(与一个数据库关联)
典型的应用:oracle的真正应用集群(Real Application Clusters,RAC),允许多个实例同时装载并打开一个数据库
(位于一组共享物理磁盘上),因此,我们可以同时从多台不同的计算机上访问这个数据库.
一个实例能打开多个数据库吗?
答:可以,一个磁盘上有4个数据库和一个实例,只要有不同的配置文件,就能装载并打开4个数据库中的任意一个.
在任意时间点上只能访问一个数据库.
三.连接oracle的模式
服务器处理请求的两种常见方式:专用服务器连接和共享服务器连接
专用服务器连接:在登陆时,oracle在服务端总会创建一个新的进程,这个服务进程在会话生存期中会专门为我
服务,会话与专用服务器之间存在一对一的映射.客户进程会与这个专用服务器直接通信,并有
这个服务器接收和执行我的sql,并返回结果.
共享服务器连接:这种方式不会对每个用户的连接创建另外的进程或线程,在共享服务器中,oracle使用一个"共享
进程"池为大量用户提供服务.利用共享服务器,不用为1000个数据库会话创建1000个专用服务
器(进程或线程),而只需很少的一部分进程或线程,这些进程或线程将由所有会话共享.这样可以
让更多的用户与数据库连接.否者很难连接更多用户.
区别:与数据库连接的用户不会与共享服务器直接通信,因为服务进程是共享的,为共享进程,引入了"调度器"的机制,
用户与调度机直接通信.而专用服务器,客户进程与专用服务器直接通信。