Oracle数据库备份主要分为逻辑备份(Data Pump)和物理备份(RMAN、冷备份/热备份),以下是具体步骤:
逻辑备份通过expdp(导出)和impdp(导入)工具实现,适用于导出表结构、数据和存储过程等逻辑对象,适合跨数据库版本迁移或选择性恢复。
sqlplus以sysdba身份登录数据库:sqlplus / as sysdba;/backup/oracle_exp):CREATE DIRECTORY exp_dir AS '/backup/oracle_exp';
③ 执行导出命令(全量导出示例):expdp system/password@ORCL DIRECTORY=exp_dir DUMPFILE=full_backup.dmp LOGFILE=exp_full.log FULL=Y
参数说明:DIRECTORY指向逻辑目录对象,DUMPFILE指定备份文件名,LOGFILE记录导出日志,FULL=Y表示全量导出。物理备份直接复制数据库文件(数据文件、控制文件、归档日志等),分为冷备份(数据库关闭时)和热备份(数据库运行时,需开启归档模式)。
SHUTDOWN IMMEDIATE;
② 复制数据库文件到备份目录(如/backup/oracle_cold):cp -R $ORACLE_HOME/dbs /backup/oracle_cold/
cp -R $ORACLE_BASE/oradata/ORCL /backup/oracle_cold/
③ 启动数据库:STARTUP;
冷备份恢复时直接覆盖原文件即可,但无法实现时间点恢复。ALTER DATABASE ARCHIVELOG;并重启数据库)。ALTER TABLESPACE USERS BEGIN BACKUP;
② 复制数据文件到备份目录(如/backup/oracle_hot):cp -R $ORACLE_BASE/oradata/ORCL/Users01.dbf /backup/oracle_hot/
③ 结束备份模式:ALTER TABLESPACE USERS END BACKUP;
④ 备份归档日志(可选但推荐,用于时间点恢复):ALTER SYSTEM ARCHIVE LOG CURRENT;
热备份恢复时需结合归档日志,可实现恢复到特定时间点。RMAN(Recovery Manager)是Oracle原生物理备份工具,支持全量、增量、累积备份及压缩,适合生产环境。
rman target /
BACKUP DATABASE FORMAT '/backup/oracle_rman/full_%U.bak';
rman target /
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle_rman/incr_%U.bak';
rman target /
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/oracle_rman/arch_%U.bak';
参数说明:FORMAT指定备份路径(%U为自动生成的唯一标识符),DELETE INPUT备份后删除归档日志以节省空间。恢复流程需根据备份类型选择对应工具,以下是常见场景的恢复步骤:
适用于逻辑备份损坏或需要迁移数据到其他数据库的场景。
CREATE DIRECTORY imp_dir AS '/backup/oracle_imp';
② 执行导入命令(全量恢复示例):impdp system/password@ORCL DIRECTORY=imp_dir DUMPFILE=full_backup.dmp LOGFILE=imp_full.log FULL=Y
③ 若需覆盖现有数据,可添加REMAP_TABLESPACE(重映射表空间)或TABLE_EXISTS_ACTION=REPLACE(替换已有表)参数。SHUTDOWN IMMEDIATE;
② 覆盖原数据库文件(将备份目录中的文件复制到原路径,如$ORACLE_BASE/oradata/ORCL):cp -R /backup/oracle_cold/ORCL/* $ORACLE_BASE/oradata/ORCL/
③ 启动数据库:STARTUP;
冷备份恢复后数据库会回到备份时的状态,无法恢复备份后的数据。ALTER TABLESPACE USERS BEGIN BACKUP;
② 覆盖数据文件(从热备份目录复制到原路径):cp -R /backup/oracle_hot/Users01.dbf $ORACLE_BASE/oradata/ORCL/
③ 结束恢复模式:ALTER TABLESPACE USERS END BACKUP;
④ 恢复归档日志(若有):RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
⑤ 打开数据库:ALTER DATABASE OPEN RESETLOGS;
RESETLOGS会清空重做日志,生成新的日志序列,适用于不完全恢复。rman target /
RESTORE DATABASE;
RECOVER DATABASE;
rman target /
RESTORE DATABASE;
RECOVER DATABASE;
RMAN会自动识别增量备份文件并应用。2025-09-20 10:00:00),需添加UNTIL TIME参数:rman target /
RESTORE DATABASE;
RECOVER DATABASE UNTIL TIME "TO_DATE('2025-09-20 10:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN RESETLOGS;
时间点恢复需确保归档日志完整,否则无法恢复到指定时间。SYSDBA权限,备份目录存在且有读写权限(如chmod -R 777 /backup/oracle_*)。ALTER DATABASE ARCHIVELOG;),可通过ARCHIVE LOG LIST命令检查。RMAN VALIDATE BACKUPSET;验证备份文件的完整性,避免备份失效。crontab设置定时任务(如每天凌晨2点执行RMAN备份),减少人工干预:0 2 * * * /usr/bin/rman target / <<EOF
BACKUP DATABASE FORMAT '/backup/oracle_rman/full_%U.bak';
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/oracle_rman/arch_%U.bak';
EXIT;
EOF