重庆思庄Oracle、Redhat认证学习论坛

标题: sysdba连接及dbca报ora-12547丢失连接错误 [打印本页]

作者: 郑全    时间: 2017-7-22 02:26
标题: sysdba连接及dbca报ora-12547丢失连接错误
今天在安装数据库时,除一个人外,其他人在用dbca创建数据库时,都报ora-12547的错误,
我使用conn / as sysdba,也报这样的错误:
ERROR:
ORA-12547: TNS:lost contact

分析:
      1.以为是内核参数有问题,通过检查内核参数,没有看出异常
      2.也有人说可能是LD_LIBRARY_PATH=$ORACLE_HOME/lib没有设置的问题,我看了我这里确实没有设置.
       但我在不设置该环境变量的情况下,重新安装数据库软件,之后,再去通过dbca创建数据库,也不再出现该问题.说明与这个变量关系不大.
      3.有人说通过relink all,也不解决问题
      4.也有人说是$ORACLE_HOME/rdbms/lib/config.o大小为零导致,我看了我这里大小不为零
      5.也看到说是$ORACLE_HOME/bin/oracle文件权限的问题,权限应为6751,我看了确实是6751,说明不只是这个单纯的问题.
       [root@dbserver bin]# ls -ltr oracle
       -rwsr-s--x 1 oracle dba 198796777 Jul 22 01:07 oracle
      6.关键是grid用户登录都不存在这个问题,就是oracle用户有这个问题.

我突然想起前面安装时,我在付权限时,是先赋予的/u01/app/oracle的oracle:dba,后又对/u01/app赋予了 grid:dba
  # chown -R oracle:dba /u01/app/oracle
  # chown -R grid:dba /u01/app

  # chmod -R 775 /u01/app

  这样一来,/u01/app及其下的子目录(当然包含/u01/app/oracle)的所有者,都变为grid:dba了.
  [root@dbserver app]# pwd
  /u01/app
  [root@dbserver app]# ls -ltr
  total 12
  drwxrwxr-x 9 grid dba 4096 Jul 22 00:43 grid
  drwxrwx--- 6 grid dba 4096 Jul 22 01:07 oraInventory
  drwxrwxr-x 5 grid dba 4096 Jul 22 01:07 oracle

  后面安装oracle软件时,又是使用的oracle用户安装的,因此 $ORACLE_HOME/bin/oracle的所有者,就是oracle,
  [root@dbserver bin]# ls -ltr oracle
  -rwsr-s--x 1 oracle dba 198796777 Jul 22 01:07 oracle
  由于两者不一致,就出现了这个问题,我们试图把$ORACLE_HOME的owner修改为oracle:
  修改前:
  [root@dbserver db_1]# ls -ld /u01/app/oracle/product/11.2.0/db_1
drwxrwxr-x 74 grid dba 4096 Jul 22 01:07 /u01/app/oracle/product/11.2.0/db_1

  修改后:
  [root@dbserver db_1]# chown oracle:dba /u01/app/oracle/product/11.2.0/db_1
  [root@dbserver db_1]# ls -ld /u01/app/oracle/product/11.2.0/db_1
  drwxrwxr-x 74 oracle dba 4096 Jul 22 01:07 /u01/app/oracle/product/11.2.0/db_1

   再去以sysdba身份连接,不再报错,问题解决:

   [root@dbserver db_1]# su - oracle
   [oracle@dbserver ~]$ sqlplus /nolog
   SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 22 02:17:38 2017
   Copyright (c) 1982, 2013, Oracle.  All rights reserved.
   SQL> conn / as sysdba
   Connected to an idle instance.
   SQL>

   回过头来,我们前面的操作步骤,确实是错了,正常的步骤应该是:
   先执行这步:
   # chown -R grid:dba /u01/app
   再执行这步:
  # chown -R oracle:dba /u01/app/oracle
  最后修改权限:

  # chmod -R 775 /u01/app

   其实,这个还是ORACLE的ORACLE_BASE和GRID 的ORACLE_BASE在同一目录/u01/app下的原因导致,如果修改为不同的目录,这个问题就可以很好的解决.

   附:
   metalink上的一遍文章:[size=130%]ORA-600 [spstp: ORACLE_HOME uid does not match euid] When Changing Permissions On $ORACLE_HOME/bin/oracle (文档 ID 747456.1)
[size=130%]   
[size=130%]    操作系统跟踪用法:
[size=130%]    strace -f -o /tmp/trace.log $ORACLE_HOME/bin/sqlplus / as sysdba
[size=130%]   
[size=130%]



作者: sebastain    时间: 2019-5-29 14:17
很好,谢谢,解决了我的问题




欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2