sqlplus用连接串报ORA-12154,如何正确配置sqlnet.ora与tnsnames.ora
ORA-12154 报错排查与配置指导
核心问题定位方向
默认域名匹配冲突
你当前sqlnet.ora中配置了NAMES.DEFAULT_DOMAIN = world参数,Oracle解析TNS连接串时会自动给输入的连接标识符追加.world后缀。而你tnsnames.ora中配置的条目名为MYTNSENTRY,没有匹配后缀,系统实际查找的是MYTNSENTRY.world条目,自然无法找到。
修复方案二选一:
- 将tnsnames.ora中的条目名修改为
MYTNSENTRY.world - 在sqlnet.ora中给
NAMES.DEFAULT_DOMAIN = world行开头加#注释掉该参数,无需默认域名适配时更推荐该方案
配置文件路径不匹配
Windows环境下Oracle客户端按优先级读取TNS配置文件:优先读取%TNS_ADMIN%环境变量指向的目录下的sqlnet.ora、tnsnames.ora,无该环境变量时默认读取客户端安装目录下的network\admin文件夹。
可在cmd中执行tnsping MYTNSENTRY,输出第一行会明确显示当前读取的配置文件路径,确认你修改的文件和实际生效的文件为同一个。
tnsnames.ora格式错误
需检查tnsnames.ora的语法规范:
- 连接条目名称必须顶格写,前面不能有空格、缩进
- 层级括号必须正确对齐,不能存在全角空格、特殊字符、多余换行
- 整个DESCRIPTION块的括号必须完整闭合
执行tnsping MYTNSENTRY也会直接提示配置文件的语法错误位置。
命令拼写错误
你给出的第二条测试命令写为sqplus <userid>/<password>@<connectstring>,缺失了一个字母l,正确命令为sqlplus,如果实际执行时拼写错误也会触发异常。
内容的提问来源于stack exchange,提问作者12345
相关产品推荐
相关产品推荐

