zoukankan      html  css  js  c++  java
  • 用PL/SQL远程连接Oracle服务器

    背景:本地未安装oracle数据库服务器,希望远程连接Oracle服务器

    测试环境:win7 64位系统

    1.下载精简客户端

    下载64位windows的instantclient-basic包,地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html,32位的需下载32位的客户端,将包解压存放到本地,我本机主目录是D:software_devplsqlOracleClientPackageinstantclient_11_2

    2.创建数据库连接的配置文件

    在客户端主目录下新建sqlnet.ora和tnsnames.ora两个文件
    sqlnet.ora文件写入:

    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

    tnsnames.ora文件写入:

    #可配置多个本地实例。格式:
    #本地实例名 =
    #  (DESCRIPTION =
    #    (ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 远程服务器端口号))
    #    (CONNECT_DATA =
    #      (SERVER = DEDICATED)
    #      (SERVICE_NAME = 远程数据库服务名)
    #    )
    #  )
    
    KOBRA_DEV_VPN=
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.109)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = comstar)
        )
      )
    
    KOBRA_DEV_VPN_2=
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.139)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = kobra)
        )
      ) 

    PS:不要出现本地实例名前面多空格,或者其他地方少写括号。否则连接时会报错:ORA-12154: TNS:could not resolve the connect identifier specified

    3. 配置windows的环境变量

    变量名:TNS_ADMIN  变量值:D:software_devplsqlOracleClientPackageinstantclient_11_2

    ---->截图来自win10

    PS:这里变量值即为instantclient在本地的主目录。如果不配置该变量,连接时会报错:ORA-12154: TNS:could not resolve the connect identifier specified

    4.安装并配置PL/SQL Developer

    (1)下载安装PL/SQL Developer工具

    (2)配置oracle的连接参数:打开PL/SQL,打开工具-->首选项-->连接,配置Oralce主目录和OCI库

    主目录:D:software_devplsqlOracleClientPackageinstantclient_11_2
    OCI库:D:software_devplsqlOracleClientPackageinstantclient_11_2oci.dll

    5.重新启动PL/SQL Developer

    填写用户名、密码、选择数据库,确定连接

    还可以用这种写法进行测试:

    5.解决乱码问题

    解决乱码问题需要关注的三点:
    (1)Oracle数据库内部的字符集
    (2)Oracle客户端应用所在环境的字符集
    (3)Oracle数据库所在服务器的系统中NLS_LANG变量里保存的字符集(最好与前两点保持一致)

    解决方法:

    步骤一:查询Oracle数据库所在服务器的系统中NLS_LANG变量里保存的字符集

    方式一:

    select * from v$nls_parameters;

    查询结果如下:

    方式二:

    select userenv('language') from dual;

    查询结果如下:

    上述方式都可查得:方式当前oracle服务器内部的字符集为 AMERICAN_AMERICA.AL32UTF8

    步骤二:配置环境变量

    配置oracle客户端所在环境的字符集,使其与oracle服务器内部字符集配置保持一致:

    变量名:NLS_LANG  变量值:AMERICAN_AMERICA.AL32UTF8

    步骤三:重启PL/SQL,进行测试

    参考文章:

    http://www.cnblogs.com/zhwl/p/3727565.html 不安装oracle客户端,用plsql连接oracle

    http://gang-chen.iteye.com/blog/2005546 PLSQL乱码

  • 相关阅读:
    运行时权限
    访问其他程序中的数据
    第二篇T语言实例开发(版本5.3),福彩3D摇号器
    第一篇T语言实例开发(版本5.3),带错误检测的加减乘除运算器
    第九课,T语言数组的定义与访问(版本5.0)
    第八课,T语言功能和参数(版本5.0)
    第七课第六节,T语言流程语句( 版本5.0)
    第七课第五节,流程语句(版本5.0)
    第七课第四节,T语言流程语句(版本5.0)
    第七课第三节,T语言流程语句(版本5.0)
  • 原文地址:https://www.cnblogs.com/terryMe/p/6725120.html
Copyright © 2011-2022 走看看