第4章 ORACLE NET客户端命名配置.docx_第1页
第4章 ORACLE NET客户端命名配置.docx_第2页
第4章 ORACLE NET客户端命名配置.docx_第3页
第4章 ORACLE NET客户端命名配置.docx_第4页
第4章 ORACLE NET客户端命名配置.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章ORACLENET客户端命名配置我们第三章学习了ORACLENET服务端的配置,学会了LISTENER的配置,学习了客户端、LISTENER、调度器(共享服务模式)、服务器进程在整个连接过程中的通讯方式,知道了直接衍生继承连接方式和重定向连接方式的通讯过程,以及适合的环境和效率,也学习了LISTENER.ora的配置,包括静态注册、动态注册的概念。学习了静态注册的方法,以及动态注册的实现。包括默认LISTENER的TCPIP协议下默认端口实现动态注册的方法,只要设置service_names和instance_name就可以实现。非默认LISTENER或非默认端口及TCPIP协议下实现动态注册的方法,需要在实例端设置LOCAL_LISTENER(通过TNSNAMES.ORA的服务名)实现注册服务到与实例同在本机的LISTENER,也可以通过实例端设置REMOTE_LISTENER实现注册服务到与实例不在同一主机的LISTENER。有了服务端的配置,还需要在每台客户端配置与LISTENER的连接及它所需要的地址信息,另外客户端还得指出想要连接的服务名或实例名,而LISTENER的相关地址列表信息和想要连接的服务名或实例名过于冗长和复杂,需要将每个冗长复杂的连接信息用一种命名方式将其简化。就好比小丽有一本小黄页,小黄页里有一些书店的名片信息,记录了各图书分店热线电话、选择服务热线沟通的语言、各图书馆的名称或各图书分店的名称。上图是小黄页上记录的小名片。如果小丽说要去上海图书馆买书(第步)命名规范会通过该名片自动找到相应的两个服务热线(第步)当然小丽去用这个名片,意味着她既懂中文,也懂英文。她也可以让系统自动负载均衡,找一个不太忙的服务热线,这叫随机顺序访问LISTENER的连接负载均衡也可能先按顺序打电话,那首先打上海中文图书服务热线,但可能占线,她可以选择立即挂掉电话,选择下一个英文图书服务热线,也可以重试中文服务热线,但是小丽的耐心是有限的,试打了几次电话,一直说电话忙,请稍后再拨。继续等待,请按星号键,小丽也许只能忍耐5次。一旦选择定了服务热线,这里就指定提供的真正服务(第步)如果是中文服务热线,那么中文服务热线会去找上海图书馆的实例,让上海图书馆分派一个营业员,当然服务名(service_names)叫上海图书馆的也可以有多个。这时可以选择负载均衡还是顺序选择第1个叫上海图书馆的实例,如果是顺序选择,那选择的书店就是上海图书馆的实例。也许黄浦店它就直接取了上海图书馆的名字(黄浦店实例上直接altersystemsetservice_names=上海图书馆即可)。如果选择了英文服务热线,那他只有选择静安图书分店,而静安图书分店只有它一家店这样命名,不涉及负载均衡。我们从上面可以看到,设置这张名片还有非常多的名堂,我们本章就结合前面的知识来配置这张名片,我们称为ORACLENET客户端配置及命名命名配置。1. 本章的主要内容 描述主机命名与本地服务名称解析之间的区别 使用OracleNetConfigurationAssistant配置: 主机命名方法 本地命名方法 网络服务名 排除简单连接出现的故障2. 命名方法概览OracleNet提供了五种命名方法: 主机命名:使TCP/IP环境中的用户能够通过其现有名称解析服务来解析名称,10G称为简易的命名方式 本地命名:使用在每个客户机的tnsnames.ora文件中配置和存储的信息查找网络地址 目录命名:将数据库服务或网络服务名解析为连接描述符,该描述符存储在中央目录服务器中 OracleNames:10G已经淘汰 外部命名:使用受支持的第三方命名服务,对于只有几个数据库的小型组织来说,应使用主机命名将名称存储在现有名称解析服务中,也可使用本地命名将名称存储在客户机上的tnsnames.ora文件中。对于有多个数据库的大型组织来说,应使用目录命名将名称存储在集中管理的符合LDAP的目录服务器中。其中用的最多的命名方式是客户端本地命名方式。我们将在本课中学到有关主机命名和本地命名的更多内容。3. 主机命名方法我们从前面的小卡片知道,要连接这次请求需要2个大要素,4小要素 服务热线的描述 地址 热线沟通的语言 电话号码 请求的真实服务如上海图书馆买书、静安图书分店买书对应到ORACLE连接有下面四小要素 LISTENER地址信息 主机地址 协议 端口 数据库服务信息 服务名/实例名那主机命名方式,协议采用默认的TCP/IP,端口也必须是1521,唯一要确定的是主机地址和服务名。而ORACLE采用最简单的方法,将ORACLE的SERVICE_NAMES用HOSTS文件(或DNS)影射成主机名前面应该讲过instance_name和db_name还有service_name吧SERVICE_NAMESspecifiesoneormorenamesbywhichclientscanconnecttotheinstance.Theinstanceregistersitsservicenameswiththelistener.Whenaclientrequestsaservice,thelistenerdetermineswhichinstancesoffertherequestedserviceandroutestheclienttotheappropriateinstance.那主机命名方式,协议采用默认的TCP/IP,端口也必须是1521,唯一要确定的是主机地址和服务名。而ORACLE采用最简单的方法,将ORACLE的SERVICE_NAMES用HOSTS文件(或DNS)影射成主机名,这时候主机地址出来了,最后一项要确定的是服务名,而主机名本身就是SERVICE_NAMES转换而来的,所以这时把主机名和数据库的服务名都默认等于ORACLE配置的SERVICE_NAME了。注意:这个主机名是一个别名(HOSTS转化的),可能不是真正的主机名。这就是主机命名方式的概念。3.1 主机命名方式的条件 使用ORACLENET的客户端软件来配置连接数据库服务 客户端和服务端必须都用TCP/IP协议 主机命名方式必须设置IP到主机名的转换,如域名服务(DNS)或者UNIX:/etc/hostsWINDOWS:WINNTsystem32driversetc可以将多个全局名对应一个IP,可以实现多个数据库主机命名方式登陆 主机命名方式没有安全选项3.2 主机命名方法具有下列优点: 需要的用户配置最少。用户只需提供主机名即可建立连接。 无需创建与维护本地名称配置文件(tnsnames.ora)。 无需了解OracleNames或OracleInternetDirectory管理过程。主机命名在每个主机上只能标识一个SID这里涉及了同一主机的多个实例是否能主机命名方式的问题如果在主机(hosts)文件中对多个全局名称设置了别名,让它们指向同一IP地址这样即使这些数据库位于同一节点上,也可使用主机命名连接任意数据库。比如#IPSqlplusno/Sqlplusno/可以连到不同的库3.3 客户端要求如果使用主机命名方法,则必须在客户机上安装TCP/IP协议。此外,还必须安装OracleNetServices和TCP/IP协议适配器。主机名通过域名服务(DomainNameServices,DNS)、网络信息服务(NetworkInformationServices,NIS)或集中维护的TCP/IP主机文件等IP地址转换机制来解析。使用主机命名方法之前,必须先对客户端进行如上配置。必须在SQLNET.ora设置命名方式路径(NAMES.DIRECTORY_PATH)=(HOSTNAME)注意,如果是非默认LISTENER,需要LOCAL_LISTENER加TNSNAMES的方式才能动态注册,所以需要(TNSNAMES)的命名方式,但是事实上主机命名方式不允许在非1521和非TCP/IP下执行,所以LOCAL_LISTENER意义不大3.4服务器端要求如果使用主机命名方法,除了客户机,还必须在服务器上也安装TCP/IP协议。此外,您也需要在服务器端安装OracleNetServices和TCP/IP协议适配器。 在Oracle9i中,只要满足以下条件之一就可向监听程序自动注册有关数据库的信息(包括全局数据库名称): 在端口1521上使用TCP/IP运行的名为LISTENER的缺省监听程序正在运行 已在初始化文件中设置了LOCAL_LISTENER参数但是主机命名方式只能在1521端口,设置了1521端口,自动转换成默认LISTENER,所以LOCAL_LISTENER也没什么意义 早期版本中是通过listener.ora文件向监听程序注册数据库信息的。必须静态配置SID_LIST_listener_name段,并包含GLOBAL_DBNAME参数。全局数据库名称由数据库名称和数据库域名构成。可以从初始化参数文件中的SERVICE_NAMES参数或DB_NAME和DB_DOMAIN参数来获取GLOBAL_DBNAME的值。现在很少用了,大家也不用太花心思。主机命名在工作中用不上,现在没人这样用,也是对tnsnames.ora连接listener的一个理解,主机名必须与数据库的SERVICE_NAME、连接的服务串相匹配。比如 如果客户端与服务器端已满足所有要求,则可从客户机发出连接请求,此操作可使您与实例TEST建立连接,如下所示:sqlplussystem/SQL*Plus:Release.0 ProductiononThuNov1513:46:242001(c)Copyright2001OracleCorporation.Allrightsreserved.Connectedto:Oracle9iEnterpriseEditionRelease.0ProductionSQL3.5 命名方法配置ORACLE为初学者提供了网络图形化的配置工具,可使用OracleNetConfigurationAssistant或OracleNetManager执行命名方法配置。以下示例中使用的是OracleNetConfigurationAssistant。这里我只简单简述一下这个过程,我通常不用到这些工具,但对你们现在来说这些工具也许还比较适合。下一节课程我们会做大量LISTENER和TNSNAMES的实验。由于OracleNetConfigurationAssistant是通过Java来实现并与“Java运行时环境”(JavaruntimeEnvironment)封装在一起,因此,您可在安装了OracleNetServices的任何平台上运OracleNetConfigurationAssistant。要启动OracleNetConfigurationAssistant: 在UNIX上,从$ORACLE_HOME/bin运行netca。确保“主机名”(HostName)已列入“所选命名方法”(SelectedNamingMethods)窗口。如果也选择了其它方法,应确保“主机名”(HostName)列在第一位。单击“下一步”(Next)以完成。您指定的内容将写入sqlnet.ora文件:#SQLNET.ORANetworkConfigurationFile:/u03/ora9i/rel12/network/admin/sqlnet.ora#GeneratedbyOracleconfigurationtools.NAMES.DEFAULT_DOMAIN=NAMES.DIRECTORY_PATH=(HOSTNAME),如果要支持多种命名方式,而已在括号内添加,但在前面优先级高主机命名就介绍到这里后面来点实验,大家就理解深一点了其实不管是什么命名,我总结起来就一句话告诉客户端,你要去哪个IP上的哪个端口,这个端口上监听的服务名是什么不过本地命名提供更多的选项,像failover,负载均衡之类的,这都是额外的,根本目的就前面那句话4. 本地命名方法本地命名方法是所有DBA最常用的,由于在数据库规模不大的情况下,会在所有的客户机的本机上单独配置网络连接命名方式,所以称为本地命名方式,如果本地客户机非常多,就要考虑集中命名方式,如LDAP等,我们后面介绍。4.1 本地命名的优点 提供了一种相对简单明了的解析服务名地址的方法。 对于使用不同协议的各个网络,可跨网络解析服务名。 可使用图形配置工具轻松配置。本地命名方法要求网络服务名存储在tnsnames.ora文件中。使用OracleNetConfigurationAssistant可轻松地添加网络服务名。4.2 OracleNetConfigurationAssistant下面使用OracleNetConfigurationAssistant创建本地命名步骤一、 选择本地命名方法从左边窗口选择一种命名方法添加到到右边窗口中,所选命名方法显示在右侧窗口中。缺省情况下,会预先选择“本地”(Local)、“主机名”(HostName)和OracleNames。单击“下一步”(Next)继续操作。您指定的内容将写入sqlnet.ora文件:#SQLNET.ORANetworkConfigurationFile:/u03/ora9i/rel12/network/admin/sqlnet.ora#GeneratedbyOracleconfigurationtools.NAMES.DEFAULT_DOMAIN=NAMES.DIRECTORY_PATH=(LOCAL,HOSTNAME)9I以后的版本已经改成TNSNAMES步骤二、 网络服务名配置注意本地命名涉及几个名词 网络服务名(network_service_name)它是一个别名,代表了要连接的LISTENER地址和数据库服务的信息。就好比黄页里小名片的名片简称,它代表名片里面的信息。注意,前面加了网络两个字(netservicename)就跟服务名(servicename)是两个不同的对象网络服务名(netservicename)是服务名(servicename)加LISTENER地址的简称它由下面字符组成a.zA.Z0.9_一个网络服务名可以有多组服务,可能关联了多个数据库或者实例。每个服务由单组描述信息组成。以上有两组描述来实现两套服务,两组服务组成一个描述LIST,就好比我们小名片里两个服务热线组成,分别代表红框和蓝框。单组描述信息主要有两种类型组成 LISTENER地址列表对单组描述列中可以有多个LISTENER,多个LISTENER也根据各自的特性,如FAILOVER和负载均衡分到各自LISTENER地址列表组地址列表可以有多个LISTENER及地址组成每个LISTENER地址信息包括 PROTOCOL 协议协议通常是BEQ,IPC,TCPIP,TCPIP,SDP等 HOST 主机地址 PORT 端口小于1024的端口由操作系统重要的进程保留,但是只要可能,ORACLE可允许LISTENER选择1to65535的任何一个端口, 将“本地”(Local)选作命名方法后,就可以通过从OracleNetServicesConfigurationAssistant选择“本地网络服务名配置”(LocalNetServiceNameConfiguration)选项按钮来配置网络服务名。对单组描述列中可以有多个LISTENER,多个LISTENER也根据各自的特性,如FAILOVER和负载均衡分到各自LISTENER地址列表组上图中3个hop,如果第1个连接失败,连接第2个,如果第2个失败,连接第3个一般RAC会用这个就是一个RAC的tns, 两个节点都设置上, 如果第一个节点连不上就连第2个, 网络服务名是一个简短且便于记忆的名称,它映射为网络地址,包含在tnsnames.ora文件中存储的连接描述符中。网络服务名是一个简短且便于记忆的名称,它映射为网络地址,包含在tnsnames.ora文件中存储的连接描述符中。用户只需了解正确的服务名即可建立连接,而无需了解完整的连接描述符。数据库在startup的时候会读tnsnames.ora文件, 将网络服务名解析为真正的地址步骤三、 添加网络服务名使用下一个窗口可创建、重新配置、删除、重命名或测试网络服务名。本示例中选择的是“添加”(Add)选项按钮。步骤四、 指定数据库版本指定数据库或服务是Oracle8i还是更高版本。较早的Oracle版本要求对监听程序进行额外配置,而Oracle8i或9i数据库和服务则不要求。步骤五、 指定服务名注意上图是真实的服务名,是我们数据库动态注册或静态注册的service_name或instance_name,sid。一般,这几个名字是一样的, 除非你单独设了service_names, 对于Oracle8i或Oracle9i数据库来说,接下来您必须输入标识数据库服务的数据库服务名。名称长度不能超过9个字符。该服务名通常是全局数据库名称,它由数据库名称(DB_NAME)和域(DB_DOMAIN)组合而成。全局数据库名称是数据库的缺省服务名,这是由初始化文件中的SERVICE_NAMES参数指定的.步骤六、 选择网络协议现在必须指定连接使用的网络协议。OracleNetServiceConfigurationAssistant中可用的协议只反映先前已经安装的那些协议。未安装的协议不出现在ConfigurationAssistant提供的协议列表中。注:在使用Oracle9i后,SPX不再是一种受支持的协议了步骤七、 配置主机名和端口号输入主机名和端口号,然后单击“下一步”(Next)。主机名输入您要连接并与之通信的数据库所在的机器的全限定名称。端口号输入端口号,OracleNet监听程序需要在此端口监视发送给服务器(主机)的连接请求。缺省情况下,ConfigurationAssistant将监听程序端口号设为1521。如果需要,可以指定备用端口号。步骤八、 测试服务信息现在可测试连接信息。选择“是,执行测试”(Yes,performatest)选项按钮,然后单击“完成”(Finish)继续操作步骤九、 测试结果如果输入的数据是正确的,连接便会成功。如果不正确,“详细资料”(Details)窗口会提供有用的诊断信息来排除连接故障。注意用于连接的缺省用户名是scott。如果没有这个用户,应单击“更改登录”(ChangeLogin)并输入有效的用户名和口令,然后重试连接。如果连接成功,则单击“下一步”(Next)继续操作。不要单击“取消”(Cancel),因为服务信息尚未保存。注:保存tnsnames.ora文件之后,也可使用tnsping实用程序从命令行测试网络服务名。例如:$tnspingU01TNSPingUtilityforSolaris:Version9 ProductionUsedparameterfiles:/u01/user01/NETWORK/ADMIN/sqlnet.ora/u01/user01/NETWORK/ADMIN/tnsnames.oraUsedTNSNAMESadaptertoresolvethealiasAttemptingtocontact(ADDRESS=(PROTOCOL=TCP)(HOST=stcsun02)(PORT=1701)OK(0msec)步骤十、 选择网络服务名接下来输入网络服务名的名称。缺省情况下,ConfigurationAssistant提供的名称是最初输入的数据库服务名。如果需要,也可输入一个更有意义或更具描述性的名称。单击“下一步”(Next)继续操作。步骤十一、 保存网络服务名选择“否”(No)选项按钮并单击“下一步”(Next)后,缺省情况下,服务名将保存到位于$ORACLE_HOME/network/admin目录下的tnsnames.ora文件中, 终于把这个步骤发完了直接修改tnsnames.ora文件更简单大家可以看下自己的内容有list的地方,一般可以放多个对应的条目5. sqlnet.ora文件大家对这个文件眼熟吗?sqlnet.ora文件用于控制OracleNetServices的操作方式。这个文件一般不用管的, 在我的经历中, 有几次也修改过, 我记得一个原因是alert报超时的错误, 有一个解决方案就是修改这个文件,加了一个参数, 还有就是bug了,不过一般不会遇到在UNIX上,该文件的缺省位置是$ORACLE_HOME/network/admin;在WindowsNT上, 文件的缺省位置是%ORACLE_HOME%networkadmin。通过定义TNS_ADMIN环境变量可覆盖缺省位置。这个环境变量大家用过吗?我告诉大家一个会用到的场景吧, 比如你需要堡垒机或者中转机去连接数据库主机时, 你可能没有堡垒机的管理员权限, 所以你不能修改tnsnames.ora文件, 这时你可以在你的用户下,配置TNS_ADMIN这个环境变量,指向你的tnsnames.ora文件.堡垒机就是为了安全起见,不让你直接访问主机,而是先登录这个机器,再中转到你需要登录的机器, 堡垒机一般有审计的, 你的操作都会被记录下来堡垒机一般就是一台win机器,你登录上去,再开个ssh或者putty之类的工具连接NAMES.DIRECTORY_PATH, 我们看下这个参数该参数可以控制OracleNetServices将网络服务名解析为连接描述符的方式。如果有多种方法,可以用逗号分隔开,并用圆括号括起来。网络服务将按照从左到右列出的方法顺序逐一解析网络服务名。一旦成功配置和测试了命名方法和网络服务名,则可使用任何Oracle客户机工具从客户机连接到服务器。下面看几个常见的TNS错误6. 故障排除下面将对常见错误以及纠正这些错误的方式加以说明。6.1 ORA-12154:“TNS:无法解析服务名”大家说这个错误是什么意思,怎么处理?原因:OracleNetServices找不到在tnsnames.ora配置文件中指定的连接描述符。大家可以按下面步骤判断并处理操作1. 检查tnsnames.ora文件是否存在以及是否可访问。2. 检查tnsnames.ora文件是否位于TNS_ADMIN环境变量指定的位置中。3. 在tnsnames.ora文件中,核实在连接字符串中指定的服务名已经映射为tnsnames.ora文件中的连接描述符。此外,还要核实文件中没有语法错误。4. 确认不存在sqlnet.ora文件的重复副本。5. 如果正从登录对话框连接,则应核实连接服务名前没有at符号()6.2 ORA-12198和ORA-12203ORA-12198:“TNS:找不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论