Linux下仅安装Oracle备份用的exp(client),而不是整个Oracle服务器

2021-10-23 998点热度 0人点赞 0条评论

有个需求,需要在客户端Linux上定期备份Oracle某个账户下的数据(使用oracle的exp命令),而因为需要exp而去安装整个Oracle服务器显然有点小题大做了。

备份脚本的文章详见:https://blog.terrynow.com/2021/10/22/linux-oracle-client-backup-script-example/

问题解决

经过一番摸索,找到了Linux下仅安装OracleClient/最小化安装exp需要的程序。

Oracle在12.2开始在oracle client/tools里包含了exp命令,可以去https://www.oracle.com/in/database/technologies/instant-client/linux-x86-64-downloads.html下载,找到如下两个rpm包:

oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

oracle-instantclient12.2-tools-12.2.0.1.0-1.x86_64.rpm

第一个basic是安装tools的必要包,所以也是需要下载的,我们把这两个rpm上传到Linux上,然后使用rpm命令安装:

# 安装basic
rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
# 安装tools
rpm -ivh oracle-instantclient12.2-tools-12.2.0.1.0-1.x86_64.rpm

安装好后,exp等文件的路径是安装到了:/usr/lib/oracle/12.2/client64 下

下面来运行下exp看看:

cd /usr/lib/oracle/12.2/client64/bin
./exp
./exp: error while loading shared libraries: libclntsh.so.12.1: cannot open shared object file: No such file or directory

我们还需要给oracle export一些环境变量:

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/usr/lib/oracle
export ORACLE_HOME=$ORACLE_BASE/12.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

# 接下来可以使用exp来导出啦
#exp ...

# 我需要用到rar压缩,CentOS6上发现需要这样子,详见这篇文章
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib

/root/rar a -ppassword /root/test.dmp.rar /root/test.dmp
#scp -P 2122 /home/oracle/dayi.dmp.rar [email protected]:/root/dayi.dmp.rar
cp /root/dayi.dmp.rar /storage/backup/dayi/dayi_$nowdate.dmp.rar

可能还会遇到的问题

ORA-24454: client host name is not set

如下报错,是因为hosts里面没有加hostname所致

vim /etc/hosts 增加如下内容(hostname.example.com根据你的实际情况修改):

127.0.0.1 hostname.example.com

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论