客户端/服务器系统是一个分布式应用处理系统,客户和服务器组件分别运行于不同的物理计算机上,通过网络将客户机和服务器机器连接起来,使用应用程序中间件(Application Middleware)使得分布式处理系统的不同部件之间易于通信,如Oracle公司的Net10(在以前版本中称为SQL*Net)。
下面以客户端/服务器网络为例,介绍如何在客户端安装Oracle 10g客户端产品,以实现与 Oracle 10g服务器的连接。
2.3.1 Net10简介
Net10是用于用户应用和Oracle数据库之间(客户/服务器),或多个数据库之间(服务器/服务器)的Oracle远程数据访问软件,它可与多种操作系统支持的通信协议配合,为Oracle提供分布式处理环境。
Net10可以使网络中的计算机与其他机器“交谈”,它用于管理和促进客户端应用和远程数据库间的通信会话。
(1) Net10主要执行以下3种基本操作。
l 连接:在网络协议上,打开和关闭客户(或担当客户的服务器)与数据库间的连接。
l 数据传输:打包和传输数据,如SQL语句和数据应答,以便它可以在客户和服务器间传输和沟通。
l 例外处理:从客户或服务器中断请求。
(2) Net10是标准Oracle网络包的一部分。该网络包还包括下列部分。
l Oracle Names:为Oracle环境开发的分布式命名服务,以帮助简化客户/服务器网络的设置和管理。
l Oracle Connection Manager:多用途的网络服务,它提供连接集中、网络访问控制和多协议连接等功能。
l Net10 OPEN:它是一种应用编程接口(API),允许开发人员利用Net10网络开发数据库和非数据库应用程序。使用它,可以解决许多问题,如三层连接(客户/代理/服务器)、分布式应用和增强的客户(集成非SQL信息到SQL应用中)等。
(3) Net10有以下特性。
l 网络透明:Net10支持许多网络传输协议,包括TCP/IP、SPX/IPX、IBM LU6.2、Novell和 DECnet等。它按一种对应用程序用户不可见的方式执行。这使得Net10可以跨不同类型的计算机、操作系统和网络,透明地连接PC、UNIX及其他系统。
l 协议独立:这使Oracle应用通过相应的Oracle协议适配器可运行在任何支持的网络协议之上。
l 介质/拓扑独立:在Net10传递连接的控制到基层协议时,它继承网络协议支持的所有介质和/或拓扑。这使得网络协议可以使用任何数据传输方法(如以太网、令牌网等)在两台计算机之间实现底层数据链传输。
l 可伸缩性:通过使用先进的连接集中和连接池特性,使得若干用户可以并发地连接到一个服务器上。
1. Net10的体系结构
Oracle的网络环境是基于分布式处理和OSI通信结构。典型的Oracle通信结构类似于标准的OSI通信结构。在Oracle客户/服务器处理中,通过以下几层传输信息,如图2-3所示。
客户端应用提供所有面向客户的活动,如字符或图形化显示、屏幕控制、数据表示等。应用程序用来确定发送到服务器的数据库操作,并通过OCI传送它们。
(1) Oracle调用接口(OCI):OCI代码包括客户和服务器之间对话所需的全部信息,它用于定义到服务器的调用,以便做SQL语句的语法分析、为SQL语句打开游标、将客户端应用变量与服务器共享内存相连、描述基于服务器数据字典中值的返回域的内容、在游标内存空间中执行SQL语句、将数据返回到客户端应用、关闭游标等。
(2) 两任务公用(Two-Task Common):用于提供客户和服务器上不同字符集或格式间的字符集和数据类型的转换。
(3) Net10:在Oracle通信结构中用于提供所有会话层功能,在客户端和服务器间建立和维护连接、交换信息。Net10本身包括下述3层。
l 网络接口(NI):为Oracle客户、服务器或外部程序提供通用接口,以访问Net10函数。它用于处理连接的中断和复位请求。
图2-3 Oracle的通信结构
l 网络路由(NR)/网络命名(NN)/网络验证(NA):NR提供到目标的会话发送,NN用于分解别名为一Net10目标地址,NA用于与目标协商任何验证请求。
l 透明网络层(TNS):它是Net10的最低层,用于提供到标准协议的公用接口。TNS接收来自Net10的请求,解决所有通用机器级连接问题,如服务器或目标的位置、连接中是否包括一个或多个协议、如何处理客户和服务器间的中断等。
(4) Oracle协议适配器:将TNS功能映射到“客户机-服务器”连接中使用的工业标准协议。每个适配器在TNS和某特定协议间可映射等价的功能。
(5) 网络协议:在“客户机-服务器”连接中所有Oracle软件通过网络协议可在两台机器间形成机器级连接。网络协议只将客户机通信传送至服务器。
(6) 服务器端:服务器端类似的通信结构可接收跨网络协议传输的客户端应用信息。服务器端的处理顺序与客户端是相反的。服务器端一个独特的操作是通过网络监听器接收最初的连接。服务器端与客户端的不同之处在于如下两点。
l Oracle程序接口(OPI):它与OCI的功能是互补的。OPI用于响应OCI的每个信息。
l Oracle服务器:它用于接收来自客户OCI代码的会话请求,为客户端应用分解SQL语句。一旦接受了,请求被处理,产生结果数据到OPI,OPI负责格式化数据并返回给客户端应用。
在两个服务器通信实现分布式事务时,进程、层和会话都类似于“客户机-服务器”。服务器有它自己的OCI,称为网络程序接口(NPI)。NPI接口执行所有OCI为客户机执行的功能。
2. Net10的配置文件
Net10的配置文件主要有:批文件SQLNET.ORA、本地命名配置文件TNSNAMES.ORA、监听器配置文件LISTENER.ORA、名称服务器(Names Server)配置文件NAMES.ORA、Oracle连接管理器(Connection Manager)配置文件CMAN.ORA、协议特定参数文件PROTOCOL.ORA。下面是最基本的3个文件的示例。
(1) 批文件(SQLNET.ORA)
它用于指定客户或服务器如何使用Net10特性。
TRACE_LEVEL_CLIENT = OFF
#sqlnet.authentication_services = (NONE)
names.directory_path = (TNSNAMES, HOSTNAME)
names.default_domain = world
name.default_zone = world
automatic_ipc = off
(2) 本地命名配置文件(TNSNAMES.ORA)
它包含网络中服务的名称和地址。数据库的服务名称被映射到描述其网络位置的连接描述器。
CMEXAMPLE.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(PORT = 1610)(HOST = CM_SERVER))
(ADDRESS = (PROTOCOL = tcp)(PORT = 1521)(HOST = LSNR_SERVER))
)
(CONNECT_DATA = (SID = ORCL))
(SOURCE_ROUTE = yes)
)
TCPEXAMPLE.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = Production1)(Port = 1521))
(CONNECT_DATA = (SID = ORCL))
)
NMPEXAMPLE.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = NMP)(Server = FinanceServer1)(Pipe = ORAPIPE))
(CONNECT_DATA = (SID = ORCL))
)
EXTPROC_CONNECTION_DATA.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA = (SID = extproc))
)
BEQ-LOCAL.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = BEQ)(PROGRAM = Oracle10g0)(ARGV0 = Oracle10g0ORCL)(ARGS
= '(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))
(CONNECT_DATA = (SID = ORCL))
)
SUN.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(HOST = 192.9.200.1)(PORT = 1521))
(CONNECT_DATA = (SID= ora10))
)
SPXEXAMPLE.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= SPX)(Service = Server_lsnr))
(CONNECT_DATA = (SID= ORCL))
)
TCP-LOOPBACK.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host = 127.0.0.1)(Port = 1521))
(CONNECT_DATA = (SID= ORCL))
)
(3) 监听器配置文件(LISTENER.ORA)
它用于指定网络监听器如何工作。
listener=
(address_list =
(address =
(protocol = tcp) (host=192.9.200.1) (port = 1521)
)
)
startup_wait_time_listener=0
connect_timeout_listener=0
sid_list_listener =
(sid_list =
(sid_desc =
(sid_name = ora10)
(ORACLE_HOME=/database/oracle/app/oracle/product/10.0.5)
)
)
trace_level_listener=OFF
/*passwords_listener=(manager)*/
3. Net10控制程序
Net10提供了以下工具来帮助启动、测试和控制每个网络组件。
(1) Oracle名称控制程序NAMESCTL:用于从操作系统提示下启动和控制名称服务器。
① 启动Oracle名称的命令为:
$ NAMESCTL STARTUP
② 关闭Oracle名称的命令为:
$ NAMESCTL SHUTDOWN
(2) 监听器控制程序LSNRCTL:用于从操作系统提示下启动和控制监听器。
① 启动监听器的命令为:
$ LSNRCTL start
② 关闭监听器的命令为:
$ LSNRCTL stop
(3) 连接管理器控制程序CMCTL:用于从操作系统提示下启动和控制Oracle连接管理器。
① 启动Oracle连接管理器的命令为(启动管理和主进程):
$ CMCTL start cman
② 关闭连接管理器的命令为(关闭管理和主进程):
$ CMCTL stop cman
2.3.2 安装客户端工具
下面介绍在Windows中如何安装Oracle客户端产品。
(1) 双击光盘中的setup.exe文件,出现如图2-4所示的窗口,单击【开始安装】按钮。
图2-4 启动Oracle安装程序
(2) 在弹出的Oracle Universal Installer对话框的【指定文件位置】界面中输入安装目录和使用语言等信息,如图2-5所示。然后单击【下一步】按钮。
图2-5 Oracle Universal Installer对话框
(3) 在如图2-6所示的界面中选择安装类型,这里选择“管理员”单选按钮,并单击【下一步】按钮。
图2-6 选择安装类型
(4) 进入如图2-7所示的【概要】界面,安装程序显示收集到的信息,用户可浏览所要安装的组件。然后单击【安装】按钮。
图2-7 【概要】界面
(5) 安装所选的产品,如图2-8所示,直到安装结束时确认即可。
图2-8 正在安装Oracle客户端
2.3.3 使用Oracle Net10 Easy Config
使用Oracle Net10 Easy Config工具可在客户端配置网络连接。配置方法如下。
(1) 从Windows的“开始”菜单中启动“Oracle Net10 Easy Config”,出现Oracle Net Configuration Assistant对话框,单击Add New Service单选按钮,以增加一个新服务(服务名称也称为数据库别名)。如果选择Modify单选按钮,则可选择一个已有服务进行修改;若选择Delete单选按钮,则可删除一个服务;若选择Test单选按钮,则可测试一个服务。在如图2-9所示的界面中可选择使用的网络协议。
图2-9 选择网络协议
(2) 在如图2-10所示的界面中可输入数据库所在的计算机名称(主机)或IP地址和端口序号。
图2-10 选择主机
(3) 在如图2-11所示的界面中可选择测试来检验是否连接到Oracle数据库。
图2-11 测试
(4) 可以在随后出现的界面中单击Test Service按钮,在输入Oracle用户和口令后测试与数据库的连接是否成功。最后单击Finish按钮结束配置。
2.3.4 使用Net Manager
Oracle Net Manager是用Java语言编写的新工具,在Net10和Java可用的任何平台上同样可用。它替代了Oracle Network Manager提供的客户端配置功能(在Windows平台上可用)。使用Net Manager可以配置批文件SQLNET.ORA和本地命名配置文件TNSNAMES.ORA、服务名和Oracle Names Server。
在Windows平台上选择“开始”菜单中的“Oracle Net Manager”命令,或在UNIX平台上运行oracle/admin/bin子目录下的netasst.sh脚本,都可启动Net10 Assistant工具。下面以在Windows平台下为例介绍使用它如何进行参数配置。启动后的Oracle Net Manager如图2-12所示。
图2-12 Oracle Net Manager
在屏幕左半边的树形结构中,可以显示下列项目。
l Profile:允许客户或服务器指定Net10特定的使用参数。
l Service Names:显示和增加/配置网络中的数据库服务。具体的配置步骤和内容同Oracle Net Configuration Assistant向导的配置。
l Listeners:显示和增加/配置网络中的监听器。
l Oracle Name Servers:配置、管理和操作名称服务器。
具体的使用方法是在左边窗口中双击某个标题,在右边窗口中将分别显示相应的信息,可以根据需要修改已有的信息,或根据提示增加新的信息。每个选项的具体含义可通过单击help按钮进行查看。