ORA-12557的出现有时候与ORACLE_HOME未设置或设置错误有关

  • Post author:
  • Post category:其他



ORA-12557的解决过程








ORA-12557:


TNS:protocol adapter not loadable


Cause:


On some platforms (such as OS/2) protocol adapters are loadedat run-time. If the shared library (or DLL) for the protocoladapter is missing or one of its supporting libraries is missingthen this error is returned.


Action:


For further details, turn on tracing and reexecute theoperation. The trace file will include the name of the sharedlibrary (or DLL) that could not be loaded.


1. Make sure the


%ORACLE_HOME%/bin


directory(即目录) is in your (环境变量)PATH.//即ORA-12557的出现有时候与ORACLE_HOME未设置或设置错误有关

2. Make sure the protocol is typed/specified correctly in your


tnsnames.ora

file or whatever source you’re using to resolve service

names.

3. TCP is the default protocol and is installed by default.If

you’re using something different (like SPX) make sure you installedthe

protocol adapter.

4. Make sure TOAD is using the

correct oracle_home

if youhave

multiple homes installed


————————-环境是装了两个实例,一个9i,一个10G


SQL> conn

sys/admin@c11

assysdba;

ERROR:

ORA-12557: TNS:protocol adapter not loadable


——lsnrctl>status 报错


Message 1053 not found; No message file for product=NETWORK,facility=TNSTNS-12538: Message


12538 not found; No message file for product=NETWORK,facility=TNS

TNS-12560: Message 12560 not found; No message file forproduct=NETWORK, facility=TNS

TNS-00508: Message 508 not found; No message file forproduct=NETWORK, facility=TNS


—————


1、重新配置监听


2、echo %oracle_home% 查看所打开的实例是不是在这个目录下


如不是设set oracle_home=d:oracleora92


以上摘自:




http://steve352.itpub.net/post/33251/306560









恰巧今天有个朋友同样装了9I跟10也出现了

ORA-12557

,修改oracle_sid错误仍然,


修改oracle_home为当前数据库的oracle_home以后,问题解决.









说明:


1、ORACLE_HOME是Oracle所安装软件的根目录。Oracle根据这个根目录,可以相对定位其他相关的程序在哪




ORACLE_HOME如果不对的话,那么比如启动数据库或者登陆的时候找不到相关的程序会出错



2、

SID是建立一个数据库时,这个数据库的标识符


3、

如果一个版本里有2个或多个instance那怎么设置

oracle_sid













其实在环境变量里设置

oracle_sid

只是在conn 不带@时

默认

连接的数据库,所以只有一个,其实可以不设置。但是


如果一个版本里有2个或多个instance


时,conn就必须带 @sid_name了





sid_name

即是一个网络服务名,注意这个时候是必须要开启监听了lsnrct start)




=========================================


环境背景:本机有多个oracle实例(11,9i),连接的服务器的oracle是9i

前因:我刚进公司,于是电脑域账号还在审批中没下来,用的以前那人的账号登录系统,一切正常。

后果:我的账号下来了,于是我换成我自己的账号登录电脑,所有配置重置,这时候一切的环境变量重新设置,当所有的环境变量设置和之前一样,以为大功告成了。

打开plsql,连接oralce,报了这个错:ORA-12557,网上找了一大堆,都不是我的出现问题的原因,搞了一下午,实在搞不定了,找公司大神一看,大神直奔主题,点开plsql中的,帮助->支持信息,看到Preferences中的OCI Library用的11g的oci.dll,一目了然。

于是打开Preference Files中的2个Default.ini文件查看,把OCIFile改掉成9i的路径(OCIFile=D:\Oracle9i\ora90\BIN\oci.dll),搞定。

汗啊~~~~~~~~~~搞了我一下午,大神就搞了1分钟不到