Oracle數據庫備份主要分為邏輯備份(Data Pump)和物理備份(RMAN、冷備份),以下是具體步驟:
邏輯備份通過導出數據庫對象(表、視圖、索引等)的邏輯結構和數據,適用于跨平臺遷移或選擇性恢復。
/mnt/oracle/backup
):su - oracle
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/mnt/oracle/backup';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO PUBLIC;
EXIT;
expdp
(導出)工具進行全庫備份,指定目錄、轉儲文件名及備份模式(full=y
表示全庫):expdp system/your_password@orcl DIRECTORY=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=expdp_full.log full=y
expdp_full.log
)確認無錯誤。物理備份直接復制數據庫文件(數據文件、控制文件、歸檔日志等),支持精確恢復至某一時間點,是企業常用備份方式。
RMAN是Oracle推薦的物理備份工具,支持增量備份、壓縮和加密。
rman target /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP DATABASE
命令備份全庫(包括數據文件、控制文件、歸檔日志),并開啟歸檔模式(確保能恢復至任意時間點):rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
LIST BACKUP
命令查看備份集信息,確認備份完整性:rman target /
LIST BACKUP;
冷備份適用于不需要數據庫持續運行的場景,操作簡單但影響業務。
SHUTDOWN
狀態:sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
tar
命令打包數據文件(位于$ORACLE_BASE/oradata/orcl
)、控制文件(位于$ORACLE_BASE/diag/rdbms/orcl/trace
)和重做日志文件(位于$ORACLE_BASE/diag/rdbms/orcl/trace
):sudo tar -zcvf cold_backup.tar.gz $ORACLE_BASE/oradata/orcl $ORACLE_BASE/diag/rdbms/orcl/trace
sqlplus / as sysdba
STARTUP;
EXIT;
恢復流程需根據備份類型(邏輯/物理)和故障場景(數據文件損壞、誤刪除表、全庫丟失)選擇對應方法:
邏輯恢復用于恢復邏輯備份中的數據,適用于選擇性恢復(如某張表或某個用戶)。
DATA_PUMP_DIR
)存在并可訪問。impdp
(導入)工具從轉儲文件恢復數據,full=y
表示恢復全庫,remap_schema
可用于跨用戶恢復:impdp system/your_password@orcl DIRECTORY=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=impdp_full.log full=y
sqlplus / as sysdba
SELECT COUNT(*) FROM your_table;
EXIT;
物理恢復用于恢復數據庫文件級別的損壞,分為控制文件恢復、數據文件恢復和全庫恢復。
RMAN恢復支持增量恢復、時間點恢復(PITR),是企業常用恢復方式。
RESTORE CONTROLFILE
命令從備份中恢復(需提前備份控制文件):rman target /
RESTORE CONTROLFILE FROM '/mnt/oracle/backup/controlfile.bak';
ALTER DATABASE MOUNT;
system01.dbf
),使用RESTORE DATAFILE
命令恢復,并應用歸檔日志:rman target /
RESTORE DATAFILE '/mnt/oracle/oradata/orcl/system01.dbf';
RECOVER DATAFILE '/mnt/oracle/oradata/orcl/system01.dbf';
ALTER DATABASE OPEN;
RECOVER DATABASE UNTIL TIME
命令:rman target /
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE UNTIL TIME "TO_DATE('2025-09-20 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN RESETLOGS;
冷備份恢復用于數據庫完全丟失的場景,需關閉數據庫并還原所有文件。
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
sudo tar -zxvf cold_backup.tar.gz -C /
sqlplus / as sysdba
STARTUP;
EXIT;
閃回技術是Oracle的高級功能,可快速恢復數據至某一時間點,無需完整恢復流程,適用于誤操作(如誤刪除表、誤更新數據)。
sqlplus / as sysdba
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/mnt/oracle/flashback' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
FLASHBACK TABLE your_table TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);
rman target /
FLASHBACK DATABASE TO TIMESTAMP "TO_DATE('2025-09-20 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN;
ARCHIVELOG
),否則無法恢復至任意時間點。