ORA-12547: TNS:lost contact+oracle 开启监听失败

1、ORA-12547: TNS:lost contact

[root@dbserver /]# sqlplus sys/xiniu123 as sysdba                        

SQL*Plus: Release 12.2.0.1.0 Production on Sat Aug 26 12:55:34 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-12547: TNS:lost contact


Enter user-name: 
ERROR:
ORA-12547: TNS:lost contact


Enter user-name: 
ERROR:
ORA-12547: TNS:lost contact

原因权限不够
确认$ORACLE_HOME/bin/oracle文件权限是否有问题

最初的权限
[root@dbserver /]#  ll $ORACLE_HOME/bin/oracle  
-rwxr-x--x. 1 oracle dba 407988851 Aug  1 12:50 /usr/oracle/product/bin/oracle

修改后正确的权限
[root@dbserver /]# chmod 6751 $ORACLE_HOME/bin/oracle  
[root@dbserver /]# ll $ORACLE_HOME/bin/oracle  
-rwsr-s--x. 1 oracle dba 407988851 Aug  1 12:50 /usr/oracle/product/bin/oracle

以上就可以解决了ORA-12547: TNS:lost contact问题了

2、oracle 开启监听失败

[root@dbserver bin]# lsnrctl start 

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 26-AUG-2017 10:49:54

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /usr/oracle/product/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
NL-00280: error creating log stream /usr/oracle/product/network/log/listener.log
 NL-00278: cannot open log file
  SNL-00016: snlfohd: error opening file
   Linux Error: 13: Permission denied

Listener failed to start. See the error message(s) above...

做了1上面的授权操作这个问题没了,但是有引入新的问题

[oracle@dbserver trace]$ lsnrctl start

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 26-AUG-2017 13:28:31

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /usr/oracle/product/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /usr/oracle/product/network/admin/listener.ora
Log messages written to /usr/oracle/product/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=196.160.1.211)(PORT=1521)))
TNS-01155: Incorrectly specified SID_LIST_LISTENER parameter in LISTENER.ORA
 NL-00303: syntax error in NV string

Listener failed to start. See the error message(s) above...

我做了如下操作,没有找到为什么监听失败的原因,但是已经可以连接了
步骤1
listener.ora
将**xxx**的内容删除

            **SID_LIST_LISTENER =  
               (SID_LIST =  
                    (SID_DESC =  
                      (SID_NAME = CLRExtProc)  
                      (ORACLE_HOME = /usr/oracle/product)  
                       (PROGRAM = extproc)  
                       (ENVS = "EXTPROC_DLLS=ONLY:/usr/oracle/product")  
                    )  
                )  
            (SID_DESC =
                (GLOBAL_DBNAME = ORCL)
                (ORACLE_HOME = /usr/oracle/product)
                (SID_NAME = ORCL)
            )**
LISTENER =
  (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 196.160.1.211)(PORT = 1521))
        )
    )

ADR_BASE_LISTENER = /usr/oracle/product

步骤2 启动监听

[oracle@dbserver trace]$ lsnrctl start

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 26-AUG-2017 13:28:31

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /usr/oracle/product/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /usr/oracle/product/network/admin/listener.ora
Log messages written to /usr/oracle/product/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=196.160.1.211)(PORT=1521)))
TNS-01155: Incorrectly specified SID_LIST_LISTENER parameter in LISTENER.ORA
 NL-00303: syntax error in NV string

Listener failed to start. See the error message(s) above...

[oracle@dbserver trace]$ lsnrctl start

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 26-AUG-2017 14:00:19

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /usr/oracle/product/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /usr/oracle/product/network/admin/listener.ora
Log messages written to /usr/oracle/product/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=196.160.1.211)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                26-AUG-2017 14:00:19
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /usr/oracle/product/network/admin/listener.ora
Listener Log File         /usr/oracle/product/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=196.160.1.211)(PORT=1521)))
The listener supports no services
The command completed successfully

步骤3 将步骤1删除的内容重新添加上
listener.ora

**SID_LIST_LISTENER =  
               (SID_LIST =  
                    (SID_DESC =  
                      (SID_NAME = CLRExtProc)  
                      (ORACLE_HOME = /usr/oracle/product)  
                       (PROGRAM = extproc)  
                       (ENVS = "EXTPROC_DLLS=ONLY:/usr/oracle/product")  
                    )  
                )  
            (SID_DESC =
                (GLOBAL_DBNAME = ORCL)
                (ORACLE_HOME = /usr/oracle/product)
                (SID_NAME = ORCL)
            )**

步骤4 关闭数据库shutdown abort
步骤5打开数据库startup
以上就解决问题了

"ora-12547: tns:lost contact" 是一种Oracle数据库中的错误,通常位于使用Mac的Docker容器运行Oracle数据库时出现。这个错误表示Docker容器无法与Oracle数据库建立联系。 出现这个错误的原因可能有以下几种: 1. 网络配置问题:确保容器和宿主机之间的网络配置正确。可以尝试检查Docker网络设置,并确保容器可以正确访问Oracle数据库所在的主机。 2. TNS配置问题:检查容器中的TNS配置文件(通常为tnsnames.ora)是否正确。确保其中的连接字符串、主机名、端口号等信息正确匹配Oracle数据库的实际设置。 3. Oracle监听器问题:确认Oracle监听器是否正在运行,并监听着正确的端口。可以尝试在容器中执行`lsnrctl status`命令来检查监听器的状态。 4. 容器资源限制:如果容器的资源限制过低,可能导致无法正常启动Oracle数据库。可以尝试增加容器的内存、CPU等资源限制,以确保数据库能够正常启动。 解决这个问题的方法可以尝试以下几种: 1. 检查网络配置:确保容器和宿主机之间的网络配置正确,容器可以访问到Oracle数据库所在的主机。 2. 检查TNS配置:确认容器中的TNS配置文件中的连接信息正确。可以尝试手动连接数据库,确保连接字符串、主机名、端口号等信息正确。 3. 检查监听器:确保Oracle监听器正在运行,并监听着正确的端口。可以尝试重启监听器,或者在容器中重新配置监听器。 4. 调整资源限制:增加容器的资源限制,确保能够正常启动Oracle数据库。可以尝试给容器分配更多的内存、CPU等资源。 总而言之,解决这个问题需要检查网络配置,确认TNS配置和监听器设置正确,并适当调整容器的资源限制。通过这些步骤,应该能够解决"ora-12547: tns:lost contact"错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值