最近在部署hadoop的环境,需要用到hadoop的一个组建sqoop与关系数据库进行交互,而hadoop是部署在linux环境下的,那么要想利用sqoop来连接远程的windows服务器的oracle需要再linux上安装oracle client的。因此下面主要讲解一下linux下安装oracle client的具体步骤:

 1、要远程使用oracle,先下载下面三个文件,注意版本最好一致。

      oracle-instantclient-basic-11.2.0.1.0-1.x86_64.zip 
      oracle-instantclient11.2-sdk-11.2.0.1.0-1.x86_64.zip    
      oracle-instantclient-sqlplus-11.2.0.1.0-1.x86_64.zip 

     //查看oracle的sql语句,当然你如果无法上去,只能问远程oracle  的管理员了。
        select * from V$version ;

  2、由于我在linux上用操作hadoop的grid用户来操作,因此需要在该用户的home下,先创建三个客户端的安装目录,这三个目录可以自定义,但配置环境变量时,需要一致。
       mkdir -p /home/grid/oracle/lib
       mkdir -p /home/grid/oracle/sdk
       mkdir -p /home/grid/oracle/network/admin               //配置监听器和网络环境。

  3、解压上面下载的三个文件。其中,下面两个文件都解压到当前目录下的同一个目录下面:instantclient_10_2
      unzip oracle-instantclient-basic-11.2.0.1.0-1.x86_64 .zip
      unzip oracle-instantclient-sqlplus-11.2.0.1.0-1.x86_64.zip
      
      cd instantclient_10_2     把这个目录下的所有文件搬到  /home/grid/oracle/lib
      

     最后解压oracle-instantclient11.2-sdk-11.2.0.1.0-1.x86_64.zip   把解压出来的文件 mkdir -p /home/grid/oracle/sdk
    4、设置环境变量:vi /etc/profile

export ORACLE_HOME=/home/grid/oracle
    export LD_LIBRARY_PATH=/home/grid/oracle/lib
    export SQLPATH=/home/grid/oracle/lib:${SQLPATH}
    export TNS_ADMIN=/home/grid/oracle/network/admin:${TNS_ADMIN}
 
    export PATH=$PATH:$LD_LIBRARY_PATH

  5、配置监听器和网络环境

    因为linux机器上本地没有安装oracle 数据库,所以需要从安装oracle 数据库的目录拷贝下面三个文件过来。并这三个文件都放到/home/grid/oracle/network/admin目录下  

      listener.ora  sqlnet.ora  tnsnames.ora       //就这三个文件,放到目录/home/grid/oracle/network/admin下    

  6、编辑/home/grid/oracle/network/admin目录下的三个文件:

vi  tnsnames.ora
ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521)) //注意这里要修改成相应的ip地址和端口号
    )
    (CONNECT_DATA =
      (SID = oracle)
      (SERVER = SHARED)
      (PRESENTATION = RO)
    )
  ) 
LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))

//注意这里要修改成相应的ip地址和端口号,服务器端此处的设置是设置需要监听的主机名192.168.1.132,端口号1521 。如果这里出现TNS:no listener 的错误,可以在服务器端通过tnsping 192.168.1.132看看是否能ping的通,如果ping不同,则是服务器端的tnsnames.ora此处设置错误。我就是在这里出现了问题,因为服务器端此处监听的是localhost,而localhost对应的ip地址是127.0.0.1,这并不是我想监听的主机,因此需要修改此处。

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = orcl)
    )
  ) 
   vi  listener.ora
    # listener.ora Network Configuration File: D:\app\liujiyu\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
    # Generated by Oracle configuration tools.SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /home/grid/oracle)  //此处需要修改成客户端的安装目录
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\liujiyu\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.132)(PORT = 1521))
    )
  )ADR_BASE_LISTENER = D:\app\liujiyu

     sqlnet.ora不需要做任何的修改。

 

 

  7、配置安装完成,下面进行测试:

    sqlplus scott@orcl      //这里需要注意sqlplus文件可能没有执行权限,需要手动赋予执行权限。

    输入密码,登陆成功。

  (1)若出现 no listener 的错误。应该是tnsnames.ora服务端和客户端没有配置好。

  (2)如出现TNS:Listener count not find available handler for requested type of server,则表明需要将服务器数据库设置为共享模式。