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
或數據被誤刪除;通過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
。