版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle监听配置及访问方式完全解析(原创)Oracle网络配置三个配置文件listener.ora、sqlnet.ora、tnsnames.ora,都是放在$ORACLE_HOME\network\admin目录下。sqlnet.ora 作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。例如我们客户端输入sqlplussys/oracle@orcl假如我的sqlnet.ora是下面这个样子SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名如果我是这个样子NAMES.DIRECTORY_PATH=(TNSNAMES)那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用。Tnsnames.ora 这个文件类似于unix的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH=(TNSNAMES)这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(forWINDOWS)orifconfig(forUNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctlstatus[listenername]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus>showparameterservice_name命令察看。ORCL:对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接#连接的时候输入的TNSNAMEORCL=(DESCRIPTION=(ADDRESS_LIST=#下面是这个TNSNAME对应的主机,端口,协议(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节(SERVER=DEDICATED)#对应service_name,SQLPLUS>;showparameterservice_name;进行查看(SERVICE_NAME=orcl)))#下面这个类似SALES=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sales)))注意:如果数据库服务器用MTS,客户端程序需要用databaselink时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLEBUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。listener.ora listener监听器进程的配置文件关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,并且不需要使用OEM时,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。Listener.ora文件的例子#listener.ora Network Configuration File:#E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora#GeneratedbyOracleconfigurationtools.#下面定义LISTENER进程为哪个实例提供服务这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME其中GLOBAL_DBNAME不是必需的除非#使用HOSTNAME做数据库连接SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=boway)(ORACLE_HOME=/u01/app/oracle)(SID_NAME=ORCL)))#监听器的名字,一台数据库可以有不止一个监听器#再向下面是监听器监听的协议,ip,端口等,这里使用的tcpl521端口,并且使#用的是主机名LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。监听器的操作命令$ORACLE_HOME/bin/lsnrctlstart,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。上面说到的三个文件都可以通过图形的配置工具来完成配置$ORACLE_HOME/netca向导形式的$ORACLE_HOME/netmgr本人比较习惯netmgr,profile配置的是sqlnet.ora也就是名称解析的方式servicename配置的是tnsnames.ora文件listeners配置的是listener.ora文件,即监听器进程具体的配置可以尝试一下然后来看一下配置文件。这样一来总体结构就有了不同的连接方式连接过程当你输入sqlplussys/oracle@orcl的时候.查询sqlnet.ora看看名称的解析方式,发现是TNSNAME.则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name.如果listener进程没有问题的话,建立与listener进程的连接。.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的 serverprocess。.这时候网络连接已经建立,listener进程的历史使命也就完成了。# 几种连接用到的命令形式sqlplus/assysdba这是典型的操作系统认证,不需要listener进程sqlplussys/oracle这种连接方式只能连接本机数据库,同样不需要listener进程sqlplussys/oracle@orcl这种方式需要listener进程处于可用状态。最普遍的通过网络连接。以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,数据库用户认证放是由于采用数据库认证,所以数据库必需处于open状态。如作为普通用户进行登录[oracle@dg1admin]$sqlplussys/oracleSQL*Plus:Release10.2.0.1.0-ProductiononSunFeb1316:18:332011Copyright(c)1982,2005,Oracle.Allrightsreserved.ERROR:ORA-01034:ORACLEnotavailableORA-27101:sharedmemoryrealmdoesnotexistLinuxError:2:NosuchfileordirectoryEnteruser-name:initSID.ora中的Remote_Login_Passwordfile对身份验证的影响三个可选值:NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限EXCLUSIVE:表示只有一个数据库实例可以使用密码文件允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户SHARED:表示可以有多个数据库实例可以使用密码文件不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE关于域名(主机名)解析/etc/hosts(UNIX)或者windows\hosts(WIN98)winnt\system32\drivers\etc\hosts(WIN2000)客户端需要写入数据库服务器IP地址和主机名的对应关系。127.0.0.1dg1192.168.0.35oracledboracledb192.168.0.45tomcattomcat202.84.10.193bj_dbbj_db有些时候我们配置好第一步后,tnsping数据库服务器别名显示是成功的,但是sqlplususername/password@servicename不通,jdbcthinlink也不通的时候,一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。编辑前最好留一个备份,增加一行时也最好用复制粘贴,避免编辑hosts时空格或者tab字符错误。UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量ORACLE_SID=appdb;exportORACLE_SIDTWO_TASK=appdb;exportTWO_TASK来指定默认的目标数据库平时排错可能会用到的.lsnrctlstatus查看服务器端listener进程的状态LSNRCTL>helpLSNRCTL>statusLSNRCTL>services.tnsping查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。[oracle@dg1dbs]$tnspingorclTNSPingUtilityforLinux:Version10.2.0.1.0-Productionon13-FEB-201116:48:06Copyright(c)1997,2005,Oracle.Allrightsreserved.Usedparameterfiles:/u01/app/oracle/network/admin/sqlnet.oraUsedTNSNAMESadaptertoresolvethealiasAttemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))(CONNECT_DATA=(SID=orcl)))OK(10msec).查看instance是否已经启动SQL>selectinstance_name,host_name,statusfromv$instance;查看数据库是打开还是mount状态。SQL>selectopen_modefromv$databaseINSTANCE_NAME STATUSorcl OPEN使用hostname访问数据库而不是tnsname的例子使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据库就没有了这个麻烦。查看数据库名SQL>selectnamefromv$database;NAMEORCL需要修改服务器端listener.ora#监听器的配置文件listener.ora#使用hostnaming则不再需要tnsname.ora文件做本地解析listener.ora Network Configuration File:d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\listener.oraGeneratedbyOracleconfigurationtools.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(SID_NAME=orcl)(GLOBAL_DBNAME=ORCL)(ORACLE_HOME=/u01/app/oracle)(PROGRAM=extproc)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521))))客户端sqlnet.ora如果确认不会使用TNSNAME访问的话,可以去掉TNSNAMESsqlnet.ora Network Configuration File:d:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\sqlnet.oraGeneratedbyOracleconfigurationtools.SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(HOSTNAME)Tnsnames.ora文件不需要配置,删除也无所谓。下面就是网络和操作系统的配置问题了,怎么样能够解析我的主机名的问题了可以通过下面的方式连接sqlplussys/oracle@orcl这样的话,会连接orcl这台服务器,并且listener来确定你所要连接的service_name客户端连接服务器端常见问题排除方法 要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。下面列出几种常见的连接问题:1、 ORA-12541:TNS:没有监听器显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:$lsnrctlstart或C:lsnrctlstart2、 ORA-12500:TNS:监听程序无法启动专用服务器进程对于Windows而言,没有启动Oracle实例服务。启动实例服务:C:oradim-startup-sidmyoracle3、 ORA-12535:TNS:操作超时 出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。4、 ORA-12154:TNS:无法处理服务名 检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件 (Windows下如D:oracleora92networkadmintnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。5、 ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME打开NetManager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。6、ORA-12518TNS:监听程序无法分发客户机连接 出现该报错有两个原因:在共享模式下是由于调度进程(dispatchers)太少,在独占模式下是由于进程数(processes)超过了数据库默认的最大进程数。解决步骤:1、showparame
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030脑科学大数据隐私保护方案与科研伦理审查标准
- 电力施工吊车施工方案
- 跳蚤主题活动方案策划
- 武汉茶会活动策划方案
- 大学营销方案总结
- 蚌埠疫情应急预案
- 金思源营销方案
- 停电应急预案评审
- 水族店营销方案
- 宅寂风格室内设计说明
- 2025至2030年中国海底电缆行业市场发展监测及投资潜力预测报告
- 2025至2030年中国微电网技术行业发展趋势预测及投资战略咨询报告
- 业务奖励分配管理办法
- 2025年交通运输局公务员遴选模拟题及备考指南
- 2025年中国生成式AI(GenAI)最佳实践 Agentic AI下的任务重构、决策与创新
- 松材线虫病防治服务投标方案
- 《数字经济发展与治理》课件 Ch6. 人工智能与经济发展
- 绘本教学促进中班幼儿语言表达能力的策略研究
- 平安银行抵押合同范本
- 素描球体教学课件
- 2025年医疗器械采购、收货、验收的管理制度
评论
0/150
提交评论