适用场景:需要跨平台迁移、选择性备份(如特定表空间、用户)或快速恢复单个对象。
操作步骤:
/backup/oracle),并配置Oracle目录对象:SQL> CREATE DIRECTORY backup_dir AS '/backup/oracle';
expdp(数据泵导出工具)备份整个数据库或特定对象,指定目录对象、转储文件名及日志文件:expdp system/password@orcl DIRECTORY=backup_dir DUMPFILE=full_backup_$(date +%F).dmp LOGFILE=full_backup_$(date +%F).log FULL=Y
FULL=Y:备份整个数据库;若需备份特定用户,替换为SCHEMAS=username;若需备份表空间,替换为TABLESPACES=tablespace_name。gzip减少存储空间占用:gzip /backup/oracle/full_backup_$(date +%F).dmp
crontab -e
# 添加以下行
0 2 * * * /path/to/expdp_backup.sh
适用场景:需要高性能备份、增量备份或满足企业级恢复要求(如归档日志模式)。
操作步骤:
sqlplus / as sysdba
SQL> rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/rman_full_%U.bak';
FORMAT:指定备份文件路径及命名规则(%U为唯一标识符);若需备份控制文件,添加INCLUDING CONTROLFILE。RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle/rman_incr_%U.bak';
RMAN> LIST BACKUP SUMMARY;
RMAN> VALIDATE BACKUPSET <backup_set_id>;
控制文件:数据库的“蓝图”,记录数据文件、重做日志文件的位置及数据库状态,需定期备份(建议每次结构变更后备份)。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/backup/oracle/controlfile_backup.ctl';
归档日志:记录所有更改数据的事务信息,是恢复的关键。确保数据库处于归档模式(ARCHIVELOG),并定期备份归档日志目录:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
适用场景:逻辑备份文件损坏、误删除对象或跨平台迁移。
操作步骤:
.dmp)存在于指定目录(如/backup/oracle)。impdp恢复数据,可选择恢复整个数据库或特定对象:impdp system/password@orcl DIRECTORY=backup_dir DUMPFILE=full_backup_20250930.dmp LOGFILE=import_$(date +%F).log FULL=Y
TABLES=table1,table2;若需覆盖现有数据,添加TABLE_EXISTS_ACTION=REPLACE。适用场景:数据文件损坏、数据库崩溃或逻辑备份失效。
操作步骤:
RMAN> RESTORE CONTROLFILE FROM '/backup/oracle/controlfile_backup.ctl';
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
USERS)损坏,可将表空间离线后恢复:SQL> ALTER TABLESPACE users OFFLINE IMMEDIATE;
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
SQL> ALTER TABLESPACE users ONLINE;
system01.dbf)损坏,需将其离线后恢复:SQL> ALTER DATABASE DATAFILE '/u01/oradata/orcl/system01.dbf' OFFLINE;
RMAN> RESTORE DATAFILE '/u01/oradata/orcl/system01.dbf';
RMAN> RECOVER DATAFILE '/u01/oradata/orcl/system01.dbf';
SQL> ALTER DATABASE DATAFILE '/u01/oradata/orcl/system01.dbf' ONLINE;
UNTIL TIME或UNTIL SCN语法:RMAN> RUN {
SET UNTIL TIME="TO_DATE('2025-09-30 18:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS; -- 重置重做日志,数据库会创建新的 incarnation
适用场景:误删除数据、误修改表结构或需要快速回退到某个时间点(需开启Flashback功能)。
操作步骤:
ARCHIVELOG模式,并启用Flashback:SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/backup/oracle/flashback' SCOPE=BOTH;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
FLASHBACK DATABASE命令回退到指定时间点:SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-09-30 18:00:00', 'YYYY-MM-DD HH24:MI:SS');
SQL> ALTER DATABASE OPEN RESETLOGS;
VALIDATE BACKUPSET),确保备份可用。SYSDBA或具有相应权限的用户执行。通过以上策略,可在CentOS环境下实现Oracle数据库的有效备份与恢复,保障数据安全。