Linux下使用Oracle Instant Client远程连接服务器

Linux大全评论1.8K views阅读模式

我使用securecrt远程到服务器上,想从这台服务器访问另外一台机器上的Oracle。用的是RedHat,64位机器。服务器上的oracle版本11.2。

1,先下载软件,http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

因为我既想用sqlplus访问,又想写php程序访问,所以下载了:

oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

---> 安装软件直接 rpm -ivh oracle*

2,看一下安装好后,目录/usr/lib/oracle/11.1/client/lib/是否存在,或者名称是否和我这个一致,不一致改成你的,执行:

vi /etc/ld.so.conf.d/oracle-lib.conf 加入/usr/lib/oracle/11.2/client64/lib/

ldconfig

3,下载http://pecl.php.net/package/oci8里的软件oci8-1.4.7.tgz,自己选好版本

tar xzf oci8-1.4.7.tgz

cd oci8-1.4.7

phpize

./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib/

make && make install

4,在/etc/php.ini中加入:extension = "oci8.so";接着使用php -m查看模块是否已经被加载,或者重启apache,在phpinfo中查看是否有oci模块。

5,实际上安装了oracle instantclient之后就不需要再安装庞大的oracle客户端了,但到目前为止不论写程序还是用sqlplus去连数据库都会报错,连接方式:sqlplus '用户名/"密码"'@数据库服务名  (这里使用单双引号是为了避免密码中含有特殊字符@)

报错:ORA-12154: TNS: 无法解析指定的连接标识符

这是因为没有指定tnsnames.ora

6,在/usr/lib/oracle/11.2/client64目录下新建mkdir -p network/admin,然后在admin目录下新建tnsnames.ora,写入类似下面的内容:

  1. #tnsnames.ora Network Configuration File: /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora  
  2. SDHE =  
  3.   (DESCRIPTION =  
  4.     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.203.49)(PORT = 1521))  
  5.     (CONNECT_DATA =  
  6.       (SERVER = DEDICATED)  
  7.       (SERVICE_NAME = dhe)  
  8.     )  
  9.   )  
  10. DHE =  
  11.   (DESCRIPTION =  
  12.     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.191.23)(PORT = 1521))  
  13.     (CONNECT_DATA =  
  14.       (SERVER = DEDICATED)  
  15.       (SERVICE_NAME = dhe)  
  16.     )  
  17.   ) 

或者直接从oracle服务器端将相同目录下的这个文件拷贝过来。

再新建sqlnet.ora,写入:

企鹅博客
  • 本文由 发表于 2020年8月6日 22:35:55
  • 转载请务必保留本文链接:https://www.qieseo.com/155613.html

发表评论