Ubuntu下Oracle数据库恢复策略
RMAN是Oracle官方推荐的物理备份恢复工具,支持全量、增量、差异备份及恢复,适用于数据库损坏、数据文件丢失等场景。
sqlplus / as sysdba → SHUTDOWN IMMEDIATE;rman target /;RESTORE DATABASE;(恢复数据文件、控制文件)→ RECOVER DATABASE;(应用归档日志);ALTER DATABASE OPEN;(若需重置日志,添加RESETLOGS选项)。RECOVER DATABASE UNTIL TIME 'YYYY-MM-DD HH24:MI:SS';RESTORE CONTROLFILE FROM '/backup/controlfile.bak'; → ALTER DATABASE MOUNT; → RECOVER DATABASE;RESTORE ARCHIVELOG ALL; → RECOVER DATABASE;。逻辑恢复通过导出/导入工具实现,适用于跨平台迁移、表结构损坏或特定对象(如表、视图)恢复。
expdp system/password@SID schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=backup.dmp logfile=export.log;DATA_PUMP_DIR目录;impdp system/password@SID schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=backup.dmp logfile=import.log(FULL=Y表示全库恢复)。TABLES=TABLE_NAME参数,仅恢复指定表;REMAP_TABLE=NEW_TABLE_NAME(重命名表)或TABLE_EXISTS_ACTION=REPLACE(替换现有表);directory为目标数据库的目录对象。Flashback是Oracle的闪回功能,无需恢复备份即可快速回滚数据库到指定时间点,适用于误操作(如误删数据、误执行SQL)。
FLASHBACK DATABASE功能(ALTER DATABASE ARCHIVELOG; → ALTER DATABASE ENABLE FLASHBACK;)。SELECT * FROM V$FLASHBACK_DATABASE_LOG;(确认OLDEST_FLASHBACK_SCN和OLdest_FLASHBACK_TIME);FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-09-20 10:00:00', 'YYYY-MM-DD HH24:MI:SS');;ALTER DATABASE OPEN RESETLOGS;(重置日志以清除闪回状态)。ODU是第三方工具,用于直接从Oracle数据文件中提取表数据,适用于数据库无法启动(如控制文件损坏)、SYSTEM表空间完整但数据文件损坏的场景。
TRUNCATE、DROP或数据被误删除;odu -connect "system/password@SID" -table SCHEMA.TABLE_NAME -output /path/to/output.csv(导出为CSV格式)。通过Linux系统工具(如tar、rsync、cp)备份数据库数据文件、控制文件、归档日志,适用于物理文件损坏或误删除。
tar打包数据文件目录:tar -zcvf oracle_data.tar.gz /u01/app/oracle/oradata/ORCL;rsync同步到远程服务器:rsync -avz /u01/app/oracle/oradata/ORCL user@remote:/backup/oracle.sudo systemctl stop oracle;tar -zxvf oracle_data.tar.gz -C /u01/app/oracle/oradata/ORCL;sudo systemctl start oracle。