SYSDBA
權限;ls -lh
查看文件大小,或使用RMAN VALIDATE BACKUPSET
命令驗證RMAN備份完整性;ARCHIVE LOG LIST
命令確認)。RMAN(Recovery Manager)是Oracle官方推薦的物理備份恢復工具,支持全量、增量及歸檔日志恢復。
# 啟動RMAN并連接目標數據庫(SYSDBA權限)
rman target /
# 恢復數據庫(自動匹配備份文件)
RMAN> RESTORE DATABASE;
# 應用歸檔日志(恢復到最新狀態)
RMAN> RECOVER DATABASE;
# 打開數據庫(若恢復到當前時間點)
RMAN> ALTER DATABASE OPEN;
# 啟動RMAN并連接目標數據庫
rman target /
# 設置恢復點(時間或SCN,例如恢復到2025-09-18 12:00:00)
RMAN> SET UNTIL TIME "TO_DATE('2025-09-18 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
# 恢復數據庫
RMAN> RESTORE DATABASE;
# 應用歸檔日志
RMAN> RECOVER DATABASE;
# 打開數據庫(需重置日志,因恢復到非當前時間點)
RMAN> ALTER DATABASE OPEN RESETLOGS;
若控制文件丟失,需先通過備份恢復,再恢復數據庫:
# 啟動RMAN并連接目標數據庫
rman target /
# 恢復控制文件(需指定備份路徑)
RMAN> RESTORE CONTROLFILE FROM '/backup/controlfile_backup.bck';
# 掛載數據庫
RMAN> ALTER DATABASE MOUNT;
# 恢復數據庫
RMAN> RESTORE DATABASE;
# 應用歸檔日志
RMAN> RECOVER DATABASE;
# 打開數據庫(重置日志)
RMAN> ALTER DATABASE OPEN RESETLOGS;
若僅單個數據文件損壞,可單獨恢復該文件:
# 啟動RMAN并連接目標數據庫
rman target /
# 恢復指定數據文件(例如datafile 2)
RMAN> RESTORE DATAFILE 2;
# 應用歸檔日志
RMAN> RECOVER DATAFILE 2;
# 將數據文件聯機
RMAN> ALTER DATABASE DATAFILE 2 ONLINE;
若歸檔日志丟失,需補充備份的歸檔日志:
# 啟動RMAN并連接目標數據庫
rman target /
# 恢復歸檔日志(指定備份路徑)
RMAN> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
# 然后手動輸入歸檔日志路徑,直到提示“Media recovery complete”
/backup
),并在RMAN中通過CATALOG
命令注冊備份:RMAN> CATALOG START WITH '/backup';
SELECT * FROM V$DATABASE;
確認數據庫狀態。EXPDP(數據泵導出)和IMPDP(數據泵導入)是Oracle的邏輯備份恢復工具,適用于表、用戶或整個數據庫的恢復。
# 啟動SQL*Plus并以SYSDBA身份登錄
sqlplus / as sysdba
# 創建恢復目錄(若不存在)
SQL> CREATE DIRECTORY restore_dir AS '/path/to/restore';
# 授權用戶訪問恢復目錄
SQL> GRANT READ, WRITE ON DIRECTORY restore_dir TO username;
# 退出SQL*Plus
SQL> EXIT;
# 執行IMPDP導入(全量恢復)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=full_db.dmp LOGFILE=full_restore.log FULL=Y;
# 執行IMPDP導入(指定表空間)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=users_ts.dmp LOGFILE=users_restore.log TABLESPACE_NAMES=USERS;
# 執行IMPDP導入(指定表)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=sales_table.dmp LOGFILE=sales_restore.log TABLES=SALES.EMPLOYEES;
若目標數據庫已存在同名表,可使用REMAP_TABLE
或TABLE_EXISTS_ACTION
參數覆蓋:
# 覆蓋現有表(需指定REMAP_TABLE)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=data.dmp LOGFILE=overwrite.log REMAP_TABLE=username.old_table:username.new_table;
# 或使用TABLE_EXISTS_ACTION=REPLACE(替換現有表)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=data.dmp LOGFILE=replace.log TABLE_EXISTS_ACTION=REPLACE;
PARALLEL
參數加速導入(如PARALLEL=4
);SELECT COUNT(*) FROM schema.table;
確認數據一致性。SELECT STATUS FROM V$INSTANCE;
確認數據庫狀態為OPEN
;HR.EMPLOYEES
)的記錄數,與備份前對比;以上步驟覆蓋了Debian系統上Oracle數據庫的常見恢復場景,實際操作中需根據具體問題調整參數(如備份路徑、恢復點時間)。若恢復失敗,建議查看RMAN或IMPDP的日志文件(如alert.log
、restore.log
),定位錯誤原因。