我照着网上的帖子配置了好几次,总是出现ora-12154,无法解析服务名的错误。
查了好久,发现了下面的小问题
很多帖子的配置中都在tnsnames.ora文件中如此配置:
DBNAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP )(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SID ) //这部分就是我发现的问题所在,替换成下面蓝色部分就成功连接
(SID = SID)
(SERVER = DEDICATED)
)
)
以下是我总结的完整的配置方法:
下载oracle instantclient
解压到一个目录例如:解压后的文件夹为D:\instantclient_11_2
在该目录下创建文件夹NETWORK,在NETWORK文件夹下创建文件夹ADMIN
然后在D:\instantclient_11_2\NETWORK\ADMIN目录下创建一个tnsnames.ora文件,文件中添加如下内容(斜体替换成自己的内容)
DBNAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP )(PORT= 1521))
)
(CONNECT_DATA =
(SID = SID)
(SERVER = DEDICATED)
)
)
接下来设置环境变量,网上很多帖子说要设置PATH,ORACLE_HOME,TNS_ADMIN等等,ORACLE_HOME可以在pl/sql 中设置,pl/sql developer会自动去找ORACLE_HOME下面的NETWORK\ADMIN下的tnsnames.ora文件,所以使用以上配置,可以不用设置TNS_ADMIN, 至于PATH,个人感觉是使用sqlplus的才会用到的吧。所以只用设置
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
下一步,设置pl/sql developer
- 打开pl/sql developer->tools->preferences->connection
- 在Oracle Home中填写上面的D:\instantclient_11_2
- 在OCI library中填写D:\instantclient_11_2\oci.dll
然后重新启动pl/sql developer,就可以连接了。
如果发现提示 insufficient privilege,应该就是没有创建密码文件,在数据库中创建密码文件就行了。