在Oracle中,造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?

0    1091    5

👉 本文共约1553个字,系统预计阅读时间或需6分钟。

在Oracle中,造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?

答案:在执行“sqlplus / as sysdba”时可能会报“ORA-12547: TNS:lost contact”的错误,常见原因有如下几点:

1、查看操作系统内核参数是否无误

对于文件/etc/security/limits.conf中的“oracle hard stack”值至少应该是10240。

2、确认$ORACLE_HOME/bin/oracle文件权限和属主是否有问题(大多数人碰到的都是这个原因)

需要注意的是,在rac环境下需要查看$ORACLE_HOME/bin/oracle和$GRID_HOME/bin/oracle两个文件。

在没有安装GI的环境下,正确权限为:

在有grid用户的情况下,oracle可执行文件正确属主应该是oracle:asmadmin,并且权限必须有s才可以,如下所示:

文件权限的详细说明如下:

u:User,即文件或目录的拥有者。

g:Group,即文件或目录的所属群组。

o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。

a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

有关权限代号的部分,列表于下:

r:读取权限,数字代号为4。

w:写入权限,数字代号为2。

x:执行或切换权限,数字代号为1。

-:不具任何权限,数字代号为0。

s:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限。

如果权限不对,那么使用strace跟踪命令也可以看到如下信息:

在trace.1.log文件中可以看到如下的内容:

如果权限不对,那么可以执行以下命令进行修复:

值得注意的是,如果该文件的属组不对,那么在有磁盘组的环境中会报错“ORA-15040: diskgroup is incomplete”:

有时候,也会报错“ORA-12537: TNS:connection closed”,我们修复权限问题后,建议重启一下数据库,再进行校验。

3、检查一下环境变量

4、检查$ORACLE_HOME/bin/oracle和$ORACLE_HOME/rdbms/lib/config.o的文件大小是否为0

如果大小为0,那么需要先备份config.o文件,然后重新编译oracle软件:

需要注意的是,relink可能会报错,所以需要检查上边生成的日志文件$ORACLE_HOME/install/relink.log

5、检查$ORACLE_HOME/network/admin/sqlnet.ora文件中的内容

查看是否设置了限制某些IP地址登录的内容,此时可以通过查看监听日志的内容来确定。如果设置了限制登录的内容,则可以把tcp.validnode_checking设为no,或者在tcp.invited_nodes加入允许访问的IP或机器名。

6、检查监听日志文件的大小,确保监听日志文件的大小不能超过2G。如果超过2G,那么可以使用如下的方法解决:

7、检查文件/etc/hosts文件中是否含有以下内容:

必须确保/etc/hosts文件中含有127.0.0.1这行。

8、查看系统是否缺少必要安装包,例如glibc、glibc-devel、libaio、libaio-devel

9、使用操作系统跟踪命令跟踪sqlplus连接过程,从而观察跟踪文件

Linux系统的跟踪命令:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

Unix跟踪sqlplus进程:

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

5 × 3 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部