首页 > 代码库 > Oracle安装ORA-12154和ORA-12169问题的解决

Oracle安装ORA-12154和ORA-12169问题的解决

  2014年7月8日,小弟我重拾Oracle,电脑里之前安装了Oracle10,由于要导入11版本的dmp表文件,提示说版本低的Oracle导入不了,只能版本高的Oracle导入版本低的表文件,无奈只能卸掉Oracle10装Oracle11g,有人给了Oracle11XE版本,那个是简易版,第一次安装的时候还算顺利,可是安装完的使用就纠结了,在安装后开始菜单打开Command命令框后,输入
    imp scott/123@orcl file=D:\nbts\zzggg.dmp full=y ignore=y(这是我的dmp表文件的导入)


  结果报错ORA-12154: TNS: 无法解析指定的连接标识符,我特意去百度查找了很久的解决方式,都没有解决,有的说是tnsnames.ora和listener.ora两个文件的配置出错,可以直接去oracle的安装目录下检索两个文件进行直接修改,这个方法其实不太可取,毕竟出这种问题而又不会解决的人大多都是像我一样刚接触ORACLE没多久的新手,手动修改配置很容易出错,到最后反而越错越多,只能卸掉重装。所以像XE这种简易版容易不能一次成功,对于新手而言会是持久的折磨。


  朋友给我推荐了完整版ORACLE11g,里面安装的时候有4种版本,企业版、标准版、标准版和个人版,其实我也很好奇为什么有两个标准版,不过我没去管它,一开始我选了个人版,跟着百度搜的安装流程一路下来,没出错,但是最后安装完了在连接PLSQL或者导入dmp表文件时又报了ORA-12154: TNS: 无法解析指定的连接标识符的错误,没办法我又去手动改上诉两个文件的配置,同时去核对注册表(开始菜单搜索框输入regedit打开)以及我的电脑——属性——高级系统设置——环境变量里的path和ORACLE_PATH的值,注册表里的值的查找主要可以在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home2下可以查看,最后竟然让我乱配过了这个错误。还没结束,这时又报了另个错误ORA-12169,指定为连接标示符的net服务名太长,由于ORACLE安装时没有让你自己来配置net服务名,可能它的net服务名会初始默认为

ORACL_CONNECTION_DATA,这是我今天在安装完版整的ORACLE11g后通过附带的Net Configuration Assistant这个辅助软件里看到的net服务名,那时不知道,傻傻的去改GLOBAL_NAME,结果发现一点效果都没有,反而连sys这个用户原来可以通过sqlplus命令登录的,后来因为服务名的变更,完全就乱套了,只能默默卸掉重装。


  其实服务名可以通过辅助软件变更的,在这里我先提个醒,不要抱怨自己的电脑配置太差的原因,所以别人的电脑安装一次就过了,我们反而要调试那么久。让我默默晒下自己的垃圾配置,11年买的华硕,4000元不到入手,i3处理器,1G显卡,2G内存,后来加了个2G内存条,Windows7,32位系统,唉,不过实际上Oracle的安装个人感觉和电脑配置不是非常有关联,看的是运气,主要ORACLE的安装流程不透明,兼容性有点差,不过慢慢调试就是了。具体的辅助软件么个人比较推荐NetManager,这个也是Oracle完整版的附带辅助软件。

  在这个软件内呢,我们可以通过选中下图中的服务命名和监听程序,再点击左边的“+”号,进行服务命名以及监听程序的重新配置。

下面两张图则是我的配置数据,你们可以参照着看看(我的数据库global_name和服务名都是orcl,两者必须一致)。

                          服务命名配置                                   监听器配置

在配置后记得选择另存为,把Oracle初始安装后的tnsnames.ora和listener.ora以及sqlnet.ora替换掉,路径选择:D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\SAMPLE(这是我安装的路径,可能大家的和我不太一样,可以自己打开我的电脑检索文件位置)。这里结束后可能你们的oracle还是会报ORA-12154的错,这时,你可以试试cmd命令框下输入tnsping orcl(你的服务名),下图是我遇到的情况,只截了一部分,下面报错的信息省略了,如果你也是这样,那就恭喜了,再一步可能就成功了。

 

  这是我今天发现的自己遇到错误的主要原因,不是很清楚大家是否和我一样,但是和我一样的你就算幸运了,因为上面的意思是监听器的默认指向路径在上述路径中的admin文件目录下,可是在那个目录里没有tnsnames.ora这个文件,这可能是因为ORACLE的安装默认了tnsnames.ora和listener.ora以及sqlnet.ora三个文件初始位置在子目录下了,位置不对导致一直无法成功解析你的服务名标识符,所以将tnsnames.ora复制到admin目录下即可,我再次输入tnsping orcl后,显示的会是这样

 

这时说是你的tns文件所对应的监听器对服务名的解析成功了,ORACLE应该能正常使用了,下图便是我成功导入了dmp表文件。