经常我们直接手动编辑c:\oracle\ora92\network\ADMIN\tnsname.ora后会有报错不能分解服务器。比如:
SERVICE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostaddress.com)(PORT = 1234))
)
(CONNECT_DATA =
(SERVICE_NAME = SERVICE)
)
)
以下是解决方法(斜体字的部分用实际的域名等代替):
方法之一是先看看是不是在c:\oracle\ora92\network\ADMIN\sqlnet.ora下面设置了domain,
NAMES.DEFAULT_DOMAIN = domain.net
如果有,把这一行用#号注释掉。有时候这样就可行了。
方法二:如果不行,试试以下方法:
先用命令窗口打 tnsping SERVICE
如果出现不能分解的报错,说明是真的不能连接,否则可能是其它代码错误(尤其是用bat连oracle的时候)。
那么用UltraEdit或者记事本打开tnsname.ora,看看
SERVICE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostaddress.com)(PORT = 1234))
)
(CONNECT_DATA =
(SERVICE_NAME = SERVICE)
)
)
这样的设置每一个SERVICE = 前面是不是都顶格的,正确格式SERVICE前不能有空格!很多不能连接都是因为,你在手动回车添加一个service的时候,UltraEdit给自动加了一个空格在行首。用Oracle自带的配置工具就不会有这个问题。
方法三:所以,如果方法二仍旧不能解决,那就用Oracle自带的配置向导,开始-》程序-》Oracle - Oracle Home92 -》 Configuration and Migration Tools-> Net Manager -> 本地-》服务命名
如果服务命名里面一个都显示不出来,那就把你的tnsname.ora里面不能连上的service删掉,留下能连上的,保存,重新点击“服务命名”,就会出来服务名,然后点左边的绿加号,鼠标放上去会显示“创建”的,就会有向导教你添加了。添加的时候关闭tnsname.ora,添完打开,就可以看到系统自动按照以上的格式把service添加进去了。
没有评论:
发表评论