以下是整个连接测试流程,包含此过程中遇到的所有的坑和解决方案,不确定PLSQL远程连接与本地有无Oracle数据库是否相关,因此会在本文中一并录入,网上确实有这样一种说法表示可以不需要本地安装Oracle数据库即可连接,读者可以自行测试,具体生产实践中遇到其他问题请读者视情况而定。
1.PLSQL远程连接Oracle数据库的必要操作:
(1)首先下载安装(附免安装压缩包下载链接:链接:https://pan.baidu.com/s/1YWb_1xdQK6lnjN55Z5ke9Q
提取码:uysu
但该版本较老旧,但本教程是以该版本为准安装测试的,是否存在因版本不符而造成实际配置安装结果与预期不符的问题仍未可知,请读者自行选择)
(2)下载解压后直接可用,文件夹中包含注册码,读者自行注册,这里不细谈。
(3)下载安装Oracle数据库并安装(Oracle的安装教程网上很多,自行查找即可,需要注意一点,不管安装哪个版本,一定要安装到最后,如果中途退出后再次安装会创建新的安装文件夹,很不方便。)
(4)下载Oracle Client Package .
从http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载
Instant Client Package – Basic包( 标注:All files required to run OCI, OCCI, and JDBC-OCI applications)这里下载的是Version 11.1.0.7
(5)本地保存Oracle Client Package:
创建文件夹,比如oracle_client,将下载的文件加压缩到此文件夹里.(笔者目录: D:\oracle_client\instantclient_10_2)
(6)在当前目录下,新建立两个文件,sqlnet.ora和tnsnames.ora然后再手动配置sqlnet.ora和tnsnames.ora
比如这里是:
sqlnet.ora文件内容:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora文件内容(斜体表示需要替换的内容):
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
以上内容根据个人具体情况编写
(7)配置环境变量
变量名: TNS_ADMIN
变量值: D:\oracle_client\instantclient_10_2
否则出现:ORA-12154: TNS:could not resolve the connect identifier specified错误
如果之前安装了Oracle 又卸载,会遗留NLS_LANG=NA的键值.输入RegEdit打开注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE.在右面找到NLS_LANG=NA并删除掉
否则会报ORA-12705: Cannot access NLS data files or invalid 错误.
(8)安装pl/sql软件(过程略)
(9)配置pl/sql的Oracle连接参数:
选择pl/sql的工具/首选项(too/ preference/)里的连接,在右面设置Oracle主目录名(即安装目录)和OCI库.
Oracle主目录名: D:\oracle_client\instantclient_10_2
OCI库: D:\oracle_client\instantclient_10_2\oci.dll
(10)登陆pl/sql测试成功
2.遇到的问题及解决方案:
(1)12154:ORA-12154: TNS:could not resolve the connect identifier specified错误
出现这个问题的根本原因应该是tnsnames.ora文件的问题,但是我个人而言出现这个问题似乎是在登录plsql时database填的有问题。
这里要说明一下,在登录plsql时database填的应该是tnsnames.ora文件中配置的这个东西,即数据库连接名。
(2)12170:连接超时
这个问题出现时,请按以下思路解决:
首先看服务器是否连接在局域网内:网线是否插上等;
其次查看服务中listener是否已经开启,如果监听没开往往会导致无法连通。也可以通过指令lsnrctl status 或lsnrctl start 查看监听是否已经开启,链条指令分别对应的正确结果应该是:前者在最后会输出一条实例信息,后者会提示监听已经启动。
然后使用tnsping和ping命令测试一下是否能ping通服务器ip:能通:查看一下tnsnames.ora文件中的IP是否正确,注意必须是局域网内的ip地址。不通,查看究竟是什么原因没通,我这边测试的时候遇到这个问题,查看后发现是服务器网线没插。
如果经过上述操作还不能连通的话,请再次确定你的tnsnames.ora文件中配置是否正确。
3.总结:
其实总的来说plsql远程连接Oracle数据库整个配置过程内容并不多,需要注意的无非就是以下几个:tnsnames.ora文件中的几项关键值、监听配置、监听器是否启动、plsql中的OracleHome和Library配置。以上,如果还有的话,就是下面这个可能需要配一下。网上教程很多,直接查就行。
教程未必适用于所有的情况,尤其是我们这种bug百出的菜鸟,只有你想不到没有我搞不出,但我还是想说一句,对自己也是对所有的新手码农,无论遇到什么坑还是bug,一定不要放弃,坚持找解决方案,坚持研究问题根源,最终一定会找到是和自己的解决方案。并且在此过程中,你会学到比你一次成功学得多得多的东西。当你尝试了大多数能想到的方法时,你离最终的解决方案也就不远了。而且往往你的bug并不是多么难解决的问题,往往只是某个细节没有注意到,遗漏了,希望看到这段话的小伙伴不吝点个赞,然后在回顾一下有没有哪个步骤遗漏了。