oracle 监听器的工作机制
原文:DBA的思想天空 p15-16
应用要访问 Oracle数据库,可以通过三种方式:
第一种方式是应用进程直接访问数据库实例的共享内存,
第二种方式是通过 beg协议在本机上访问,
第三种方式是通过网络协议访问。
首先,后两种访问数据库的方式都是基于two-task结构的,都需要在数据库服务器上建立个服务进程(server进程,或者前台进程)来为客户端应用服务(在这里我们只讨论独立服务器模式,共享服务器模式十分类似,我们将在后面进行专题描述)。two-task架构下访问数据库,首先需要在服务器端创建一个进程,这个进程启动时先要映射共享内存,然后才能够通过共享内存中的内部数据结构完成会话的初始化工作。
在本机上不经过 SQL*Net 连接数据库,前台进程和用户进程之间通过IPC机制进行通信,通信协议就是著名的 Bequeath 协议,简称 BEQ协议。而如果通过 SQL*Net连接数据库,那么就需要使用网络协议。现在TCPP协议已经成为使用最为广泛的协议,因此我们主要面对的是TCP/IP 协议,而10多年前,著名的SPX协议、DECnet协议、Token Ring协议等都曾经是 DBA进程配置的协议。使用 SOL*Net协议的前台进程和用户进程之间的通信采用 Socket通信。实际上,在服务器上,我们也可以使用 SQL*Net连接数据库,只不过我们很少会去这样做,因为 BEO协议在效率上高于 Socket 通信。