--=================================-- 配置Oracle 客户端连接到数据库--================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中。所以无需配置客户端即可连接到服务器。Oracle 客户端连接到数据库依赖于Oracle Net。Oracle提供了很多基于客户端或服务器的配置工具,需要搞清的是Oracle Net 中的相关术语。术语明白了,其实配置方法与SQL server 大同小异。
相关阅读:客户端不安装Oracle也可以连接数据库 http://www.linuxidc.com/Linux/2007-07/6398.htmPLSQL Developer 或Toad 不安装Oracle 客户端连接数据库 http://www.linuxidc.com/Linux/2012-05/60573.htm解决Oracle 11gR2 RAC 无法在客户端通过scanIP连接数据库 http://www.linuxidc.com/Linux/2012-09/69477.htm一、什么是Oracle NetOracle Net 用于客户端和服务器之间创建一个连接会话,并负责维护该会话。Oracle Net 在客户端作为应用程序的一个后台进程组件,而在服务器端则包含称为侦听器的活动进程,负责客户端和服务器之间的交互。Oracle Net 同时也支持异构数据库的连接,如连接到Sybase,Informix,DB2,SQL Server等通常基于下列配置来实现网络配置(网络必须是联通的)节点所在的位置(IP/Hostname)应用程序所使用的协议(TCP/IP、/TCP/IP with SSL、SDP、Named Pipes) Oracle Net支持的连接类型客户端-服务器模式(如SQLPlus)Java 应用程序(JDBC等)Web 客户端应用程序使用基于Web的应用程序(App Server)作为中间件来实现,可以配置JDBC Oracle Call Interface (OCI) driver 或thin JDBC driver通过HTTP直接连接到Oracle 服务器,如OEM Oracle Net实现机制用户发出连接请求实现与用户进程进行交互用户进程通过Oracle Net 来与服务器进程交互服务器进程则与实例进行交互(由Oracle Net维护)实例通过后台进程交互来完成数据库的读写操作 Oracle Net 连接方式本地客户端连接的数据库(即客户端与数据库位于同一台服务器)。本地连接同样使用到了Oracle Net,因为任何与数据的交互都通过Oracle Net来完成。不需要使用到Listener,因为本地连接使用的是IPC协议,而IPC协议允许主机内进程间相互通信,由操作系统提供。本地连接不需要进行任何配置,且本地服务器上可以运行若干个实例。本地连接是唯一一个不需要侦听器的连接类型。连接方法:CONNECT username/password 所有非本地客户端连接到数据库服务器端启用Listener进程客户端通过TNSNAME或Easy connect或LDAP等名称解析方式来解析连接字符串一旦连接成功,即是Listener服务停止,不影响该会话。 Oracle Net Listener(侦听器)运行于服务器端,用于侦听所有来自客户端的连接请求,并提供处理数据库服务方面的请求位置:$ORACLE_HOME/network/admin/listerer.ora --对应于netmgr中(GUI界面)的Listeners项下建立的缺省侦听器(Listener)$ORACLE_HOME/network/admin/sqlnet.ora--对应于netmgr中(GUI界面)的Profile服务器端配置tnsnames位置:ORACLE_HOME/network/admin/tnsnames.ora--对应于netmgr中(GUI界面)的Service NamingListener提供的信息包括,IP地址、端口号、协议、服务名(service_name)等一个Listener能够为多个数据库实例提供服务 二、客户端到服务器建立会话的过程及相关术语执行如下的命令来建立连接SQL> CONNECT username/password@net_service_name 连接字符串(connect string):username/password@net_service_name 包含了用户名、密码、连接标识符如:SQL> conn scott/tiger@orcl字符串分解用户名scott密码为tiger"/"用于分割用户与密码"@"指示网络连接所需的用户进程orcl连接标识符 连接标识符(connect identifier)@后面的即为连接标识符,如上例中的orcl。连接标识符的名字是一个映射到连接描述符的简化连接标识符可以为网络服务名/别名、数据库服务名等(net service name, database service name, or net service alias.) 连接描述符(connect discriptor)使用一种特殊格式来描述连接的具体信息,信息包含了、数据库所在的位置(IP地址)、服务名、端口号等如tnsnames中的:orcl =--网络服务名,数据库别名,等同于连接标识符(屏蔽客户端如何连接到服务器端的细节)(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))--IP地址,端口号,协议)(CONNECT_DATA =(SERVICE_NAME = orcl.linuxidc.com)--服务名))以上所有DESCRIPTION内的信息即为连接描述信息描述符之上等于号左边的可以为网络服务名,网络服务别名等,此等同于连接标识符。 服务名(service_name)客户端连接到实例的服务名,可以为该参数指定一个或多个服务名。该参数从9i引入,service_name通常可以使用SID代替。9i之后,Oracle推荐使用service_name而不是SID。可以通过定义多不不同的服务名来区分不同的用户连接,该参数缺省的格式为db_name.domain_name。实例将所定义的服务名注册到侦听器,当客户端请求服务时,侦听器根据服务名决定将使用哪个实例提供所请求的服务并与之建立连接基于相同的数据库可以定义多不不同的服务名来区分不同的使用情况如定义service_name为service_names = sales.linuxidc.com,hr.robinsn.com则sales部门通过sales服务名来建立连接,hr部门通过hr服务名来建立连接,而无须关心连接的是哪一个数据库。 演示连接过程(非本地连接)环境:服务器为RHEL 5 + Oracle 10g ,客户端Winxp + 10g Client查看服务器listener是否启动[oracle@linuxidc admin]$ lsnrctl--启动lsnrctl 侦听器程序 LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-SEP-2010 13:31:06 Copyright (c) 1991, 2005, Oracle.All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> status--查看侦听器状态,侦听器没有启动Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))TNS-12541: TNS:no listenerTNS-12560: TNS:protocol adapter errorTNS-00511: No listenerLinux Error: 111: Connection refused --启动缺省的侦听器--在下面列出的信息中没有侦听器的路径及listener.ora文件,此处listener.ora 不存在LSNRCTL> startStarting /u01/app/oracle/10g/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.2.0.1.0 - ProductionLog messages written to /u01/app/oracle/10g/network/log/listener.logListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linuxidc.com)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))STATUS of the LISTENER------------------------AliasLISTENERVersionTNSLSNR for Linux: Version 10.2.0.1.0 - ProductionStart Date03-SEP-2010 13:31:14Uptime0 days 0 hr. 0 min. 0 secTrace LeveloffSecurityON: Local OS AuthenticationSNMPOFFListener Log File/u01/app/oracle/10g/network/log/listener.logListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linuxidc.com)(PORT=1521)))The listener supports no servicesThe command completed successfully LSNRCTL> service--已经看到了已注册的实例信息,因为10g支持动态注册Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))Services Summary...Service "orcl.linuxidc.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Handler(s):"DEDICATED" established:0 refused:0 state:readyLOCAL SERVERService "orclXDB.linuxidc.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Handler(s):"D000" established:0 refused:0 current:0 max:1022 state:readyDISPATCHER <machine: linuxidc, pid: 3246>(ADDRESS=(PROTOCOL=tcp)(HOST=linuxidc.com)(PORT=51473))Service "orcl_XPT.linuxidc.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Handler(s):"DEDICATED" established:0 refused:0 state:readyLOCAL SERVERThe command completed successfully --查看客户端tnsnames.ora的信息C:/>type F:/oracle/product/10.2.0/client_1/NETWORK/ADMIN/tnsnames.ora# tnsnames.ora Network Configuration File: F:/oracle/product/10.2.0/client_1/NETWORK/ADMIN/tnsnames.ora# Generated by Oracle configuration tools.orcl =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl.linuxidc.com)))C:/>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期五9月3 13:42:02 2010 Copyright (c) 1982, 2005, Oracle.All rights reserved. SQL> conn scott/tiger@orclConnected.--将tnsnames.ora中服务别名改为oral后再连接,可以正常连接,即网络服务名可以随便取。SQL> conn system/RedHat@oralConnected. --查看数据库中的服务名SQL> show parameter service_names; NAMETYPEVALUE------------------------------------ ----------- --------------------------service_namesstringorcl.linuxidc.com
用shell脚本配置Oracle安装需求Oracle配置非默认端口的动态服务注册相关资讯 Oracle数据库连接 Oracle客户端配置 Oracle据库数客户端
- Oracle数据库之SQL连接查询 (04/08/2013 14:54:46)
- Oracle数据库三种连接方式 (01/29/2013 09:45:29)
| - PHP客户端连接Oracle数据库 (03/08/2013 10:56:47)
- Oracle数据库连接与调用简单的存储 (08/17/2012 09:21:08)
|
本文评论 查看全部评论 (0)