TNS-12560: TNS: 协议适配器错误
排查点:
1 listener.ora 中的 HOST & Oracle实例的 v$instance 中的 HOST_NAME & tnsnames.ora 中的 HOST 三者必须一致,最好在操作系统hosts文件中增加 hostname 对应 IP的配置
2 listener.ora & tnsnames.ora 中关于 HOST 的配置建议都用 IP 来表示
3 OS的hostname检查:执行 hostname 命令查看是否配置了主机名,通过 ping hostname 检查是否能通
4 检查 listener.ora & tnsnames.ora 配置文件的 HOST 配置是否是用主机名表示的?
如果是用主机名表示的:
a) 如果是用主机名表示,则如果修改了OS的主机名会有影响,需要同步修改为新的主机名,并确认OS 的 hosts 文件中也已经更新主机名
b) ping 新的主机名,确认是否能通
如果是用IP表示的:确认主机名已经在OS的 hosts 文件中配置过了IP 主机名映射
host文件添加IP和主机名映射时,建议回环地址和IP地址都添加上主机名映射
如果上面排查OK后,仍然还是有问题,则继续:
5 查看启动的oracle的instance信息(select * fromv$instance;)
确认OS的主机名和instance中的 HOST_NAME 两者必须一致,并确认该主机名要能 ping 通
最后如果发现有问题,修改以后,请重启Oracle,再确认是否OK,下面多种连接方式应该都是能连通的:
connect oracle/123456@orcl
connect oracle/123456@127.0.0.1:1521/orcl
connect oracle/123456@//127.0.0.1:1521/orcl
connect oracle/123456@192.168.208.140:1521/orcl
connect oracle/123456@//192.168.208.140:1521/orcl