Linux环境下Oracle数据库备份策略设计
物理备份是Oracle数据库备份的核心,通过直接复制数据库物理文件(数据文件、控制文件、归档日志、SPFILE等)实现,分为冷备份和热备份两类:
shutdown immediate),备份所有关键文件(数据文件位于$ORACLE_BASE/oradata/<SID>/、控制文件位于$ORACLE_BASE/diag/rdbms/<SID>/trace/、归档日志位于$ORACLE_BASE/archivelog/)。优点是备份速度快、恢复简单(直接覆盖文件即可);缺点是需停机,无法实现点恢复。适用于非业务高峰期的全量备份(如每周日凌晨)。alter database archivelog;),备份时通过alter tablespace <表空间名> begin backup;将表空间置于备份状态,复制数据文件后再执行alter tablespace <表空间名> end backup;结束备份。优点是无需停机,支持点恢复(结合归档日志恢复到故障前状态);缺点是操作复杂,需监控备份期间的I/O负载。适用于24×7运行的关键业务数据库(如每日业务结束后执行增量热备份)。逻辑备份通过Oracle工具(expdp/impdp)导出数据库对象(表、视图、存储过程、用户等)的SQL语句或二进制数据,适用于跨平台迁移、特定对象恢复(如误删除表)。常用命令:
expdp system/password@db_name full=y directory=DATA_PUMP_DIR dumpfile=full_db.dmp logfile=full_db.logexpdp system/password@db_name tablespaces=USERS directory=DATA_PUMP_DIR dumpfile=users_ts.dmp logfile=users_ts.logexpdp system/password@db_name tables=SCOTT.EMP directory=DATA_PUMP_DIR dumpfile=emp.dmp logfile=emp.log。根据数据变更频率和业务需求,采用分级备份策略:
backup database plus archivelog;),覆盖上周的全量备份。若采用冷备份,需停机执行;若采用热备份,需在归档模式下进行。backup incremental level 1 database plus archivelog;)。USERS),备份自上次Level 1备份以来变更的数据块(backup incremental level 2 tablespace USERS;)。expdp),每日增量备份关键表(如订单表SALES),补充物理备份的不足。使用Shell脚本+crontab实现备份自动化,避免人工失误:
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
LOG_FILE="/home/oracle/backup/rman_$(date +%Y%m%d).log"
rman target / <<EOF >> $LOG_FILE 2>&1
run {
allocate channel c1 device type disk format '/u01/backup/rman/full_%U';
allocate channel c2 device type disk format '/u01/backup/rman/incremental_%U';
sql 'alter system archive log current';
backup incremental level 1 database plus archivelog;
crosscheck backupset;
delete noprompt obsolete;
release channel c1;
release channel c2;
}
EOF
0 23 * * * /home/oracle/scripts/rman_backup.sh
delete noprompt archivelog until time "sysdate - 7";,保留7天内的归档日志,避免磁盘空间耗尽。configure retention policy设置备份保留规则:
configure retention policy to recovery window of 7 days;(保留7天内可恢复的备份,自动删除过期备份)。configure retention policy to redundancy 2;(保留2份全量备份,删除多余的全量备份)。/u01/backup/、异地磁盘/mnt/remote_backup/、云存储),避免单点故障。例如,每日备份存储在本地,每周备份同步到异地。archive log list;(需处于归档模式)。rman target /; list backup;(确认备份文件未损坏)。shutdown immediate;startup mount;restore database;recover database;alter database open;shutdown immediate;startup mount;run { set until scn 1234567; restore database; recover database; }alter database open resetlogs;(重置日志序列号,避免归档日志循环)。rman target /; validate backupset <备份集ID>;,验证备份文件的完整性。