ORACLE FOR WINDOWS ORA-12560:TNS:协议适配器错误&ORA-12557:TNS:协议适配器不可加载

简介:     对于DBA维护oracle数据库时,登录数据库查看运行状态是必须的事。然而,当oracle架设在windows上时,尤其单个win服务器上安装多个实例或 同时安装有客户端,加之oracle相关环境变量设置混乱时,一切变的不再是那么容易。
    对于DBA维护oracle数据库时,登录数据库查看运行状态是必须的事。然而,当oracle架设在windows上时,尤其单个win服务器上安装多个实例或
同时安装有客户端,加之oracle相关环境变量设置混乱时,一切变的不再是那么容易。今天,处理武汉oracle数据库问题时就遇到了这种闹心的情况:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:01:44 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>sqlplus sys/sys as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:02:19 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>sqlplus sys/sys@orcl as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:02:34 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:04:08 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn sys/sys as sysdba
ERROR:
ORA-12560: TNS: 协议适配器错误
SQL> conn sys/sys
ERROR:
ORA-12560: TNS: 协议适配器错误
SQL> conn system/system
ERROR:
ORA-12560: TNS: 协议适配器错误
SQL> conn scott/tiger as sysdba
ERROR:
ORA-12560: TNS: 协议适配器错误
SQL> exit
C:\Users\Administrator>
   当遭遇到WINDOWS ORA-12560: TNS: 协议适配器错误时,我首先想到的是数据库实例是否启动,监听程序是否启动,检查结果如下:

因为是生产环境,想也知道数据库及监听肯定是开着的,检查结果与猜测的结果一样。
   然后,检查数据库监听设置是否是操作系统认证,发现监听设置是NTS本地认证:

   到此为止,排除了实例及监听没开启及监听安全限制,接下来再看就是数据库的环境变量设置:
   打开我的电脑

   在我的电脑右键属性

   点击系统属性上的环境变量

可以看到,系统环境变量设置里的ORACLE_HOME变量没有值,终于知道原因在哪了。
   接下来就是看当前数据库的数据库安装目录,依次右键我的电脑-》服务-》配置-》服务-》找到ORACLE相关服务

   在oracleserviceorcl服务上右键属性,可执行文件的路径得上一层就是ORACLE_HOME环境变量对应的值

   在含有linstener关键字的服务上右键属性,可以查看监听程序安装目录与数据库软件安装目录是否在同一级目录下,排除多版本数据库同机的情况。

    进入到11.2.0文件夹下,发现有2个文件夹,一个是db软件的,一个是客户端软件的,这就找到根源了,客户端与db软件都有oracle_home环境变量,
估计是为了避免环境变量冲突,取消系统中ORACLE_HOME的环境变量值。

   由于是生产环境,不能随便更改操作系统中ORACLE_HOME的环境变量值,可能导致客户端程序不能正常使用;还有一个方法就是在CMD中设置临时环境环境变量,
这就跟unix/linux环境下类似,前提是知道ORACLE的ORACLE_SID、ORACLE_HOME环境变量值,需要设置path环境变量,另外windows不区分环境变量名的大小写。
   设置临时环境变量后正常登陆数据库
C:\Users\Administrator>set oracle_sid=orcl

C:\Users\Administrator>set oracle_home=D:\app\Administrator\product\11.2.0\dbhome_1

C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:08:36 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12557: TNS: 协议适配器不可加载
请输入用户名:
ERROR:
ORA-12557: TNS: 协议适配器不可加载
请输入用户名:
ERROR:
ORA-12557: TNS: 协议适配器不可加载
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>set path=D:\app\Administrator\product\11.2.0\dbhome_1\bin\
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:09:04 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>


目录
相关文章
|
4月前
|
Oracle 关系型数据库 Linux
windows 11 hyper-v中oracle linux虚拟机中添加硬盘
在windows 11自带的hyper-v虚拟机中添加硬盘,并分区
64 6
|
4月前
|
Oracle 关系型数据库 数据库
windows Oracle Database 19c 卸载教程
打开任务管理器 ctrl+Shift+Esc可以快速打开任务管理器,找到oracle所有服务然后停止。 停止数据库服务 在开始卸载之前,确保数据库服务已经停止。你可以使用以下命令停止数据库服务: net stop OracleServiceORCL Universal Installer 卸载Oracle数据库程序 一般情况运行Oracle自带的卸载程序,如使用Universal Installer 工具卸载。 点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击Universal Installer。 点击之后稍等一会然后会进入进入下图界面,点击卸载产品。 选中要删除的Orac
101 1
|
5月前
|
存储 Oracle 关系型数据库
windows 使用 Oracle Database 19c
Oracle数据库是由美国Oracle Corporation(甲骨文公司)开发和提供的一种关系型数据库管理系统,它是一种强大的关系型数据库管理系统(RDBMS)。它使用表格(表)组织和存储数据,通过SQL语言进行数据管理。数据以表格形式存储,表之间可以建立关系。支持事务处理、多版本并发控制、安全性和权限控制。具有高可用性、容错性,支持分布式数据库和可扩展性。Oracle Corporation提供全面的支持和服务,使其成为企业级应用的首选数据库系统。
55 0
|
6月前
|
Oracle 关系型数据库 数据库连接
Windows系统安装配置Oracle数据库连接工具PLSQL
Windows系统安装配置Oracle数据库连接工具PLSQL
|
6月前
|
Oracle 关系型数据库 数据安全/隐私保护
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 用户名/
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 用户名/
|
9月前
|
应用服务中间件 nginx Windows
windows Nginx WebSocket ws协议反向代理
windows Nginx WebSocket ws协议反向代理
|
9月前
|
Oracle 关系型数据库 数据库连接
Oracle 11g安装配置完美教程 - Windows(下)
Oracle 11g安装配置完美教程 - Windows(下)
151 0
|
9月前
|
SQL Oracle 安全
Oracle 11g安装配置完美教程 - Windows(上)
Oracle 11g安装配置完美教程 - Windows
595 0
|
10月前
|
SQL Oracle 前端开发
Oracle更改数据后后台无法操作 一直加载
今天用dbutils操作Oracle,在SQL developer里面测试执行完update语句后,在后台操作,前端页面一直加载,
|
12月前
|
网络协议 测试技术 Windows
Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
125 0