有个需求,需要在客户端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
文章评论