Oracle是甲骨文公司的一款关系数据库管理系统,采用了Client/Server软件系统体系结构。
Sqlplus作为与Oracle数据库服务端进行交互的客户端工具,使用非常广泛,那么如何在Linux上安装Sqlplus客户端呢?
一、准备工作
Liunx操作系统:CentOS7.1 minimal
Oracle客户端安装包
操作系统root用户
二、下载安装包
在Oracle官方网站,下载Oracle客户端基础包、sqlplus包
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html?ssSourceSiteId=otncn
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
Instant Client 说明
Oracle Instant client 是oracle提供的简便客户端, 支持多种平台。
包括如下内容:
Instant client Package - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件.
Instant client Package - BasicLite 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集.
Instant client Package - JDBC Supplement 为jdbc增加了xa, 国际化和RowSet操作.
Instant Client Package - SQL *Plus 包含sqlplus和需要的库文件
Instant client Package - SDK 使用Instant Client开发Oracle 应用程序需要的头文件及示例makefile
Instant client package - ODBC 使用odbc时需要的库, 不是所有平台都有. linux平台包含.
Basic和Basic Lite两个中必须选一个, 其他包都是可选的.
解压后放在一个文件夹下, 在这个文件夹下建立文件tnsnames.ora
设置环境变量LD_LIBRARY_PATH和TNS_ADMIN指向解压后的目录, 就可以使用sqlplus了!
Instant Client中不包含tnsping, exp/imp, rman, netca等工具. 如果需要这些工具则需要安装oracle客户端。
三、将安装包上传至于CentOS7.1 minimal /root/abc目录下安装
# rpm -hiv oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
# rpm -hiv oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
# rpm -hiv oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
安装过程中,可能会提示缺少依赖包 libaio,那么先安装 libaio libaio-devel
注:下载Binary package,不要下载Source package
https://centos.pkgs.org/7/centos-x86_64/libaio-0.3.109-13.el7.x86_64.rpm.html
https://centos.pkgs.org/7/centos-x86_64/libaio-devel-0.3.109-13.el7.x86_64.rpm.html
# ls /root/abc
libaio-0.3.109-13.el7.x86_64.rpm
libaio-devel-0.3.109-13.el7.x86_64.rpm
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
# rpm -hiv libaio-0.3.109-13.el7.x86_64.rpm
# rpm -hiv libaio-devel-0.3.109-13.el7.x86_64.rpm
# rpm -hiv oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
# rpm -hiv oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
# rpm -hiv oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
四、安装完成后,自动生成客户端所在目录/usr/lib/oracle/12.2/client64,其下bin、lib目录分别存储可执行文件和对应的连接库
# ls /usr/lib/oracle/12.2/client64
bin lib
在/usr/lib/oracle/12.2/client64目录下,用vi命令,创建并配置Oracle客户端的网络服务名配置文件tnsnames.ora
vi /usr/lib/oracle/12.1/client64/tnsnames.ora
#####################
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XX)
)
)
######################
注:xx.xx.xx.xx为Oracle Server IP
XX为实例名
五、设置环境变量
在/root/.bash_profile中设置ORACLE客户端环境变量:
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export TNS_ADMIN=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
在.bash_profile中,将sqlplus所在的路径添加到PATH环境变量中:
export ORABIN=/usr/lib/oracle/12.2/client64/bin
PATH=$PATH:$ORABIN
export PATH
# source /root/.bash_profile
六 、登录测试
完成安装后,可以在命令窗口用sqlplus按对应用户名密码连接远程的oracle数据库,读取表了。
# sqlplus USERNAME/"PASSWORD"@"orcl"
如果 Oracle 客户端提示: client host name is not set,在 /etc/hosts 加一条
127.0.1.1 XXX
注:XXX为主机名
#@@@@@@@@@@@@@@@@@@@@@@#
上面的安装如果不想用root 用户操作sqlplus来连接 远端Oracle Serve,可以创建一个任意普通用户 oracle
# useradd oracle
软件包的安装需要用root 用户执行
安装后,我们把生成的客户端所在目录/usr/lib/oracle/12.2/client64 更改属主 属组
# chown -R oracle:oracle /usr/lib/oracle/12.2/client64
那么 相应地是在/home/oracle/.bash_profile中设置ORACLE客户端环境变量:
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export TNS_ADMIN=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
在 /home/oracle/.bash_profile中,将sqlplus所在的路径添加到PATH环境变量中:
export ORABIN=/usr/lib/oracle/12.2/client64/bin
PATH=$PATH:$ORABIN
export PATH
# source /home/oracle/.bash_profile
# su - oracle
$ sqlplus USERNAME/"PASSWORD"@"orcl"
SQLPLUS的使用:
(1)直接使用:
sqlplus username/"password"@//xx.xx.xx.xx:1521/orcl
sqlplus username/"password"@xx.xx.xx.xx:1521/orcl
格式:
sqlplus username/"passwd"@//IP地址:端口号/SID or SERVICE_NAME
sqlplus username/"passwd"@IP地址:端口号/SID or SERVICE_NAME
注:密码中包含特殊字符时须要用引号
(2)使用别名:
在/usr/lib/oracle/12.2/client64下 建立一个tnsnames.ora文件,包含(示例):
#####################
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
###########################
sqlplus username/"password"@orcl