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"}]
Oracle备份数据库expdp数据恢复

更多数据库