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

网友投稿 2786 2022-10-12

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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

♣问题在Oracle中,造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?     ♣答案  在执行“sqlplus as sysdba”时可能会报“ORA-12547: TNS:lost contact”的错误,常见原因有如下几点:1、查看操作系统内核参数是否无误 1core file size          (blocks, -c) 0 2data seg size           (kbytes, -d) unlimited 3scheduling priority             (-e) 0 4file size               (blocks, -f) unlimited 5pending signals                 (-i) 16384 6max locked memory       (kbytes, -l) 32 7max memory size         (kbytes, -m) unlimited 8open files                      (-n) 1024 9pipe size            (512 bytes, -p) 810POSIX message queues     (bytes, -q) 81920011real-time priority              (-r) 012stack size              (kbytes, -s) 1024013cpu time               (seconds, -t) unlimited14max user processes              (-u) 1638415virtual memory          (kbytes, -v) unlimited16file locks                      (-x) unlimited对于文件/etc/security/limits.conf中的“oracle  hard  stack”值至少应该是10240。2、确认$ORACLE_HOME/bin/oracle文件权限和属主是否有问题需要注意的是,在rac环境下需要查看$ORACLE_HOME/bin/oracle和$GRID_HOME/bin/oracle两个文件。在没有安装GI的环境下,正确权限为:1[oracle@OCPLHR ~]$ ll $ORACLE_HOME/bin/oracle2-rwsr-s--x 1 oracle oinstall 232424392 Feb  2 10:30 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle3[oracle@OCPLHR ~]$ 在有grid用户的情况下,oracle可执行文件正确属主应该是oracle:asmadmin,并且权限必须有s才可以,如下所示: 1[root@orclalhr ~]$ which setasmgidwrap 2/u01/app/11.2.0/grid/bin/setasmgidwrap 3[root@orclalhr ~]$ setasmgidwrap -o /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle 4[root@orclalhr ~]$ ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle 5-rwsr-s--x 1 oracle asmadmin 232399083 Apr 21  2015 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle 6[root@orclalhr ~]# ll /u01/app/11.2.0/grid/bin/oracle 7-rwsr-s--x. 1 grid oinstall 203972117 Jan  5  2015 /u01/app/11.2.0/grid/bin/oracle 8[root@orclalhr ~]# chmod 6751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle 9[root@orclalhr ~]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle10-rwsr-s--x 1 oracle asmadmin 232399083 Apr 21  2015 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle11[root@orclalhr bin]# cd /u01/app/oracle/product/11.2.0/dbhome_1/bin/12[root@orclalhr bin]# which stat13/usr/bin/stat14[root@orclalhr bin]# stat oracle15  File: `oracle'16  Size: 210823844       Blocks: 411776     IO Block: 4096   regular file17Device: 802h/2050d      Inode: 1717737     Links: 118Access: (6751/-rwsr-s--x)  Uid: (  501/  oracle)   Gid: (  504/asmadmin)19Access: 2017-03-16 12:33:44.809363974 +080020Modify: 2014-05-18 17:09:50.508549983 +080021Change: 2017-03-16 11:05:15.733816820 +0800文件权限的详细说明如下:u:User,即文件或目录的拥有者。g:Group,即文件或目录的所属群组。o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。a:All,即全部的用户,包含拥有者,所属群组以及其他用户。有关权限代号的部分,列表于下:r:读取权限,数字代号为4。w:写入权限,数字代号为2。x:执行或切换权限,数字代号为1。-:不具任何权限,数字代号为0。s:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限。如果权限不对,那么可以执行以下命令进行修复:1chmod 6751 $ORACLE_HOME/bin/oracle  如果权限不对,那么使用strace跟踪命令也可以看到如下信息:1$strace -f -o /tmp/trace.1.log $ORACLE_HOME/bin/sqlplus / as sysdba在trace.1.log文件中可以看到如下的内容:121810 open("/oracle/PROD/db/tech_st/11.1.0/admin/PROD_erptest/diag/rdbms/prod/PROD/alert/log.xml", O_WRONLY|O_CREAT|O_APPEND, 0664) = -1 EACCES (Permission denied)2......3421810 open("/oracle/PROD/db/tech_st/11.1.0/admin/PROD_erptest/diag/rdbms/prod/PROD/trace/alert_PROD.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = -1 EACCES (Permission denied)3、检查一下环境变量1echo $ORACLE_HOME  2echo $ORACLE_SID  3echo $LD_LIBRARY_PATH --注意:不同的操作系统此环境变量会不同4echo $PATH4、检查$ORACLE_HOME/bin/oracle和$ORACLE_HOME/rdbms/lib/config.o的文件大小是否为01[oracle@OCPLHR ~]$ ll $ORACLE_HOME/bin/oracle2-rwsr-s--x 1 oracle oinstall 232424392 Feb  2 10:30 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle3[oracle@OCPLHR ~]$ ll $ORACLE_HOME/rdbms/lib/config.o4-rw-r--r-- 1 oracle oinstall 1248 Jan 15 21:45 /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/config.o5[oracle@OCPLHR ~]$ 如果大小为0,那么需要先备份config.o文件,然后重新编译oracle软件:1% cd $ORACLE_HOME/rdbms/lib2% mv config.o config.o.bad3[oracle@OCPLHR ~]$ relink all4writing relink log to: /u01/app/oracle/product/11.2.0/dbhome_1/install/relink.log需要注意的是,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,那么可以使用如下的方法解决:1[oracle@test ~]$ cd $ORACLE_HOME/network/log2[oracle@test log]$ cat /dev/null > listener.log7、检查文件/etc/hosts文件中是否含有以下内容:1[oracle@OCPLHR ~]$ cat /etc/hosts2# Do not remove the following line, or various programs3# that require network functionality will fail.4127.0.0.1               localhost.localdomain localhost5::1             localhost6.localdomain6 localhost66192.168.59.155 OCPLHR必须确保/etc/hosts文件中含有127.0.0.1这行。8、查看系统是否缺少必要安装包,例如glibc、glibc-devel、libaio、libaio-devel9、使用操作系统跟踪命令跟踪sqlplus连接过程,从而观察跟踪文件Linux系统的跟踪命令:1strace -o /tmp/output.txt -T -tt -e trace=all  sqlplus / as sysdba 2strace -t -p 4545Unix跟踪sqlplus进程:1truss -dfaie -o /tmp/sched_trace.out.02271 sqlplus '/as sysdba'& 说明:有关该错误的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2150922/ 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

上一篇:ogg添加新表
下一篇:PostgreSQL中BRIN和BTREE索引的比较(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~