1、已使用 TNSNAMES 适配器来解析别名Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.33.11)(PORT = 1521) (CONNECT_DATA = (SERVICE_NAME = eygle)OK (30 毫秒)当设置参数之后:oraclejumper admin$ cat sqlnet.ora # SQLNET.ORA Network Configuration File: /opt/oracle/product/9.2.0/networ
2、k/admin/sqlnet.ora# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)tcp.validnode_checking=yestcp.invited_nodes=(172.16.33.11,172.16.34.89)重新启动监听器使设置生效:oraclejumper admin$ lsnrctl startLSNRCTL for Linux: Version 9.2.0.4.0 - Production on 28-JAN-2008 14:42:01
3、Copyright (c) 1991, 2002, Oracle Corporation.Starting /opt/oracle/product/9.2.0/bin/tnslsnr: please wait.TNSLSNR for Linux: Version 9.2.0.4.0 - ProductionSystem parameter file is /opt/oracle/product/9.2.0/network/admin/listener.oraLog messages written to /opt/oracle/product/9.2.0/network/log/listene
4、r.logTrace information written to /opt/oracle/product/9.2.0/network/trace/listener.trcListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.33.11)(PORT=1521)Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)STATUS of the LISTENER-Alias LISTENERVersion TNSLSNR f
5、or Linux:Start Date 28-JAN-2008 14:Uptime 0 days 0 hr. 0 min. 0 secTrace Level supportSecurity ONSNMP OFFListener Parameter File /opt/oracle/product/9.2.0/network/admin/listener.oraListener Log File /opt/oracle/product/9.2.0/network/log/listener.logListener Trace File /opt/oracle/product/9.2.0/netwo
6、rk/trace/listener.trcListening Endpoints Summary.Services Summary.Service eygle has 1 instance(s). Instance , status UNKNOWN, has 1 handler(s) for this service.juliaThe command completed successfully我们再来看客户端的访问:53:19已使用的参数文件:TNS-12547: TNS: 丢失连接需要注意的是一定要将本地地址,或者Cluster群集其他节点的地址都加入到允许列表,否则监听器可能无法启动。修
7、改参数之后,重启监听器设置即可生效。通过监听器的限制,通常属于轻量级,比在数据库内部通过触发器进行限制效率要高。oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora来源: ChinaUnix博客 日期: 2008.06.20 14:15(共有0条评论) 我要评论oracle网络配置三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOMEnetworkadmin目录下。1.sqlnet.ora-作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一
8、个连接中出现的连接字符串。例如我们客户端输入sqlplus sys/oracleorcl假如我的sqlnet.ora是下面这个样子SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的 ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名如果我是这个样子NAMES.DIRECTORY_PATH=
9、(TNSNAMES)那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用。2.Tnsnames.ora-这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数
10、据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在 hosts文件中加入数据库侦听所在的机器的机器名的解析。PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status lis
11、tener name命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus show parameter service_name命令察看。ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接#你所要连接的时候输入得TNSNAMEORCL =(DESCRIPTION =(ADDRESS_LIST =#下面是这个TNSNAME对应的主机,端口,协议(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1
12、521)(CONNECT_DATA =#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节(SERVER = DEDICATED)#对应service_name,SQLPLUS;show parameter service_name; 进行查看(SERVICE_NAME = orcl)#下面这个类似SALES =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521)(SERVICE_NAME = sales)注意:如果数据库服务器用MTS,客户端程序需要用database link时最好明
13、确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLE BUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。3.listener.ora-listener监听器进程的配置文件关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。Listener.ora文件的例子#listener.ora Network Configuration File: #E:ora
14、cleproduct10.1.0Db_2NETWORKADMINlistener.ora#下面定义LISTENER进程为哪个实例提供服务 这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME 其中GLOBAL_DBNAME不是必需的除非#使用HOSTNAME做数据库连接SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = boway)(ORACLE_HOME = E:oracleproduct10.1.0Db_2)(SID_NAME = ORCL)#监听器的名字,一台数据库可以有不止一个监听器#再向下面是监
15、听器监听的协议,端口等,这里使用的端口,并且使用的是主机名LISTENER =(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521)上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。监听器的操作命令$ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。上面说到的三个文件都可以通过图形的配置工具来完成配置$ORACLE_HOME/netca 向导形式的$ORACLE_HOME/netmgr本人比较习惯ne
16、tmgr,profile 配置的是sqlnet.ora也就是名称解析的方式service name 配置的是tnsnames.ora文件listeners配置的是listener.ora文件,即监听器进程具体的配置可以尝试一下然后来看一下配置文件。这样一来总体结构就有了,是当你输入sqlplus sys/oracleorcl的时候1 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME2 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name3 如果listener进程没有问题的话,建立与listener进程的连接。4 根据不同的
17、服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。5 这时候网络连接已经建立,listener进程的历史使命也就完成了。#-几种连接用到的命令形式1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程3.sqlplus sys/oracleorcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。以上连接方式使用sy
18、s用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。init.ora中的Remote_Login_Passwordfile对身份验证的影响 三个可选值: NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限 EXCLUSIVE: 1.表示只有一个数据库实例可以使用密码文件 2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户 SHARED: 1.表示可以有多个数据库实例可以使用密码文件 2.不允许将SYSO
19、RA和SYSOPER权限赋值给SYS以外的其它用户 所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE 当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用 户,则名称为:domainnameyourname,如果是本地计算机用户,则名称为:computernameyourname 创建方法: create domainnameyourname identified externally; 操作系统,修改HKEY_LOCAL_MACHINESOFTWAREO
20、RACLEHOME0下面添加AUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名 这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户os_authent_prefix = 缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)关于域名(主机名)解析/etc/hosts (UNIX)或者windowshosts(WIN98)winntsystem32driversetchosts (WIN2000)客户端需要写入数据库服务器IP地址和主机名的
21、对应关系。127.0.0.1 localhost192.168.0.35 oracledb oracledb192.168.0.45 tomcat tomcat202.84.10.193bj_db有些时候我们配置好第一步后,tnsping 数据库服务器别名显示是成功的,但是sqlplus username/passwordservicename不通,jdbc thin link 也不通的时候,一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。编辑前最好留一个备份
22、,增加一行时也最好用复制粘贴,避免编辑hosts时空格或者tab字符错误。UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量ORACLE_SID=appdb;export ORACLE_SIDTWO_TASK=appdb;export TWO_TASK 来指定默认的目标数据库#-平时排错可能会用到的1lsnrctl status查看服务器端listener进程的状态LSNRCTL helpThe following operations are availableAn asterisk (*) denotes a modifier or extended command:
23、start stop statusservices version reloadsave_config trace change_passwordquit exit set*show* status:em11:2tnsping 查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。tnsping orcl Version 10.1.0.2.0 - Production on 16-8月 -2005 09:36:08Copyright (c) 1997, 2003, Oracle. All rights reserved.Used
24、parameter files:E:oracleproduct10.1.0Db_2networkadminsqlnet.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)OK (20 msec)3SQLshow sga 查看instance是否已经启动 select open_mode from v$database; 查看数据库是打开还是mount状态。OPEN_MODE-READ WRITE使用hostname访问数据库而不是tnsname的例子使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1