1、Oracle Net与通信协议简介
Oracle的网络支持被限制于TCP、命名管道(Named Pipes,简写SDP)。所有的操作系统都具有一个本操作系统专有的进程间通信(Inter-Process Communication,简写IPC)协议。
2、建立会话
通过用户进程建立针对实例的会话,可以执行:
SQL> connect scott/tiger@ora |
首先,将这个命令分解为下列组件:数据库用户名“scott”,口令“tiger”,分隔用户与口令的“/”,“@”符号,连接串“ora”。其中“@”符号指示了网络连接所需的用户进程。如果省略“@”符号与连接串,那么用户进程被认定连接实例在本地机器上运行,并且始终能够使用IPC协议。如果命令中包含“@”符号与字符串,用户里程认定是请求连接远程机器上的一个实例。
2.1、连接本地实例
所有Oracle会话都使用了网络协议。不过本地连接所使用的网络协议为IPC。IPC由操作系统提供,并允许各种进程在主机内进行通信。本地连接是唯一不需要侦听器的连接类型。本地连接不必进行任何配置。本地计算机可以运行若干实例,通过环境变量为用户进程提供希望连接的实例。
$ export ORACLE_SID=ocp $ sqlplus / as sysdba SQL> startup SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- ocp SQL> exit $ export ORACLE_SID=ora $ sqlplus / as sysdba SQL> startup SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- ora |
2.2、名称解析
使用Oracle Net进行连接时,第一个阶段是发现实际希望连接的实例。这个阶段就是名称解析过程。如果连接串为“ora”,那Oracle Net就必须理解“ora”的含义。连接串的含义被解析为下列4部分:希望使用的协议(通常认定为TCP),运行数据库侦听器的IP地址(主机名也可,主机名也会被解析成IP),侦听器监视引入连接请求的端口,希望连接的实例名称(可能是“服务”名称,因为RAC一个“服务”名由许多实例组成)。
2.3、启动服务器进程
服务器上运行数据库侦听器使用一种或多种协议在若干网络接口卡上的若干端口监视引入连接请求。如果是一台机器运行多个侦听器,并且每个侦听器可以接受对许多实例的连接请求,那情况就复杂了。如果连接一个请求,侦听器首先验证这个连接是否有效。如果有效,侦听器会启动一个为用户进程服务的新服务器进程。如果1000个用户同时登录实例,就会启动1000个服务器进程。
3、创建与管理侦听器
侦听器在listener.ora文件中定义,默认存储位置$ORACLE_HOME/network/admin目录下。listener.ora至少必须声明侦听器的名称及其使用的协议与侦听地址,我们可以在一个文件中配置多个侦听器,不过必须具有不同的名称与地址。
4、数据库注册
如果没有使用RAC,侦听器与实例必须在相同的计算机上运行。在RAC环境中,群集中任何计算机上的任何侦听器能够连接任何计算机上的任何实例。
向数据库注册实例的方法表静态注册和动态注册。
4.1、静态注册(不太明白,以后补)
4.2、动态注册(不太明白,以后补)
5、侦听器控制实用程序
运行lsnrctl命令。
$ lsnrctl start |
如果没使用默认名称LISTENER,必须指定侦听器名称。
$ lsnrctl start listener2 |
6、名称解析技术
Oracle提供4种名称解析方法:Easy Connect、本地名称解析方法、目录名称解析方法、外部名称解析方法。
6.1、Easy Connect名称解析方法
C:/> sqlplus test/test@192.168.0.5:1522/ora |
很容易理解吧,其实就是把客户端要用的侦听器的信息写在了connect的地方。
如果侦听器使用1521端口,并向侦听器注册的服务的名称与计算机名相同,可以用更简单的命令。(未亲测)
C:/> sqlplus test/test@192.168.0.5 |
6.2、本地名称解析方法
这个方法很常见,找到$ORACLE_HOME/netword/ADMIN/tnsnames.ora文件
ORA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521)) ) (CONNECT_DATA = (SID = ora) ) ) |
在连接的时候,只要发出连接串“@ORA”,用户进程应当使用TCP协议到达机器192.168.0.5并连接端口1521,同时请求监视该端口的侦听器使用服务名ora建立针对指定实例的会话。
6.3、目录名称解析方法
目录名称解析方法为所有名称解析细节提供了一个中心仓库,目录服务器。
6.4、外部名称解析方法
类似于目录名称解析方法,不过使用了第三方名称解析服务。
7、高级的连接选项
关于连接容错和负载均衡。(暂时没有环境,未亲测)