这里不是讲PL/SQL是Oracle数据库对SQL语句的扩展,不是讲PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言,等等,而是讲如何通过PL/SQL IDE登录Orcale数据,与其如何利用WinScp进行隧道连接。其相关下载请参见http://www.allroundautomations.com/plsqldev.html?gclid=CPa0r6SyssoCFQEDvAodEm8PXw网址。
另外由于编辑时**内应为斜体,但显示为却为原输出,所以以下所说斜体均为星号内文字。
PL/SQL IDE登录界面中的数据库下拉列表中的选项默认是从tnsnames.ora配置文件中映射的结果,如图。
tnsnames.ora文件路径的配置,在Tools-Preferences[工具-首选项]菜单中(点击‘取消’进入界面),设置instantclient basic包的解压路径,例:
Oracle Home(empty is autodetect) [Oracle 主目录名(自动检测为空)]
D:\Ora10InstantClient
OCI library(empty is autodetect) [OCI库(自动检测为空)]
D:\Ora10InstantClient\oci.dll
配置完成tnsnames.ora文件的路径之后,在指定目录下新建或找到tnsnames.ora文件,并添加配置信息内容,如下(其中斜体是需要按照实际情况更改):
*DATABASE_NAME* =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = *127.0.0.1*)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *DATABASE*)
)
)
重启PL/SQL IDE便可以在数据库选项中找到新建的数据库登录信息了,如果不能登录可能还需要新建sqlnet.ora,其内容如下(留意其中的斜体部分TNSNAMES的位置):
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (*TNSNAMES*,EZCONNECT)
不过,我的电脑在安装PL/SQL IDE后,tnsnames.ora是存在的,便不需要新建文件。
常规的登录通常是针对能够直接与本机相连的数据库服务器,而对于隐藏在某个局域网内,需要通过前置机间接才能访问的数据库服务器来说,则可以使用隧道连接,这里介绍一下利用WINSCP进行隧道的方式连接Oracle数据库服务器的方式。
在安装完WINSCP与配置好PuTTY后(可自行搜索相关安装与配置),登录数据库服务器局域网中的前置机或其他任何能与本机直接连接的机器,然后进入PuTTY并登录(一定要登录),右键标题栏,并选择”Change Settings” 进入设置界面,选择Connection-SSH-Tunnels,在Source port输入Oracle数据库端口号,这里使用Oracle默认端口号1521,并在Destination输入与前置机局域网内的IP地址加端口号,如:
Source port:1521
Destination:192.100.1.1:1521
选择“Add”并应用,整个设置完成效果如下图所示。
然后在tnsnames.ora配置文件中添加如下配置(斜体可以更改),注意其中HOST地址被更改为本地地址了。
*DATABASE_NAME* =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *DATABASE*)
)
)
以上,便可以在PL/SQL IDE登录界面中选择,此数据库连接信息并登录远程局域网内的Oracle数据库了,需要注意的是在使用过程中不能关闭PuTTY,且PuTTY必须登录,而如果同时开两个隧道连接则可能出现连接不上的情况。