Linux 上 Oracle 备份恢复实用技巧
一、策略与准备
df -h、free -m),确保备份目录可写且容量充足。二、RMAN 热备份与时间点恢复(推荐)
rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/oracle/rman/autoback_%F';
rman target / <<'EOF'
RUN {
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
}
EOF
rman target /
RUN {
STARTUP FORCE MOUNT;
SET UNTIL TIME '2025-12-04 10:00:00'; -- 或 SET UNTIL SCN <scn>;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
RESTORE 用于还原全备/0级增量/镜像副本到当前或指定位置;RMAN默认选择“最省恢复步骤”的备份。ALTER DATABASE RENAME FILE 调整控制文件中的文件路径。RESTORE PLUGGABLE DATABASE <pdb_name>。三、Data Pump 逻辑备份与迁移
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/opt/oracle/dp';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO system;
# 导出
expdp system/******@ORCL DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=full_20251204.dmp LOGFILE=expdp_full_20251204.log FULL=Y PARALLEL=4
# 导入
impdp system/******@ORCL DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=full_20251204.dmp LOGFILE=impdp_full_20251204.log FULL=Y PARALLEL=4 \
TABLE_EXISTS_ACTION=REPLACE
SCHEMAS=<schema>、TABLES=<schema.table>、REMAP_SCHEMA、REMAP_TABLESPACE、EXCLUDE/INCLUDE。四、冷备份与异机恢复(停机窗口可用)
SQL> SHUTDOWN IMMEDIATE;CREATE PFILE='/backup/initorcl.ora' FROM SPFILE;SQL> STARTUP;ALTER DATABASE RENAME FILE 调整。spfile/pfile 与 orapw<sid> 放到目标库 $ORACLE_HOME/dbs/,必要时用 STARTUP PFILE='...' 启动后 CREATE SPFILE FROM PFILE;。STARTUP UPGRADE 打开后执行升级/兼容处理。五、日常运维与常见坑
RMAN CROSSCHECK 校验备份;实施冗余存放(多磁盘/多介质/异地);定期恢复演练验证可用性与流程。RESTORE PLUGGABLE DATABASE。