写在前面

因为监控上有监控oracle,但是老是获取不到值,不清楚是访问过程中有什么问题,所以想着在监控端配置一个可以访问oracle的工具,因为只是需要简单的登录、查询,所以装个sqlplus就可以了。
本文大部分是转述网上找到的教程,文后会贴原文的链接。

配置过程

下载oracle工具包

这里用到两个软件包:
oracle-instantclient-basic
oracle-instantclient-sqlplus
下载页我贴一下:Oracle Instant Client Downloads for Linux x86-64 (64-bit)
这里我提供一下我用的版本,适用于oracle11.2.0.4:
https://narutoahoo.lanzout.com/b01854j2f 密码:epkn

下载完rpm -ivh 包名 安装就可以了

配置环境变量

可以在当前用户的.bash_profile文件或者/etc/profile文件中添加配置内容,区别是前者只对当前用户生效,后者对所有用户生效。
以.bash_profile为例,打开编辑:
vi ~/.bash_profile
写入一下内容:

1
2
3
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin

这里说明一下,刚刚上面两个包安装完毕后,会创建/usr/lib/oracle/11.2/client64/目录,这个目录就作为ORACLE_HOME到环境变量里。(如果是其他版本,把11.2换一下应该就是对应的目录了
配置完毕后,生效一下配置:
source ~/.bash_profile

创建tnsnames.ora

1
2
3
cd /usr/lib/oracle/11.2/client64
mkdir -p /usr/lib/oracle/11.2/client64/network/admin
vi /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora

tnsnames.ora内容如下:

1
2
3
4
5
6
7
8
9
test =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = your_service_id)
)
)

其中test是自己定义的一个数据库连接的别名,service_name是数据库监听的服务名。

连接测试

sqlplus64 user/password@test
这个sqlplus64是软件安装完在/usr/bin目录下生成的一个软链接,它指向/usr/lib/oracle/11.2/client64/bin/sqlplus

排除sqlplus程序的原因,如果连不上,可到数据库端,查看监听的日志输出,错误会写在里面。监听日志位置可通过lsnrctl status查看。


参考

Linux 环境下使用 sqlplus 访问远程 Oracle 数据库