星期四, 六月 28, 2007

Oracle连接不识别的格式问题

经常我们直接手动编辑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添加进去了。

没有评论: