oracle下载需要账号Oracle体系结构理解(2)

专用服务器与共享服务器

 

1.专用服务器

 

在我登陆时,Oracle总是会为我创建一个新的进程来连接Oracle服务器,这样配置的服务器叫做Oracle专用服务器,这个产生的服务器进程会在SGA生存周期里专门为我的请求服务。也就是说,每当我打开一个会话,则会产生一个进程,会话与服务器的对应关系是一对一的映射关系。

 

客户端 –> 1521端口:监听器 –> 生成进程 –> 连接实例 –> 数据库

 

而实例是通过parameter文件查找control文件的位置,来构建起与数据库进行数据交换的桥梁的。

 

2.共享服务器

 

在共享服务器当中,Oracle使用共享进程池来为大量的用户提供服务(类似排队的机制)。

 

不像专用服务器,我们不必每次为连接过来的客户端专门打开一个进程进行服务,如果我有10000个用户同时访问数据库,那么我们要打开10000个进程,这会使得我的Oracle服务器资源损耗巨大,甚至将服务器压垮。但是我在进程共享池里打开100个进程供所有用户使用,系统在管理进程的时候,由于进程数不大,提高管理效率,而且不会由于负载过大而造成崩溃的状态。

 

但是为了有效的管理这100个进程,需要引入一个新的概念叫做调度器来管理,当客户端对服务器进行访问,监听器收到客户端请求,监听器通过调度器了解到这100个进程中其中一个进程正在空闲当中,那么就会回复客户端哪个进程正在闲置并且进行访问。然后访问实例,进而访问数据库。

 

客户端 –> 1521端口:监听器 –>调用调度器 –>发现18888进程正在闲置 –> 回复客户端oracle账号通过18888进程进行访问 –> 客户端通过18888端口访问实例 –> 数据库

 

3.TNS透明网络底层

 

tns是处理Oracle远程访问的基本软件,查看一下Oracle工作目录下的tnsnames.ora,在$ORACLE_HOME/network/admin/下。查看一下内容:

    ORCL = 

        (    DESCRIPTION =

            (    ADDRESS =

                (    PROTOCOL = TCP)

                   …

))

 

这里配置着客户端要访问哪个主机的哪个端口,使用哪一个实例来访问底层数据库。

 

在Server端也会存放着Client端的相关信息,类似于Linux的ssh服务ssh_know_hosts文件。

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。