oracle全量拷贝,oracle数据库expdp异机全量备份

oracle数据库创建directory: BAKEUP_DATA

SQL> create or replace directory BAKEUP_DATA as '/oracle/';

SQL> grant read,write on directory BAKEUP_DATA to fszhxzc;

配置scp免密传输

# scp -p ./root/ssh/id_rsa.pub root@192.168.2.100:/root/.ssh/authorized_keys

编写备份shell脚本/oracle/backup.sh代码如下

#!/bin/sh

if [ $# -ne 1 ];then

echo "请传入需要备份的oralce用户,多个使用,分隔!";

echo "异常终止备份任务!"

exit 1;

fi

ORACLE_OWNER=$1

echo "开始备份${ORACLE_OWNER}用户的全量数据..."

echo "1.引入oracle运行的系统环境变量"

export ORACLE_BASE="/oracle/product"

export ORACLE_HOME="/oracle/product/oracle/db"

echo "2.引入一般变量"

FILE_NAME="${ORACLE_OWNER//,/_}"

CURRENT_TIME=`date +%Y_%m_%d`

ORACLE_USERNAME="执行备份的oracle用户,需要有相应的权限"

ORACLE_PASSWORD="密码"

ORACLE_SID="SID"

BACK_DIR="/oracle/"

BACK_DATA="${FILE_NAME}_${CURRENT_TIME}.dmp"

BACK_LOG="${FILE_NAME}_${CURRENT_TIME}.log"

EXPRESSED_DATA="${FILE_NAME}_${CURRENT_TIME}.tar.gz"

REMOTE_USERNAME="远程服务器用户"

REMOTE_IP="1远程服务器IP"

REMOTE_PATH="/oracle/"

DAYS="7"

echo "3.进入备份目录: $BACK_DIR"

cd "${BACK_DIR}"

if [ $? -ne 0 ];then

echo "进入备份目录错误!";

echo "异常终止备份任务!"

exit 1;

fi

echo "4.执行备份"

"${ORACLE_HOME}"/bin/expdp "${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_SID}" directory=BAKEUP_DATA dumpfile="${BACK_DATA}" log="${BACK_LOG}" schemas="${ORACLE_OWNER}"

if [ $? -ne 0 ];then

echo "备份失败!";

echo "异常终止备份任务!"

exit 1;

fi

echo "5.压缩备份文件和日志文件"

tar -zcvf "${EXPRESSED_DATA}" "${BACK_DATA}" "${BACK_LOG}"

if [ $? -ne 0 ];then

echo "压缩备份文件和日志文件失败!";

echo "异常终止备份任务!"

exit 1;

fi

echo "6.将备份文件上传到远程服务器: ${REMOTE_IP}:${REMOTE_PATH}"

scp "${EXPRESSED_DATA}" "${REMOTE_USERNAME}@${REMOTE_IP}:${REMOTE_PATH}"

if [ $? -ne 0 ];then

echo "将备份文件上传到远程服务器失败!";

echo "异常终止备份任务!"

exit 1;

fi

echo "7.删除dmp文件和日志文件"

find "${BACK_DIR}" -type f -name "${FILE_NAME}_*.log" -exec rm {} \;

if [ $? -ne 0 ];then

echo "删除${FILE_NAME}_*.log失败!";

fi

find "${BACK_DIR}" -type f -name "${FILE_NAME}_*.dmp" -exec rm {} \;

if [ $? -ne 0 ];then

echo "删除${FILE_NAME}_*.dmp失败!";

fi

# echo "8.删除备份压缩包"

# find "${BACK_DIR}" -type f -name "${FILE_NAME}_*.tar.gz" -exec rm {} \;

# if [ $? -ne 0 ];then

# echo "删除${FILE_NAME}_*.dmp失败!";

# fi

echo "8.删除${DAYS}天前的备份压缩包"

find "${BACK_DIR}" -type f -name "${FILE_NAME}_*.tar.gz" -mtime +"${DAYS}" -exec rm -rf {} \;

if [ $? -ne 0 ];then

echo "删除${DAYS}天前的备份压缩包失败!";

fi

echo "备份完成!"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值