Oracle 11g搭建RMAN复制备库时sqlplus登录报ORA-12560错误
ORA-12560: TNS:protocol adaptor error 排查解决步骤(Windows Server 2012 R2 + Oracle 11g 备库搭建场景)
1. 校验Oracle实例服务状态
当前场景下仅安装了Oracle软件未创建数据库,Windows层面默认没有对应的Oracle实例服务,是报错的核心诱因:
- 执行
oradim命令手动创建备库对应的Windows实例服务,命令格式如下:oradim -NEW -SID <替换为你的备库SID> -STARTMODE auto -PFILE <替换为你的备库参数文件全路径> - 命令执行完成后,打开Windows服务列表,确认
OracleService<你的备库SID>服务处于运行状态 - 额外确认
Oracle<ORACLE_HOME名称>TNSListener服务处于运行状态,和你之前确认的监听器启动状态做交叉校验
2. 核对系统环境变量配置
- 检查系统级
ORACLE_HOME环境变量,确认路径和Oracle 11g实际安装根目录完全一致,示例路径:C:\app\administrator\product\11.2.0\dbhome_1 - 检查系统级
ORACLE_SID环境变量,确认取值和你刚才创建的备库SID完全匹配,注意大小写敏感 - 检查
Path系统变量,确认%ORACLE_HOME%\bin路径已加入,且优先级高于其他Oracle客户端/其他版本Oracle的bin路径,避免路径冲突 - 若系统为64位但安装的是32位Oracle,需额外确认Path中指向的是32位Oracle的bin目录
- 环境变量修改完成后,必须重启cmd/PowerShell窗口再做测试,避免旧缓存生效
3. 校验Oracle网络配置
- 打开
%ORACLE_HOME%\network\admin\sqlnet.ora文件,确认配置了SQLNET.AUTHENTICATION_SERVICES= (NTS),允许本地操作系统认证登录 - 打开
%ORACLE_HOME%\network\admin\listener.ora文件,添加备库的静态注册配置,示例如下:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = <替换为你的备库全局数据库名>) (ORACLE_HOME = <替换为你的ORACLE_HOME全路径>) (SID_NAME = <替换为你的备库SID>) ) )
- 配置修改完成后执行
lsnrctl reload重载监听器配置,再执行lsnrctl status确认备库SID已经处于READY状态
4. 登录验证
所有配置调整完成后,重新打开cmd窗口执行sqlplus / as sysdba即可正常登录到空闲实例,继续后续RMAN duplicate备库搭建操作。如果不想修改系统级环境变量做临时测试,可在cmd窗口先执行set ORACLE_SID=<你的备库SID>,再执行登录命令验证。
内容的提问来源于stack exchange,提问作者Zedan
相关产品推荐
相关产品推荐

