tnsnames.ora配置小结
解决ORATNS监听程序当前无法识别连接描述符中请求的服务

解决ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务错误原因分析:检查监听,发现未设置对服务名的监听(默认安装后不自动设置监听)当你的tnsnames.ora 文件中的SERVICE_NAME没有向你想要连接的数据库服务器中的监听器注册的时候,就会出现这个错误信息。
如果你的客户端配置没有发生变化,那么数据库服务器配置就必须进行改变,否则你用来进行连接的SERVICE_NAME就永远不会注册到监听器。
注册到监听器的SERVICE_NAME是由数据库实例的service_names参数来决定的。
解决办法:1. 打开文件"OracleHome/network/admin/listener.ora" ,你将看到如下的内容SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc)))2. 将下面的语句添加到上面的语句中去。
(SID_DESC =(GLOBAL_DBNAME = ORCL2)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME = ORCL2))3. 文件的内容则变成了如下所示SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = ORCL2)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME = ORCL2)))4. 保存文件,然后重新启动监听服务就可以了!问题解决主动跟被动的关系1.是让listener主动加载服务,原因是添加(SID_DESC =(SID_NAME = orcl)(ORACLE_HOME = /data/cache1/oracleDB/oracle/product/10.2.0/db_2) )后,在使用lsnrctl start监听程序时会将listene的服务注册到进程监视器(pmon)中。
ora-12545连接错误解决一例

ora-12545连接错误解决⼀例在远端客户端连接RAC数据库时,通过统⼀的服务名连接时经常会出现ORA-12545错误。
在METALINK上查询了⼀下,竟是Oracle的⼀个⼩bug。
环境:ORACLE 11G R2 RAC数据库,两节点。
现象:[oracle@ted35 ~]$sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期五 6⽉ 15 11:57:00 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> conn as sysdba;ERROR:ORA-12545: 因⽬标主机或对象不存在, 连接失败故障分析:⽤tnsping检查⼀下,发现可以ping通,这是因为tnsping只检查IP地址和端⼝是否能连通,⾄于数据库实例状态,监听注册了哪些服务这些,它是不检查的。
我们看⼀下本地数据库TNSNAMES的配置:TESTRAC =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.58.12.124)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.58.12.125)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = 10.58.12.124)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)))Oracle在⽂档Note:364855.1:RAC Connection Redirected To Wrong Host/IP ORA-12545中进⾏了描述,并给出了解决⽅法:修改数据库中的初始化参数LOCAL_LISTENER(注:这种⽅法在修改初始化参数后,需要重启监听,重启实例)SQL>conn / as sysdba;Connected.SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 10.58.12.124)(PORT = 1521)) 'SID ='prodb1';系统已更改。
oracle监听器启动出错:本地计算机上的oracleoradb11g home1tnsl

Oracle监听器启动出错:本地计算机上的OracleOraDb11ghome1TNSL...分类:Oracle一、错误描述登陆PL/SQLDeveloper登陆本地数据库时先报没有监听程序,查看服务发现Oracle监听服务没有启动。
右击启动监听程序,报错:错误描述:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了。
一些服务自动停止,如果它们没有什么可做的,例如"性能日志和警报"服务。
二、原因分析你安装oracle的时候是连网的,那么listener.ora文件里的HOST=网络给你分配的IP地址,而在你断网的时候就会出现这样的情况。
三、解决办法方法一:监听器通过listener.ora或者NetManager修改监听器配置。
将原来本地字符串127.0.0.1或者localhost改为主机名。
首先查阅你的**product11.2.0dbhome_1NETWORKADMIN目录下的"tnsnames.ora"和"listener.ora"这两个文件,然后看看里面的"HOST"信息,看看是不是你当前的ip地址,如果不是尝试着把这个2个文件改成你的ip地址,或直接就改成127.0.0.1(或计算机名字):注意:此时的监听配置文件"listener.ora"里面的HOST=的内容(IP或者主机名)必须和,服务配置文件"tnsnames.ora"里面,你想要链接的服务的HOST=的内容完全一致。
意思就是说要么都是IP地址,要么都是主机名。
如果有多个服务(NetManager中配置的网络服务)那么查看"tnsnames.ora"文件中与监听HOST内容一致的PL/SQL才可正常登录进去,否则无监听程序。
如:上面这里是"listener.ora"里面的HOST,我的是主机名。
Oracle 11g Gateway (ODBC)安装配置

Oracle 11g Gateway (ODBC)安装配置(UTF-8中文支持) 环境信息:操作系统:RHEL 6U4 64bitLANG使用:zh_CN.UTF-8Oracle 数据库版本:Oracle 11g database 11.2.0.1.0安装目录:/home/oracle/product/ora11g服务名称(ORACLE_SID):ora11gOracle Gateway版本:Oracle 11g gateway 11.2.0.1.0安装目录:/home/gateway/product/gateway服务名称(ORACLE_SID):gatewayGbase 8t数据库版本:Gbase 8t V8.5 12.10.FC4G1AEE_1.6.3.43安装目录:/home/gbase8t/8t服务名称(INFORMIXSERER):gbase8tInformix CSDK版本:Informix CSDK 4.10.FC7安装目录:/home/gbase8t/8t连接方式:Oracle Database通过dblink连接到Gateway;Gateway通过CSDK提供的ODBC驱动(unixODBC),访问Gbase 8t/Informix数据库。
组件安装1,Oracle 11g database安装详细过程略Oracle database使用的环境如下:安装时选上中文支持,数据库的字符集使用AL32UTF8。
数据库安装时,如果LANG=zh_CN.UTF-8时,界面有乱码,可使用LANG=en_US.UTF-8来安装。
另一种方式是将中文字体zysong.ttf放到操作系统的/usr/share/fonts/zh_CN/TrueType/目录下。
2,Gbase 8t database安装详细过程略3,Informix CSDK安装详细过程略Gbase 8t database和Informix CSDK使用的环境如下:4,Oracle gateway安装详细过程a.创建gateway 用户,并设置密码[root@rhel64 ~]# useradd -g oinstall -G dba -d /home/gateway -m -s /bin/bash gateway[root@rhel64 ~]# passwd gatewayb.设置用户环境变量:c.解压缩gateway安装包,然后在窗口模式下执行安装[gateway@rhel64 soft]$ unzip linux.x64_11gR2_gateways.zip[gateway@rhel64 soft]$ cd gateways开始安装./runInstaller增加产品语言支持,选上简体中文,服务名使用gateway安装组件选上:Oracle Database Gateway for InformixOracle Database Gateway for ODBC注:仅使用ODBC时,不需要安装Oracle Database Gateway for Informix若选了Gateway for Informix,会要求指定Informix服务器信息开始安装组件如果gateway与oracle database安装在同一个服务器上,可以不用再执行root.sh组件安装完成后,自动调用netca,创建LISTENER如果gateway和oracle database在同一台服务器,需要指定不同的LISTENER端口,这里指定为1522完成网络配置后,整个安装过程完成。
Oracle导dmp出现文件ORA-12154:TNS:无法解析指定的连接标识符问题的解决方案

Oracle导dmp出现⽂件ORA-12154:TNS:⽆法解析指定的连接标识符问题的解决⽅案其实TNS⽆法解析是Oracle操作⾥经常遇到的问题,原因有⼆:(1)Oracle服务器没有装好(⼀般不建议重装,因为Oracle卸载不完全是没法重装的)(2)TNS没有配置现在本⽂给出解决⽅案:现在先测试⼀下tns是否可以ping,成功的界⾯⼤致如下(1)在oracle安装路径的tns配置⽂件⾥添加如下代码# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)))其中orcl是我的数据库名称,这个需要根据需要配置(2)配置TNS环境变量环境变量类似于:D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN补充:下⾯给出Oracle数据库还原的步骤⽰例1、将TESTDB.bmp放置在dpdump⽬录,如下路径:E:\app\Administrator\admin\orcl\dpdump2、创建⽤户create user testdb65 identified by “testdb65” default tablespace users temporarytablespace temp;⽤户授权grant connect,dba to testdb65;3、创建表空间CREATE TABLESPACE NNC_DATA01 DATAFILE ‘D:\tablespace\nnc_data01.dbf' SIZE 500MAUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;CREATE TABLESPACE NNC_INDEX01 DATAFILE ‘D:\tablespace\nnc_index01.dbf' SIZE 100MAUTOEXTEND ONNEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;4、导⼊ bgyhr2是来源库impdp testdb65/testdb65@orcl schemas=testdb65 dumpfile=TESTDB65.dmpimpdp ncjob65/ncjob65@orcl schemas=testdb65 dumpfile=TESTDB65.dmp导出 scott 是要导出的库expdp lfwtrain/a@orcl schemas=当前⽤户 dumpfile=expdptest.dmp以上所述是⼩编给⼤家介绍的Oracle导dmp出现⽂件ORA-12154: TNS: ⽆法解析指定的连接标识符问题的解决⽅案,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
Oracle数据库监听配置

近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server)。
本文现对监听配置作一简单介绍,并提出一些客户终端无法连接服务器端的解决思路,愿对广大网友与读者有一些帮助。
一、监听器(LISTENER)监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。
既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。
二、本地服务名(Tnsname)Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。
本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。
Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。
三、Oracle网络连接配置方法配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle服务端或客户端的配置)。
在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如:$ netmgrWindows下启动Net Manager图形窗口如下图示:图(一)1、 Oracle监听器配置(LISTENER)如图(一)示,选中树形目录中监听程序项,再点击左上侧“+”按钮添加监听程序,点击监听程序目录,默认新加的监听器名称是LISTENER(该名称也可以由任意合法字符命名)。
解决ora-12541TNS无监听程序
解决ora-12541TNS⽆监听程序plsql远程访问数据库解决ora-12541:TNS:⽆监听程序本机为win7 32位系统,为了学习oracle,装了个vbox虚拟机,再装了个win7虚拟机,内装oracle 11g(win7如果要装10g,要选择vista版本,win版本会安装报错).oracle11g安装完后有报了个错误,当时没注意,现在也忘了什么错了,但是不影响使⽤.后来想在本机安装plsql来远程连接虚win7上的oracle.查了⼀些资料,步骤如下:1.下载plsql,安装.2.下载Instant Client,点击下载,下载第⼀个basic就⾏了,下载完解压缩,以放到主win7 d盘根⽬录为例:d:\instantclient_11_23.在d:\instantclient_11_2新建tnsnames.ora,⽤记事本编辑.4.到虚win7上的oracle安装⽬录找到 …\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,打开,⽐如数据库实例是orcl,找到如下代码,拷贝到本机d:\instantclient_11_2\tnsnames.ora⾥ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 虚拟机IP)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))5.添加⼀个环境变量,名为TNS_ADMIN,值为tnsnames.ora⽂件所在路径d:\instantclient_11_2\tnsnames.ora,plsql通过这个找到orcl连接字符串6.添加⼀个环境变量NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK7.打开PLSQL,不⽤登陆,⼯具-⾸选项-ORACLE-连接:勾选检查连接Oracle主⽬录: d:\instantclient_11_2OCI库: d:\instantclient_11_2\oci.dll经过以上⼏步之后,重启PLSQL,问题来了,报错:ora-12541:TNS:⽆监听程序. ping是可以ping得通的,虚win7上的监听也开着.经过不懈的努⼒,多次试验终于解决了:1.虚拟机⽹络选择桥接,并在虚拟机内⽹络连接IPV4设置静态IPIP地址:192.168.1.111 (111可修改成⾃⼰的 1-255)⼦⽹掩码:255.255.255.0默认风头:192.168.1.1⾸选DNS服务器:192.168.1.1修改完记得主win7上 ping 192.168.1.111 ping得通再继续往后.2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.oraSID_NAME = CLRExtProc 改为 SID_NAME = orcl orcl是实例名HOST = localhost 改为 HOST = 192.168.1.1113.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora两处 HOST = localhost 改为 HOST = 192.168.1.111SID = CLRExtProc 改为 SID = orcl好了,重启oracle,监听,主win7上的plsql就可以远程连接虚拟机上的数据库了.。
登陆时出现错误提示 ora-12154tns无法解析指定的连接标识符
1.在登陆sql plus时老是出现错误提示 ora-12154:tns:无法解析指定的连接标识符pl/sql 每当oracle client中service name发生变化,都会按照client安装目录下最新的tnsnames.ora,去作为它的读取文件;如果该文件在卸载oracle client后被手工删除或手工改动过后,未在oracle client 中修改;则会报“ORA-12514:tns:无法解析指定的连接标识符”错误。
解决方法:1、用tnsping <service_name>检测 plSQL登陆时database(数据库)别名是否可正确解析,如报“TNS-03505:无法解析名称”,则此database别名有冲突,需更改。
2、手工改动tnsnames.ora后,在oracle client中修改主机名(“对象”--“将数据库添加到树”--“从本地的……”,然后把错误主机名删除或从树中移除)3、重新打开plSQL,用正确的database别名登陆,即恢复正常4、如仍有问题,不登陆进入plSQL界面,进入"tools”--"Preferences"--"Oracle"--"Connection",把"home”(oracle主目录名)里的数据清空,应用后,重新启动plSQL即可。
附录:在做以上更改后oracle自带的sqlPLUS,可能会出现不能正常登陆远程服务器的情况;因为其访问的是database下的tnsnames.ora文件,目录与client的不一样,默认为 X(盘符):\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora解决方法:只需将client下tnsnames.ora中定义的主机字符串(service_name)的命令行复制到database 下的tnsnames.ora内,然后保存就可以了。
RAC报告
部署RAC实训报告一前言 (4)二实验内容 (5)三实验目的 (5)四实验目标 (5)五实验过程 (5)(一) 安装前准备 (5)1. 准备oracle集群软件安装介质 (5)2. Linux虚拟机准备 (5)3. 主机规划 (5)(二) 配置操作系统环境 (6)1. 创建oracle用户以及dba,oinstall组 (6)2. 配置host,确保hostname能访问 (6)3. 配置内核控制参数 (6)4. 配置oracle用户权限 (7)5. 安装包oracleasm-2.6.18-238.el5-2.0.5-1.el5.i686.rpm (7)6. 配置裸设备 (8)7. 创建oracle安装目录 (9)8. 配置ssh信任 (9)9. 配置oracle用户环境变量 (10)10. 使用集群检查程序来确认clusterware的配置 (10)(三) 安装cluster软件 (10)1. 修改oracle检测文件 (10)2. 弹出欢迎使用的窗口 (10)3. 修改crs的home (12)4. Specify Cluster Configuration配置 (13)5. 添加crs节点 (14)6. 网卡配置 (16)7. 配置OCR以及voting磁盘位置 (18)8. 安装并运行脚本 (19)9. 配置vip服务 (22)10. 安装完成 (26)(四) 安装database软件 (28)1. 修改oracle检测文件 (28)2. 弹出欢迎使用的窗口 (28)3. 选择版本 (29)4. 选择安装路径 (30)5. 节点选择 (31)6. 配置安装并允许脚本 (32)7. 安装完成 (35)(五) 配置Oracle NET (36)1. RAC监听的配置 (37)2. 使用一下命令查看监听状态 (41)3. RAC监听的启动和停止 (41)(六) 配置ASM (41)1. 分发安装ASM (41)2. 配置ASM (41)3. 创建ASM磁盘 (42)4. 在双节点上使用root用户列出ASM磁盘 (42)5. 删除ASM磁盘 (42)(七) 运行DBCA创建数据库 (42)1. 启动DBCA工具 (42)2. Oracle Real Application Cluster数据库 (43)3. 启动asm实例 (43)4. 选择所有节点 (44)5. 配置ASM实例密码 (45)6. 点击OK进行ASM实例的创建 (45)7. 点击“create new”创建新磁盘组。
plsql连接数据库的三种方式
plsql连接数据库的三种⽅式本地pc机上的plsql连接本地Oracle库和其他远程环境的Oracle database库,都必须通过本地pc机上的client配置连接,client连接有三种配置⽅式:⽅式⼀:只需要在本地安装oracle client的tnsnames.ora⽂件中,添加TNS(连接串)即可;tnsnames.ora⽂件所在的⽬录,这个要看⾃⼰的Oracle安装⽬录,每个⼈的安装⽬录可能不⼀样,本⼈的安装⽬录在F盘,所以在下列⽬录下:F:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN在这个⽂件中,添加TNS信息之后,点击保存即可;TEST=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = testlg)(SERVER = DEDICTED)))然后打开plsql登录界⾯,数据库下拉选中,可以找到刚配置的TNS服务名称,对应关系如下图:⽅式⼆:通过oracle client图形界⾯来配置数据库连接(推荐):Net Manager图形配置⼯具对Oracle客户端进⾏配置,该配置⼯具实际上是修改Oracle client的tnsnames.ora⽂件,推荐使⽤这种图形界⾯⽅式。
选择服务名称,点击新增:这个⽹络服务名是⾃⼰给数据库连接起的⼀个名字,就是plsql下拉选中显⽰的名称,可以⾃⼰定义;⼀般连接的协议都是tcp,如果没有特殊情况,都选择这个协议:这个主机名⼀般都是主机ip,如果是本地库,就写本地ip,如果是远程库,就写远程ip:服务名是远程数据库名称,当然,这个也可以配置本地数据:最后关闭时,会提⽰是否保存,⼀定要保持之后,才能写⼊到tnsnames.ora⽂件中⽣效:查看tnsnames.ora⽂件如下,然后打开plsql登录,下拉可以看到对应的名称,和直接修改tnsnames.ora是⼀样的效果:⽅式三:通过instant client来配置数据库连接:Instantclient是oracle连接的⼀个客户端之⼀,通常只是登录使⽤,功能⽐较简单,相⽐oracle client⽽⾔,功能要简单的多,体积⼩,轻量级;具体使⽤如下:1.下载对应版本的Instantclient(注意32位和64位),有免安装版的,⽹上都很多教程;2.然后打开plsql不登录,打开界⾯,然后配置Instantclient客户端路径:配置连接,将instantclient配置进去,例如我的instantclient的位置如下:Oracle主⽬录名:F:\Oracle\instantclientx32\instantclient_12_2OCI库:F:\Oracle\instantclientx32\instantclient_12_2\oci.dll此处配置好之后,提⽰下次登录⽣效,然后关闭plsql;3.配置TNS连接:找到instantclient客户端的TNS配置⽂件,然后将数据库的TNS连接串配置进去:例如我的TNS配置⽂件位置:然后将TNS配置到这个⽂件中:配置好之后,保存就可以了;4.打开plsql登录:plsql登录界⾯登录:这⾥要注意的是,这个数据库指的是刚配置中的⾃定义连接名,⽽且要⼿动输⼊,下拉选中没有配置的选项,但是不影响连接;(oracle client客户端可以看到配置的选项;)上述的三种⽅式配置实际上是两种,前两种是oracle client的不同配置⽅式,第三种是instant client的配置,这三种配置可以是本地库,也可以是远程库,配置好之后,在plsql登录的时候可以根据需要来选择;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tnsnames.ora配置小结 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下。 1. sqlnet.ora—–作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。 例如我们客户端输入 sqlplus sys/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等并不常用。 2. Tnsnames.ora——这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似 NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。 PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。 HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在 hosts文件中加入数据库侦听所在的机器的机器名的解析。 PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。 SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。 ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接 #你所要连接的时候输入得TNSNAME ORCL = (DESCRIPTION = (ADDRESS_LIST = #下面是这个TNSNAME对应的主机,端口,协议 (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = #使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节 (SERVER = DEDICATED) #对应service_name,SQLPLUS>;show parameter service_name; 进行查看 (SERVICE_NAME = orcl) ) ) #下面这个类似 SALES = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) ) ) 注意:如果数据库服务器用MTS,客户端程序需要用database link时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLE BUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。 3. listener.ora——listener监听器进程的配置文件 关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。 Listener.ora文件的例子 #listener.ora Network Configuration File: #E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.ora # Generated by Oracle configuration tools. #下面定义LISTENER进程为哪个实例提供服务 这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME 其中GLOBAL_DBNAME不是必需的除非 #使用HOSTNAME做数据库连接 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = boway) (ORACLE_HOME = E:/oracle/product/10.1.0/Db_2) (SID_NAME = ORCL) ) ) #监听器的名字,一台数据库可以有不止一个监听器 #再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名 LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521)) ) 上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。 监听器的操作命令 $ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。 上面说到的三个文件都可以通过图形的配置工具来完成配置 $ORACLE_HOME/netca 向导形式的 $ORACLE_HOME/netmgr 本人比较习惯netmgr, profile 配置的是sqlnet.ora也就是名称解析的方式 service name 配置的是tnsnames.ora文件 listeners配置的是listener.ora文件,即监听器进程 具体的配置可以尝试一下然后来看一下配置文件。 这样一来总体结构就有了,是 当你输入sqlplus sys/oracle@orcl的时候 1. 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME 2. 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name 3. 如果listener进程没有问题的话,建立与listener进程的连接。 4. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。 5. 这时候网络连接已经建立,listener进程的历史使命也就完成了。 #————— 几种连接用到的命令形式 1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程 2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程 3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。 以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。 init.ora中的Remote_Login_Passwordfile对身份验证的影响 三个可选值: NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限 EXCLUSIVE: 1.表示只有一个数据库实例可以使用密码文件 2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户 SHARED: 1.表示可以有多个数据库实例可以使用密码文件 2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户 所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE 当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用 户,则名称为:domainname/yourname,如果是本地计算机用户,则名称为:computername/yourname 创建方法: create "domainname/yourname" identified externally; 操作系统,修改HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0下面添加AUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略 掉域名