今天在windows64位的win7的电脑上安装了Oralce11g后,通过PLSQL Developer连接Oracle数据库时,提示如下图所示错误信息
原因分析:因为Oracle是64位系统,PLSQL Developer是32位系统(也可能是Oracle是32位系统,PLSQL Developer是64位系统),所以Oracle已经配置成功,测试连接成功,但是在我登录PLSQL Developer的时候,报连接不过去。
解决方法:
1. 去https://www.oracle.com/database/technologies/instant-client/downloads.html 下载
- Instant Client for Microsoft Windows (32-bit)
具体下载那个版本看操作系统和上图的错误信息提示的需求,我的是windows32位的
2. 勾选同意下载协议,不然下载不了;
3. 选择Version 11.2.0.4.0,下载instantclient-basic-nt-11.2.0.4.0.zip (51,477,933 bytes);
4. 将 instantclient-basic-nt-11.2.0.4.0.zip 解压至 D:\Oracle11g中oci.dll 所在目录为:D:\Oracle11g\instantclient_11_2;
5. 设置环境变量:
TNS_ADMIN=D:\Oracle11g\instantclient_11_2
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
6. 点击PLSQL Developer,然后点击取消,进入未登录页面,选择菜单 --> Tools --> Perferences --> Connection修改Oracle_Home和OCI Library的配置:
OracleHome: D:\Oracle11g\instantclient_11_2
OCI library: D:\Oracle11g\instantclient_11_2\oci.dll
7. 重启Plsql Developer,输入相应的信息既可以连接数据库成功。
连接时可能遇到的问题:
1. 如果连接后出现如下图所示提示,ORA-12154: TNS:could not resolve the connect identifier specified,即无法解析指定的连接
解决方法:
(1)点击PLSQL Developer,然后点击取消,进入未登录页面,选择菜单 --> Tools --> Perferences --> Connection,检查Oracle_Home和OCI Library的配置是否正确;
(2)如果上述配置核对后没问题,查看tnsnames.ora文件,查看数据库配置信息前面是否有空格;
1)# TNSNAMES.ORA Network Configuration File:D:\Oracle11g\instantclient_11_2\tnsnames.ora(地址是否正确)
2)ORCL = (orcl前面是否有空格,有就去掉)
# TNSNAMES.ORA Network Configuration File:D:\Oracle11g\instantclient_11_2\tnsnames.ora
# Generated by Oracle configuration tools.
xhcip =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
)
)
(3)如果还没有解决问题,查看环境变量的设置是否正确,在环境变量path中添加Oracle客户端的安装路径。
2. 当然连接时也可能遇到如下图所示的错误:
解决方法:
(1)检查输入的用户名、密码以及数据库是否对应且正确;
(2)检查安装的instantclient(我的是D:\Oracle11g\instantclient_11_2)的tnsnames.ora(没有的话自己创建一个)设置的数据库端口是否正确;
# TNSNAMES.ORA Network Configuration File:D:\Oracle11g\instantclient_11_2\tnsnames.ora
# Generated by Oracle configuration tools.
xhcip =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
)
)