远程链接oracle数据库服务器的配置
原理:
一、Oracle客户端与服务器端的通讯机制
1、OracleNet协议
如下图所示,Oracle通过Oracle Net协议实现客户端与服务器端的连接以及数据传递。Oracle Net是同时驻留在Oracle数据库服务器端和客户端上的一个软件层,它封装了TCP/IP协议,负责建立与维护客户端应用程序到数据库服务器的连接。
如下图所示,客户端发出的请求首先通过OracleNet协议转换,转换成可以通过网络传输的信息,通过TCP/IP网络将请求传输到数据库服务器端;服务器端接受到客户请求后要通过OracleNet协议转换,将请求转换成数据库可以解释执行的本地指令,并在服务器端执行(主要是一些输入输出操作),并将结果通过TCP/IP协议和OracleNet协议传输给客户端显示。
2、客户端与服务器端的连接过程
在分析客户端与服务器端的连接机制之前,先要定义两个概念,一个是Oracle监听器,一个是Oracle网络服务名。
Oracle数据库服务器通过一个名为“OracleNet监听器”的组件接收来自客户端的连接请求。监听器是位于服务器端的一个后台进程,发送给数据库的客户端连接请求,首先被服务器端的监听器所侦听,并将请求所转交给对应的数据库实例,从而建立起客户端与服务器的连接。连接建立后,客户端与服务器端就可以直接进行通讯,不再需要监听器参与。
要实现监听器对客户请求的监听,需要对监听器进行配置,包括监听端口、监听器所在数据库的全局数据库名称、数据库实例等信息。
Oracle网络服务名是一个标识符,它代表着客户端连接服务器的配置信息(实际上就是连接请求的内容),包括数据库主机地址、监听端口、全局数据库名称等内容。
如图所示,客户端与服务端的连接过程为:
(1)首先在服务器端有一个常驻的监听器(监听服务要打开)监听客户端发出的连接请求。
(2)用户在客户端(企业服务器或SQL工具)输入用户名、口令及网络服务名,或在SQL命令行中输入类似CONNECT username/password@net_Service_name”的类似请求。
(3)客户端查看网络服务配置文件tnsname.ora,将网络服务名映射为包含Oracle服务器地址、监听端口和全局数据库名的连接描述符。
(4)客户端根据连接描述符定位监听器,并通过网络将连接信息传递给监听器。
(5)监听器查询监听配置文件listener.ora,找出所要连接的数据库服务器。
(6)客户机和服务器开始通信。
说明:
一,简单来说连接分为以下两种
1.本地连接:形如sql>conn user/pwd建立的连接
2.远程连接:形如sql>conn user/pwd@service_name建立的连接.
本地连接无需监听,而远程链接则需要监听,需要配置listener.ora,tnsnames.ora等,这里oem链接比较特殊:就算在服务器端用oem连接数据库的时候也是通过服务名连接数据库也即远程连接,所以需要监听器.
二,oracle在网络连接上提供的中间件有
Name Server:命名服务,把服务命名集中在一台命名服务器上.用的不多,一般使用local tns解析.
Connection Manager:连接管理器,作为服务器端和客户端的中间层,服务器对客户端完全透明,客户端只能看到连接管理器所在的服务器.
操作
操作1-服务端配置-监听程序配置
第一步:
Windows下,如下图,打开“配置和移植工具->Net Configuration Assistant”
Unix、Linux下,XWindow环境下的终端,输入命令netca
$ netca
注意:
1.非XWindow字符界面下的操作,输入netca,会提示Set the DISPLAY environmentvariable,then re-run.必须开启桌面(其它命令dbca,netmgr也需要Xwindow环境的支持
$ startX开启图形界面的桌面系统
然后,Applications -> System Tools->Terminal,新建终端terminal
$ netca
2.如果不是以oracle用户登录系统,并开启桌面系统,新建终端下输入上述命令可能会提示“No protocol specified……”开启失败
第二步:如下图,选择“监听程序配置”,点击“下一步”
第三步:如下图,选择“重新配置”,点击“下一步”
第四步:如下图,选择“LISTENER”[刚安装完,就一个默认的LISTENER],点击“下一步”
第五步:如下图,提示监听程序正在运行,点击“是”,停止监听程序
第六步:如下图,选择协议,我这里仅选择“TCP”协议,点击“下一步”
第七步:如下图,选择“使用标准端口号1521”[默认就是1521,如果没被占用是可以用它的],点击“下一步”
备注:
到这一步,可能会提示1521正在被使用,有冲突,冲突解决后才可以启动监听,是否继续配置
解决方法:
进入cmd命令行,输入lsnrctl stop停止监听,然后再配置1521端口
第八步:如下图,选择“否”,不配置另一个监听程序了,点击“下一步”
第九步:如下图,点击“下一步”
操作2-服务端配置-本地网络服务名配置
第一步:如下图,选择“本地网络服务名配置”,点击“下一步”
第二步:如下图,选择“重新配置”,点击“下一步”
第三步:如下图,选择需要重新配置的网络服务名,例中为“MYORCL”
第四步:如下图,输入服务名[通常是全局数据库名],点击“下一步”
第五步:如下图,选择需要的网络协议,点击“下一步”,我这仅选择TCP。
第六步:如下图,输入主机名[可以是计算机名,也可以是ip],端口号[一般默认]
第七步:如下图,选择“是,进行测试”,点击“下一步”
第8步:如下图,点击更改“登陆”,
第9步:输入安装过程中设置的未锁定账户和密码或者其它新建的账户信息,点击确定
说明
情形一:如下图,提示“监听程序当前无法识别连接描述符中的请求的服务……listener does not currently know of service requested in connect descriptor ”