在 Debian 上的 Oracle 备份与恢复实践
一 备份策略与准备
二 RMAN 物理备份与恢复步骤
rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/full_%U';
rman target /
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle/incr_%U';
rman target /
RMAN> BACKUP ARCHIVELOG ALL FORMAT '/backup/oracle/arch_%U';
cat > /opt/scripts/rman_backup.rman <<'EOF'
RUN {
ALLOCATE CHANNEL ch1 TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/full_%U';
RELEASE CHANNEL ch1;
}
EOF
rman target / @/opt/scripts/rman_backup.rman
# 建议配合 Debian 的 crontab 定时执行并做日志轮转
rman target /
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
rman target /
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE UNTIL SCN 12345678;
RMAN> RECOVER DATABASE UNTIL SCN 12345678;
RMAN> ALTER DATABASE OPEN RESETLOGS;
rman target /
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM '/backup/oracle/ctrl_XXXX.bkp';
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
三 Data Pump 逻辑备份与恢复步骤
# 1) 创建目录对象(仅需一次)
sqlplus / as sysdba
SQL> CREATE DIRECTORY dp_dir AS '/backup/oracle/dp';
SQL> GRANT READ, WRITE ON DIRECTORY dp_dir TO system;
# 2) 全库导出
expdp system/password@orcl DIRECTORY=dp_dir DUMPFILE=full_$(date +%F).dmp \
LOGFILE=full_$(date +%F).log FULL=Y PARALLEL=2
# 1) 目标库创建相同目录对象并赋权
sqlplus / as sysdba
SQL> CREATE DIRECTORY dp_dir AS '/backup/oracle/dp';
SQL> GRANT READ, WRITE ON DIRECTORY dp_dir TO system;
# 2) 全库导入(可按需调整 REMAP_SCHEMA/REMAP_TABLESPACE)
impdp system/password@orcl DIRECTORY=dp_dir DUMPFILE=full_2025-12-09.dmp \
LOGFILE=imp_$(date +%F).log FULL=Y PARALLEL=2 TABLE_EXISTS_ACTION=REPLACE
四 冷备份与注意事项
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
# 备份关键文件:参数文件、控制文件、数据文件、联机重做日志、归档目录、口令文件等
SQL> STARTUP;
说明:冷备操作简单,但必须停机,且通常不支持细粒度时间点恢复;适合维护窗口或迁移前的快照式备份。