Oracle数据库备份主要分为逻辑备份(Data Pump)和物理备份(RMAN、冷备份),以下是具体步骤:
逻辑备份通过导出数据库对象(表、视图、索引等)的逻辑结构和数据,适用于跨平台迁移或选择性恢复。
/mnt/oracle/backup):su - oracle
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/mnt/oracle/backup';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO PUBLIC;
EXIT;
expdp(导出)工具进行全库备份,指定目录、转储文件名及备份模式(full=y表示全库):expdp system/your_password@orcl DIRECTORY=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=expdp_full.log full=y
expdp_full.log)确认无错误。物理备份直接复制数据库文件(数据文件、控制文件、归档日志等),支持精确恢复至某一时间点,是企业常用备份方式。
RMAN是Oracle推荐的物理备份工具,支持增量备份、压缩和加密。
rman target /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP DATABASE命令备份全库(包括数据文件、控制文件、归档日志),并开启归档模式(确保能恢复至任意时间点):rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
LIST BACKUP命令查看备份集信息,确认备份完整性:rman target /
LIST BACKUP;
冷备份适用于不需要数据库持续运行的场景,操作简单但影响业务。
SHUTDOWN状态:sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
tar命令打包数据文件(位于$ORACLE_BASE/oradata/orcl)、控制文件(位于$ORACLE_BASE/diag/rdbms/orcl/trace)和重做日志文件(位于$ORACLE_BASE/diag/rdbms/orcl/trace):sudo tar -zcvf cold_backup.tar.gz $ORACLE_BASE/oradata/orcl $ORACLE_BASE/diag/rdbms/orcl/trace
sqlplus / as sysdba
STARTUP;
EXIT;
恢复流程需根据备份类型(逻辑/物理)和故障场景(数据文件损坏、误删除表、全库丢失)选择对应方法:
逻辑恢复用于恢复逻辑备份中的数据,适用于选择性恢复(如某张表或某个用户)。
DATA_PUMP_DIR)存在并可访问。impdp(导入)工具从转储文件恢复数据,full=y表示恢复全库,remap_schema可用于跨用户恢复:impdp system/your_password@orcl DIRECTORY=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=impdp_full.log full=y
sqlplus / as sysdba
SELECT COUNT(*) FROM your_table;
EXIT;
物理恢复用于恢复数据库文件级别的损坏,分为控制文件恢复、数据文件恢复和全库恢复。
RMAN恢复支持增量恢复、时间点恢复(PITR),是企业常用恢复方式。
RESTORE CONTROLFILE命令从备份中恢复(需提前备份控制文件):rman target /
RESTORE CONTROLFILE FROM '/mnt/oracle/backup/controlfile.bak';
ALTER DATABASE MOUNT;
system01.dbf),使用RESTORE DATAFILE命令恢复,并应用归档日志:rman target /
RESTORE DATAFILE '/mnt/oracle/oradata/orcl/system01.dbf';
RECOVER DATAFILE '/mnt/oracle/oradata/orcl/system01.dbf';
ALTER DATABASE OPEN;
RECOVER DATABASE UNTIL TIME命令:rman target /
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE UNTIL TIME "TO_DATE('2025-09-20 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN RESETLOGS;
冷备份恢复用于数据库完全丢失的场景,需关闭数据库并还原所有文件。
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
sudo tar -zxvf cold_backup.tar.gz -C /
sqlplus / as sysdba
STARTUP;
EXIT;
闪回技术是Oracle的高级功能,可快速恢复数据至某一时间点,无需完整恢复流程,适用于误操作(如误删除表、误更新数据)。
sqlplus / as sysdba
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/mnt/oracle/flashback' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
FLASHBACK TABLE your_table TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);
rman target /
FLASHBACK DATABASE TO TIMESTAMP "TO_DATE('2025-09-20 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN;
ARCHIVELOG),否则无法恢复至任意时间点。