ARCHIVE LOG LIST验证,若未开启,可通过SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;开启)。SYSDBA权限的用户(如sys)登录,或创建专用备份用户并授权(如GRANT CREATE SESSION, BACKUP ANY DATABASE, RECOVERY CATALOG OWNER TO backup_user;)。/u01/backup/full、/u01/backup/incremental、/u01/backup/archivelog),并赋予Oracle用户读写权限(chown -R oracle:oinstall /u01/backup; chmod -R 750 /u01/backup)。使用RMAN(Recovery Manager)进行全量备份,生成数据库的完整副本,适合首次备份或灾难恢复。
rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE FORMAT '/u01/backup/full/full_%U.bak' TAG 'FULL_BACKUP'; BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/full/controlfile_%U.bak'; RELEASE CHANNEL ch1; } 说明:FORMAT参数指定备份文件路径及命名规则(%U为RMAN自动生成的唯一标识符);TAG用于标识备份类型,便于后续管理。
在全量备份基础上,进行增量备份(Level 1),仅捕获自上次备份以来的变更,减少备份时间和存储占用。
rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 1 DATABASE TAG 'INCREMENTAL_BACKUP' FORMAT '/u01/backup/incremental/incr_%U.bak'; RELEASE CHANNEL ch1; } 注意:增量备份需依赖最近的全量备份,建议每周执行一次全量备份,每日执行增量备份。
归档日志记录了数据库的所有变更,是实现时间点恢复(PITR)的核心。定期备份归档日志,避免日志文件占满磁盘。
rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/u01/backup/archivelog/arch_%U.bak' TAG 'ARCHIVE_LOG_BACKUP'; RELEASE CHANNEL ch1; } 说明:DELETE INPUT参数备份后自动删除已备份的归档日志,释放空间。
使用expdp(数据泵导出)工具导出数据库对象(如表、视图、存储过程),适合需要导出特定数据或跨数据库迁移的场景。
# 创建逻辑备份目录对象 sqlplus / as sysdba <<EOF CREATE DIRECTORY expdp_dir AS '/u01/backup/expdp'; EXIT; EOF # 执行导出(全量) expdp sys/password@orcl DIRECTORY=expdp_dir DUMPFILE=full_exp.dmp LOGFILE=full_exp.log FULL=Y 说明:FULL=Y表示导出整个数据库;若需导出特定用户或表,可替换为SCHEMAS=username或TABLES=table1,table2。
/u01/backup)。若数据库完全损坏,需从最近的全量备份恢复,再应用增量备份和归档日志。
rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; RESTORE DATABASE; # 恢复数据库文件(数据文件、控制文件) RECOVER DATABASE; # 应用归档日志和增量备份(若有) RELEASE CHANNEL ch1; } 说明:RECOVER DATABASE会自动检测并应用归档日志,若存在增量备份,需先执行RESTORE DATABASE,再依次应用增量备份(如RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;)。
若需恢复到某一特定时间(如误删除数据前),需结合归档日志进行时间点恢复。
rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; RESTORE DATABASE; RECOVER DATABASE UNTIL TIME '2025-10-10:18:00:00'; # 指定恢复时间 RELEASE CHANNEL ch1; } 说明:恢复完成后,数据库将处于“未打开”状态,需手动打开(ALTER DATABASE OPEN RESETLOGS;),RESETLOGS会重置重做日志,创建新的备份周期。
若需恢复特定表或用户数据,可使用impdp导入逻辑备份。
# 创建逻辑恢复目录对象 sqlplus / as sysdba <<EOF CREATE DIRECTORY impdp_dir AS '/u01/backup/expdp'; EXIT; EOF # 执行导入(全量) impdp sys/password@orcl DIRECTORY=impdp_dir DUMPFILE=full_exp.dmp LOGFILE=full_imp.log FULL=Y 说明:若需导入到现有数据库,可添加TABLE_EXISTS_ACTION=APPEND(追加数据)或REMAP_SCHEMA=old_schema:new_schema(映射用户)。
sqlplus / as sysdba),执行SELECT COUNT(*) FROM v\$datafile;确认数据文件数量与备份前一致;执行SELECT * FROM v\$log;确认重做日志状态正常。SELECT * FROM employees WHERE employee_id = 100;),验证数据是否与备份前一致。crontab -e添加0 3 * * * find /u01/backup -type f -mtime +30 -exec rm {} \;),删除30天前的备份文件,避免磁盘空间耗尽。RMAN VALIDATE BACKUPSET;命令验证备份文件的完整性,确保存储介质无损坏。