Linux上Oracle备份实操指南
一、常用备份方式与适用场景
二、RMAN物理备份与恢复步骤
rman target /
RUN {
ALLOCATE CHANNEL c1 TYPE DISK;
ALLOCATE CHANNEL c2 TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP CURRENT CONTROLFILE;
BACKUP SPFILE;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
rman target /
BACKUP INCREMENTAL LEVEL 1 DATABASE;
rman target /
RUN {
STARTUP FORCE NOMOUNT;
RESTORE CONTROLFILE FROM '/backup/rman/...ctl';
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
rman target /
RUN {
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
DELETE NOPROMPT BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE-15';
DELETE NOPROMPT BACKUP OF ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-15';
}
以上命令覆盖RMAN热备、归档日志联备、控制文件/SPFILE备份与恢复流程,并给出过期与保留策略的维护范式。
三、Data Pump逻辑备份与恢复步骤
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY bak_dir AS '/opt/oracle/bak_dir';
GRANT READ, WRITE ON DIRECTORY bak_dir TO system;
expdp system/password@SID DIRECTORY=bak_dir \
DUMPFILE=DB_backup_%U.dmp LOGFILE=expdp_full.log FULL=Y PARALLEL=4
impdp system/password@SID DIRECTORY=bak_dir \
DUMPFILE=DB_backup_%U.dmp LOGFILE=impdp_restore.log FULL=Y PARALLEL=4
expdp system/password@SID DIRECTORY=bak_dir \
DUMPFILE=expdp_user.dmp LOGFILE=expdp_user.log SCHEMAS=SCOTT
impdp system/password@SID DIRECTORY=bak_dir \
DUMPFILE=expdp_user.dmp LOGFILE=impdp_user.log \
REMAP_SCHEMA=SCOTT:SCOTT_NEW TABLE_EXISTS_ACTION=TRUNCATE
四、自动化与保留策略
# 每日全备
0 2 * * * /home/oracle/scripts/rman_full.sh >> /home/oracle/backup/rman_full.log 2>&1
# 周日0级增量
30 0 * * 0 /home/oracle/scripts/rman_level0.sh >> /home/oracle/backup/rman_l0.log 2>&1
# 周一到周六1级增量
30 0 * * 1-6 /home/oracle/scripts/rman_level1.sh >> /home/oracle/backup/rman_l1.log 2>&1
rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;