Oracle数据库自动备份脚本
Oracle数据库自动备份脚本,使用expdp数据泵导出,支持全库/指定用户备份,自动压缩、清理旧备份
详细内容
#!/bin/bash
# Oracle数据库自动备份脚本
# 使用expdp数据泵自动备份Oracle数据库
ORACLE_HOME="/u01/app/oracle/product/19c/dbhome_1"
ORACLE_SID="ORCL"
ORACLE_USER="system"
ORACLE_PASSWORD="your_password"
BACKUP_DIR="/backup/oracle"
BACKUP_PREFIX="oracle_backup"
KEEP_DAYS=7
SCHEMA_NAME=""
EXPORT_TYPE="full"
LOG_FILE="/var/log/oracle_backup.log"
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_SID=$ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
mkdir -p "$BACKUP_DIR"
log_msg() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log_msg "===== Oracle备份开始 ====="
log_msg "数据库: $ORACLE_SID, 类型: $EXPORT_TYPE"
DATE=$(date '+%Y%m%d_%H%M%S')
BACKUP_NAME="${BACKUP_PREFIX}_${DATE}"
DUMP_FILE="$BACKUP_DIR/${BACKUP_NAME}.dmp"
EXPORT_LOG="$BACKUP_DIR/${BACKUP_NAME}.log"
# 执行expdp备份
EXPDP_CMD="expdp $ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_SID "
if [ "$EXPORT_TYPE" = "full" ]; then
EXPDP_CMD="$EXPDP_CMD FULL=Y "
else
EXPDP_CMD="$EXPDP_CMD SCHEMAS=$SCHEMA_NAME "
fi
EXPDP_CMD="$EXPDP_CMD DUMPFILE=$DUMP_FILE LOGFILE=$EXPORT_LOG COMPRESSION=ALL"
if eval "$EXPDP_CMD" >> "$LOG_FILE" 2>&1; then
log_msg "✓ expdp导出成功"
else
log_msg "✗ expdp导出失败"
exit 1
fi
# 压缩备份
if [ -f "$DUMP_FILE" ]; then
gzip -f "$DUMP_FILE"
FILE_SIZE=$(du -h "${DUMP_FILE}.gz" | awk '{print $1}')
log_msg "备份文件: ${DUMP_FILE}.gz ($FILE_SIZE)"
fi
# 清理旧备份
DELETED=$(find "$BACKUP_DIR" -name "${BACKUP_PREFIX}_*" -mtime +$KEEP_DAYS -print -delete | wc -l)
log_msg "已删除 $DELETED 个旧备份"
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | awk '{print $1}')
log_msg "备份目录大小: $TOTAL_SIZE"
log_msg "===== Oracle备份完成 ✓ ====="
适配环境
适配系统:CentOS 7+,Ubuntu 18.04+,Debian 10+
依赖环境:bash 4.0+
参数说明
[{"name": "ORACLE_HOME", "label": "ORACLE_HOME\u8def\u5f84", "default": "/u01/app/oracle/product/19c/dbhome_1"}, {"name": "ORACLE_SID", "label": "ORACLE_SID", "default": "ORCL"}, {"name": "ORACLE_USER", "label": "\u7528\u6237\u540d", "default": "system"}, {"name": "ORACLE_PASSWORD", "label": "\u5bc6\u7801", "default": "your_password"}, {"name": "EXPORT_TYPE", "label": "\u5907\u4efd\u7c7b\u578b(full/schema)", "default": "full"}, {"name": "BACKUP_DIR", "label": "\u5907\u4efd\u76ee\u5f55", "default": "/backup/oracle"}, {"name": "KEEP_DAYS", "label": "\u4fdd\u7559\u5929\u6570", "default": "7"}]