3

我需要使用 PL/SQL developer 在 PL SQL 中进行开发,但我不知道如何让 oracle 11g 和 pl/sql developer 在同一台机器上工作,因为 pl/sql developer 需要在 oracle 没有安装时安装 32 位 oracle 客户端当我们在本地机器上工作时需要客户端。这就是我所做的:

1) 我在驱动器 d:\ 上安装了 oracle 11g 64 位 Enterprise 2) 然后我在驱动器 c:(pl/sql 开发人员只能使用 32 位版本的 oci.dll) 上安装了 oracle 客户端 32 位) 3) 在我去之后client_home%->Network->Admin 文件夹并更正了 tnsname.ora 文件,并在其中写入了从我的 oracle 11 g home_dir..tnsnames.ora 复制的连接设置

    MyOracle =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
)

在我在 c:\plsqldev\ 中安装 PL/SQL developer 并重新启动我的机器之后。

所以现在我可以使用位于我的 oracle 数据库目录中的 sql*plus 连接到我的数据库,但是当我尝试使用我的客户端 sql*plus 连接到我的 oracle 时,当我尝试使用 pl/sql 开发人员连接时它说 tns 协议错误表示无法解析指定的连接标识符。我应该怎么办?请问你能帮帮我吗

补充: 我从 NAMES.DIRECTORY_PATH 中删除了 TNSNAMES 参数(在服务器和客户端 sqlnet.ora 文件中),现在当我登录时它说:ora-12154 tns 无法解析指定的连接标识符,但它仍然成功连接到 DB 时我尝试连接 SERVER - s sql*plus。

这是我的配置文件:

**servers listener.ora **

        SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = D:\app\Light\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Light\product\11.2.0\dbhome_1\bin\oraclr11.dll")
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
ADR_BASE_LISTENER = D:\app\Light

服务器 sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NONE)

NAMES.DIRECTORY_PATH= (HOSTNAME)

服务器 tnsname.ora

 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)
        )
      )              

客户端 sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NONE)

NAMES.DIRECTORY_PATH= (HOSTNAME)

客户 tnsnames.ora

    ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

添加: 是的!))最后我找到了解决方案: :) 我们需要使用服务器的配置文件而不是客户端之一 - 但必须从客户端目录中获取 oci.dll(32 位)。我将描述基本步骤 - 我如何让 pl/sql developer 10.0.2 与本地安装的 Oracle 11.2 x64 一起工作:

1)首先我们需要安装Oracle(我安装到d:\app)

2)然后我们需要下载并安装oracle即时客户端(我发现即时客户端中没有任何配置文件(甚至网络->管理目录),只需要像oci.dll等dll。注意:我第一次选择“管理员”,里面有自己的配置文件,似乎这种客户端只需要远程访问 Oracle)。我将我的即时客户端安装(解压缩)到 c:\app\ ;

3) 打开 PL/SQL developer ,进入 tools->preferences->connection 并将“Oracle Home”文件设置为您的即时客户端的主目录(我放置了 c:\app),但通常它已经存在于 drop 中下拉列表,我们只需要单击下拉列表并选择 OraClient11g_home1_32bit ,这样我就设置了 oci 库路径(从下拉列表中选择)。点击应用并退出pl/sql developer;

4)现在我们需要创建两个环境变量(第一个将显示带有连接配置的文件夹路径,第二个是语言(如果我不正确请纠正我))->

  • TNS_ADMIN = %SERVER_HOME%\NETWORK\ADMIN\(我输入了 D:\app\Light\product\11.2.0\dbhome_1\NETWORK\ADMIN)

  • TNS_LANG = AMERICAN_CIS.CL8MSWIN1251

5)重新启动(可选)然后启动pl / sql developer - 必须有三个连接别名,我选择了orcl,输入了我的登录名,密码并点击OK,一切正常)));

感谢所有在这个主题上回答的人,希望它对某人有所帮助

4

1 回答 1

0

检查 tns 文件中的端口名称,它应该是 1521,其中 XE 是我的本地数据库名称,像这样 E = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Shantu)(PORT = 1521)) (CONNECT_DATA = (SERVER = 专用)(SERVICE_NAME = XE))

)

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO))

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

于 2017-05-19T19:34:58.083 回答