最近在部署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,则表明需要将服务器数据库设置为共享模式。