最近因为工作问题需要弄一个Orale数据库导出Dmp文件,直接命令行执行很麻烦,于是用PLSql来操作,在配置链接的过程中遇到很多问题,下面把问题及解决方法贴在这里记录一下
1、ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME
这种问题是因为监听器中没有获取到SERVICE_NAME导致的。
解决方法;
1)找到plsql配置的tnsnames.ora文件,打开并编辑,加入下面代码段;
##可以
ORCL=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
host 可以改为自身IP地址,也可以改为localhost或者127.0.0.1,本质没有区别
端口号默认为1521,要与Oracle客户端匹配
2)配置环境变量
指向的是admin文件夹下的tnsnames.ora目录,根据自身情况配置
3)去本地Oracle客户端找到配置的监听器(本地安装Oracle的需要查找,如果本地只是安装精简版的Oracle,则没有必要,因为监听程序是在客户端才有的)
点击菜单-->Oracle - OraDb11g home1--->Net Manager--listener
这里面监听的地址应该有tnsnames.ora文件配置中的host地址,不然就会报未找到监听器的错误
2、ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务
1)首先应该查看Oracle服务是否正常启动
2)查看自己PLSql配置的tnsnames.ora文件中是否有配置错误问题,如IP或者端口
3)打开listener.ora文件(与tnsnames.ora文件再同一个目录中)
加入下列代码
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.*.*)(PORT = 1521))
)
)
host=192.168.*.*填入自己的IP地址是为了监听此IP,让其他机器输入IP地址也可以访问到
这步完成需要重启Oracle,重新登录
win+R 输入 services.msc回车
找到OracleServiceORCL服务,右键重启
然后再对OracleOraDb11g home1TNSListener 右键重启
3、ORA-12638: 身份证明检索失败
之前的配置是没有问题的,而且发现本地命令界面也登不上,查找资料,排除用户名和密码改动过的情况,应该是网络波动的问题。果然,后续再次登录就好了
4、乱码问题
配置环境变量
NSL_LANG
SIMPLIFIED CHINESE_CHINA.ZHS16GBK