Linux上Oracle数据库备份策略
一 策略总览与取舍
二 推荐备份策略组合
三 RMAN实施步骤与脚本示例
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
BACKUP_DIR="/backup/rman"
LOG_DIR="$BACKUP_DIR/log"
mkdir -p "$BACKUP_DIR" "$LOG_DIR"
LOG="$LOG_DIR/rman_daily_$(date +%F_%H%M%S).log"
rman target / nocatalog log=$LOG <<'EOF'
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BACKUP_DIR}/control_%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '${BACKUP_DIR}/incr_%d_%T_%U';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT '${BACKUP_DIR}/incr_%d_%T_%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG DELETE INPUT;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT ARCHIVELOG UNTIL TIME "SYSDATE - 7";
EXIT
EOF
# crontab -e
0 2 * * * /home/oracle/bin/rman_daily.sh >> /backup/rman/log/rman_cron.log 2>&1
四 Data Pump逻辑备份补充
五 恢复要点与演练