昨天远程帮人看问题,他装了PLSQL Developer,点开登录框输完账号密码,直接弹ORA-12541,TNS没有监听程序,一脸问号。
先分清Instant Client和客户端版本
PLSQL Developer自己不带连接能力,必须配一个Oracle客户端。现在推荐装Instant Client,体积小,解压即用。关键要记住它和PLSQL的位数必须一致,都是64位或都是32位,混装报ORA-12154的概率特别高。
装完在PLSQL的Preferences里填两行:Oracle Home指向解压目录,OCI library指向该目录下的oci库,路径别带中文和空格。
Oracle Home填Instant Client解压目录,OCI指向同目录下oci库tnsnames.ora文件该放在哪
用TNS方式连,得有个tnsnames.ora文件。老客户端放network下admin目录,Instant Client直接放解压的根目录就行。里面写服务名和地址。
ORA_PROD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.5)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = orcl)))配完记得设TNS_ADMIN环境变量指向这个目录,不然PLSQL找不到文件,登录框里下拉列表是空的。
三个高频报错分别查哪里
- ORA-12541:地址端口写错,或者数据库没启监听,先telnet测1521通不通
- ORA-12154:服务名没对上,或tnsnames路径不对,检查TNS_ADMIN
- ORA-12514:监听起来了但这个服务名不存在,用lsnrctl status看真实服务名
不想折腾客户端就换路子
图省事的直接下Oracle官方专用包,或者用DBeaver、Navicat这类自带驱动的工具,省掉整晚调客户端的时间。
一句话取舍:长期用就老老实实配Instant Client加TNS,临时连一次,换个免驱工具更快。