ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 处理tns不存在

处理tns不存在

原创 Linux操作系统 作者:linyu2012 时间:2013-02-16 09:50:20 0 删除 编辑

       新年后第一天,就接到同事的一个邮件,问题是在抽取数据时提示TNS不存在,在2月7号还可以,之后就连不上了,请求帮忙解决。刚过来上班头一蒙,如何查起呢,慢慢地就思路整出来了,一步一步解决。

    首先从他邮件上的那个用户A1入手,在A库上去提取B库上的数据,但因没有他提供的用户帐号密码,只能从另外一个用户A2入手,查询下all_db_links表中db_link去找出host,再到host上去查看是否TNS有开启来。

A库的数据库版本是10.2.0.3.0

B库的数据库版本是10.2.0.4.0

  1、在A库上,用另一个用户A2上去查看下,发现没有邮件上提供的db_link,原因是提供的db_link是A1私有的的链接,不允许别的用户查看。迅速进入A库主机上用SYS用户进行查看,还是发现没该db_link链,应该用dba_db_links就可以了。

USER_DB_LINKS describes the database links owned by the current user. This view does not display the OWNER column.

ALL_DB_LINKS describes the database links accessible to the current user.

DBA_DB_LINKS describes all database links in the database.

常用习惯ALL_DB_LINKS就是所有的用户,这是个误区,实际上就包括当前用户及一些定义类型为public的数据链。

 2、查出后,在A库上查看tnsping下是否能ping通?ping不通后,可发现IP地址是192.168.11.165 与B库上的IP地址是192.168.11.168不相同,但是SID是相同的。纳闷了一下,在B库上,用lsnrctl status 命令查看又是显示没有监听程序,no listener ,应该是命令后面要加查看的实例名如lsnrctl status sid 。再查PS下,发现在2月7号早上9点多有重新加载或重启过TNS,造成了TNS上的IP只变成了168上,用命令netstat -n | grep 1521 | more ,而在A库上只是指向165上。实际上165与168是同一台机器,只是一个是浮动IP。

1、listener.ora配置文件中指定用户名的问题。

2、165与168是同一台机器,

3、将A库上tnsnames.ora中数据库链指向165更改为168就可以了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15242702/viewspace-754137/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-10-10

  • 博文量
    26
  • 访问量
    28403