对于oracle的客户端pl/sql工具本身是32位的,若要连接64位的oracle,需要安装oracle32位的instaceClient(可以再oracle官网下载),通过进入pl/sql配置,打开工具中首选项配置如下(所配置的为instanceClient的路径):

如此可实现PL/SQL和数据库的连接。但是oracle在使用过程中较容易出现问题,常见问题及解决方法如下:

一.  ORA-12541无监听程序

      顾名思义,这种情况下需要检查oracle监听是否打开,启动OracleOraDb11g_home1TNSListener服务和OracleServiceXXX服务。

1.检查监听文件,找到oracle的安装目录,打开product/dbhome1/network/admin文件夹,找到listtener.ora文件,该文件为oracle的监听程序文件,检查文件监听是否配置正确,可以手动为数据库配置监听。

2.通过在命令行输入netca进入网络配置,重新为oracle配置监听程序。

二. 无法解析指定的连接标识符

     连接标识符的解析主要是由tnsname来解析完成,打开oralce目录下product/dbhome1/network/admin下的tnsname.ora文件可以检查其监听文件,正常情况下每个数据库都会有一个描述文件,监听程序将会由此来解析服务器地址,正常配置如下:

# tnsnames.ora Network Configuration File: E:\app\mrl\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
       也可以通过netca命令进入网络配置,选择本地网络服务名配置,可以手动添加、删除、重配置和测试网络服务名等,是网络服务测试的重要方法。

       最后,还要注意最重要的一点,需要查看服务中OracleDBConsoleXXX(XXX为数据库名)是否开启,该服务是控制客户端程序与服务器相连的服务,若没有开启客户端工具是不能连接数据库的,常表现出的问题是通过sqlplus命令可以连接数据库,但是pl/sql等工具连接不上。

      与此同时,在开启OracleDBConsoleXXX服务的时候容易出现的问题是无法从本地开启此服务,这是因为当前服务指定的IP地址发生变动,生成服务文件夹名变了,需要到oralce目录下product/11.2/dbhome1/oc4j/j2ee下找到服务的文件夹OC4J_DBConsole_mrl-PC_XXX,此为服务启动文件夹将其中主机名mrl-PC更改为本地计算机的主机名或者localhost即可,若是远程服务的,可以通过在命令行运行emctl start dbconsole ,此时启动失败会显示默认的服务文件路径,将其文件夹名称作对应修改即可重新启动。