客户端配置
Oracle是一个典型的B/S结构的网络应用,客户端要想能够连接到数据库,需要提供两方面信息:
数据库所在服务器的网络地址和端口号;
数据库服务名称
这两部分内容在Oracle的词汇表中叫做连接描述符。
1、 连接描述符
Oracle的连接描述符包含两部分:地址部分和数据库服务部分。Oracle Net Service位于传输层之上,独立于传输层,能够支持TCP、TCPS、管道等,最常用的就是TCP/IP协议。而Oracle监听器默认是在1521上进行监听。这些信息就是通过地址来提供的,地址部分包含3部分信息:通讯协议、主机名、端口号。
一个服务器上可以同时运行多个数据库,所以Oracle需要某种机制来区分要连接的数据库,Oracle Net支持SID、Service_Name等方式。
2、 连接标识符(Connect identifier)
有了之前的连接描述符之后,客户端就可以连接到数据库服务器了,但是连接描述符太复杂了,不好记忆,因此Oracle又提供了连接标识符,简化了客户端的配置,客户只需要关注连接标识符就可以了。
在这个例子中,ORCL就是连接标识符,而客户端的tnsname.ora文件格式就是由一些连接标识符和连接描述符组成的;
ADDRESS这一行包含3个部分,其中PROTOCOL = TCP代表协议类型,HOST=*就是服务器所在的IP地址,也可以是DNS名称;PORT代表监听端口。
SERVICE_NAME=orcl,指明要连接的数据库的服务名称,也可以使用SID来区分数据库,这时这一行如下所示:
(SID = orcl)
对于客户端的配置通常我们是借助Oracle提供的图形工具如NETMGR(Oracle Net Manager)完成的,图(2)就是上面例子的配置示意图:
3、 连接字符串
客户端要通过比如SQL*PLUS客户端程序连接数据库时,除了需要提供连接标识符或者连接描述符外,还需要提供用户名、密码信息。这些信息共同组成了连接字符串,标准的格式:
Username:password@connect_identifier/connect_descriptor
比如,下面使用的是连接标识符的连接方法:
sqlplus username/password@ORCL
下面是使用连接描述符的方法:
sqlplus /nolog
SQL>conn username/password@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
Connected.
虽然两种方法都可以连接到数据库,但无论使用那种方法连接数据库,最终使用的都是连接描述符,很明显使用网络服务名这种更简洁,但是网络服务名必须要被解析为连接描述符才能使用,这就引发出了一个问题,客户端需要有一个地方来保存网络服务名和连接描述符之间的关系。
Oracle提供了4中方式:
Local Naming:这种方式就是利用本地的tnsnames.ora文件完成翻译工作。
Easy Connect Naming:这种方式客户端不需要任何配置文件,只有Oracle 10g才支持这种方式。
External Naming:在网络中集中记录这些信息。
Directory Naming:在LDAP目录中保存这些信息。
Oracle对于其网络服务的解析非常类似于域名解析。当我们在互联网上冲浪时,网络域名必须先被解析成网络设备能够识别的IP地址,有两种方法可以完成这些任务。对于一些公司内部的域名,我们可以通过本地的/etc/hosts文件添加映射关系,而对于互联网更主要是通过DNS的机制来完成解析过程。前一种方法配置简单,见效迅速,但是缺点是这个映射只针对本机上的应用程序有用,其他计算机不能识别,如果要想多台计算机生效,那就必须一台一台计算机修改过去。而第二种方法的好处就是实现了几种管理,只需在一台计算机上进行修改,整个网络都可以看到这个修改。
如果对照域名解析的两种机制:Local Naming方法就类似于/etc/hosts文件的作用;而External Naming和Directory Naming这两种方法类似于DNS,这里主要介绍这两种命名方式:
(1) Local Naming 方式。
这种命名方式是最简单常用的,这种方法使用一个参数文件tnsnames.ora,所有的网络服务名和连接描述符的对应关系都记录在这个文件中。这个文件通常是位于$ORACLE_HOME/network/admin目录下,但可以使用TNS_ADMIN参数指定这个文件的存放路径。
Oracle按照下面的顺序寻找这两个文件,最先找到的被使用。
首先查找TNS_ADMIN参数定义的目录。
其次,查找一个全局目录,UNIX系统上,这个目录通常是/var/opt/oracle。
使用标准目录$ORACLE_HOME/network/admin。
(2) Easy Connect Naming 方式。
这是在Oracle 10g提供的一种简单的连接建立方法,才用这种方法,客户端不在需要配置文件 tnsname.ora。这种方法虽然简单但是也有限制条件。首先,只有Oracle 10g以上版本才支持这个特性;其次,客户端和服务端必须都是使用TCP/IP协议,必须使用数据库的SERVICE_NAME。
这种连接的字符创格式:
Username/password@[//]host[:port][/server_name]
在这个语法中,“//”是可选的,host是必选的,port是可选的,如果不填就会使用1521这个缺省端口,service_name也是可选的,如果不选,就会使用服务器的主机名作为这个参数值。比如:
sqlplus scott/tiger@//192.168.1.110/ORCL
这种格式非常类似访问Web网站的URL
(3) TWO_TASK环境变量。
如果觉得连接符还是很麻烦,可以设置操作系统的环境变量TWO_TASK,这时使用SQL*PLUS就可以不需要指定连接标识符了。比如:
Export TWO_TASK=ORCL
Sqlplus username/password
这种做法提供的方便还是有限的,因为要想连接其他的数据库,还得修改这个环境变量或者使用连接标识符。
作者:czjie
出处:http://www.cnblogs.com/czjie/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。