oci方式连接oracle的说明

  oracle提供了oci的连接方式,它是一种本地连接,需要在本地操作系统中安装客户端,在windows、linux、solaris下一般可以直接通过安装文件安装oracle 客户端,在linux下面还可以安装oracle client instant(它通常是通过rpm包的形式发布的)
应用程序能否通过oci进行访问,关键是tnsname的设置,这一般有两种方式
  • 在程序内指明连接信息
  • 使用配置文件指明连接信息,然后在程序内引用配置文件中的服务名

下面通过ruby代码举例说明
1.在程序内部设置,以oci8为例
require 'oci8'
db_def = %[(DESCRIPTION=
             (ADDRESS_LIST=
              (ADDRESS=
               (PROTOCOL=TCP)
               (Host=192.168.2.245)
               (Port=1522)
              )
             )
             (CONNECT_DATA=
              (SERVICE_NAME=oravas)
             )
            )]
conn = OCI8.new 'sxvas', 'sxvas', db_def
=> #<OCI8:SXVAS>

2.在配置文件中指明,以dbi为例
require 'dbi'
DBI.connect("DBI:OCI8:ORAVAS",'sxvas','sxvas')
=> #<DBI::DatabaseHandle:0xb7985f3c @driver_name="OCI8", @trace_mode=nil, @handle=#<DBI::DBD::OCI8::Database:0xb7985ed8 @attr={}, @handle=#<OCI8:SXVAS>>, @convert_types=true, @trace_output=nil>
在这种方式中,DBI通过ORAVAS这个服务名称访问数据库,而这个名称是在配置文件中设置的——
~$ cat /home/john/etc/tnsnames.ora 
ORAVAS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.245)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oravas)
    )
  )

这里的文件路径是可以配置的,它通过环境变量指定
~$ echo $TNS_ADMIN
/home/john/etc/tnsnames.ora

总的来说,如果依赖本机服务名寻找远程oracle服务器上的服务,依次根据 "环境变量 -> 配置文件 -> 服务名称" 进行访问

你可能感兴趣的:(oracle,linux,应用服务器,bash,Ruby)