Oracle远程连接

Oracle远程连接不是直接使用Ip加端口 这种形式,而是使用TNS(个人感觉和ODBC的DSN有点类似,在某个地方保存一些设置,然后给这些设置起个名字,用的时候直接写这个名字就行了)

TNS目录位置:

        安装目录NetworkAdmin nsnames.ora 

ORCL32 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

         客户端在连接的使用使用 ORCL32 就可以了。


在Window中有如下几种方式连Oracle数据库

1.使用ODBC

     32位window自带Microsoft ODBC for Oracle驱动(但是要用的话还要安装oracle客户端才行,如果同时安装32位和64位,则必须在Path环境变量中将32位的路劲写在64位前面才能用)

     64位window无自带驱动

2.用于Oracle的.NET Framework数据提供程序

     VS2010开始微软已经建议不要使用这个来连接oracle数据库了

3.用于OLE DB的.NET Framework数据提供程序

     VS2013开始微软已经建议不要使用这个来连接oracle数据库了

4.安装ORACLE客户端(如果本机安装服务器端则不需要再安装客户端了)

    32位,提供了VS开发工具

    64位,没有提供VS开发工具(因为VS到目前为止还没有64位的)


在VS中开发ORACLE数据库相关程序的时候注意:

    1.VS到现在为止还没有64位的版本,所以在VS中服务器资源管理器中连接ORACLE的时候只能用32位的ORACLE连接(如果你安装了64位oracle客户端,很不幸,你必须还要再安装32位的客户端)

             如果要用微软自带的ODBC连接,则必须在Path环境变量中将32位的路劲写在64位前面才能用

    2.开发出来的程序32位64位,是否必须使用对应版本的oracle客户端还未知。

我把我听到的告诉你,微软说,的确有无数的开发者提议微软开发64bit的Visual Studio,但是微软没有这么做,是因为微软调查了绝大多数的深层需求,他们之所以期待64bit的Visual Studio,是因为他们认为64bit的程序可能拥有更高的性能。但是实际上不是这么回事,64bit程序在x86-64处理器上并不会带来明显的性能提高,它只是增加了处理器的寻址范围,可以使用更大的内存。而对于VS这种并非内存敏感的程序,并不十分需要迁移到64bit下。另外,还有一个历史原因,就是微软一直没有完成64bit下的JIT调试器的Edit and Continue功能,这是因为64bit的JIT是C++团队做的,和原生CLR团队的32bit JIT有很多不同,微软现在正在试图统一两者。如果微软推出了64bit的VS,那么调试的体验会受到限制,这也是为什么微软一直以来没有推出64bit VS的原因。

在MSSQL中,导出导入 Oracle数据库的时候

1.Microsoft OLE DB Provider for Oracle     可以使用    TNS 或   IP/服务名  或 机器名/服务名

2.Oracle Provider for OLE DB           可以使用    TNS 或   IP/服务名  或 机器名/服务名

这里的   TNS    (必须是和MSSQL32或64位对应的的ODAC相关版本 NetworkAdmin nsnames.ora 中定义的)

如果连接的时候提示    error while trying to retrieve text for error ora-01019     可能是

安装的Oracle Client连接库是否和原来在系统里的库有冲突. 有时会出现, 之前安装了其他数据库服务器, 有相同的库, 但是是老版本, 所以要在使用Oracle之前, 把环境变量设置好,增加ORACLE_HOME这个环境变量,指向ORACLE的安装目录.你可能装过几次ORACLE 客户端  http://bbs.csdn.net/topics/390677745

这个时候必须设置环境变量  ORACLE_HOME ,如果是64位的,则这样设置后则VS中服务资源管理器就不能连Oracle了。

还好这种情况不常出现,出现的时候变通处理一下,毕竟MSSQL导入导出用的比较少。

ORA-12541: TNS: 无监听程序

http://blog.csdn.net/ysdaniel/article/details/6627360

http://blog.csdn.net/gdweijin/article/details/5758471

http://zhidao.baidu.com/link?url=aBcLc0RHUruOVy_zNbYruCOsduwO2BmaN3k4FXEfnW-9sOU7Ko_gPc1mTylwZEhwjT-YKaVjO5ct5aimxce4aq

http://www.youxia.org/ora-12541-tns-oracle.html

http://blog.csdn.net/wwbmyos/article/details/11475551/

http://www.luocs.com/archives/464.html

http://bbs.csdn.net/topics/390135995

http://www.cnblogs.com/kerrycode/archive/2012/12/14/2818421.html

http://blog.csdn.net/elvis_dataguru/article/details/8984961

http://blog.csdn.net/elvis_dataguru/article/details/8986744

http://blog.itpub.net/9240380/viewspace-719391/

1.在服务器上使用命令行执行 tnsping 服务器ip:端口号,看是否可以连通

  tnsping localhost  正常可以连接

  tnsping 127.0.0.1  正常可以连接

  tnsping 服务器IP地址(可能出现TNS-12541: TNS: 无监听程序)

  在listener.ora文件中的添加服务器ip地址(应该可以连接了)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521))
    )
  )

2.在命令行中执行LSNRCTL

  然后status查看输出信息

原文地址:https://www.cnblogs.com/gameshan/p/4124964.html