適用場景:需要跨平臺遷移、選擇性備份(如特定表空間、用戶)或快速恢復單個對象。
操作步驟:
/backup/oracle),并配置Oracle目錄對象:SQL> CREATE DIRECTORY backup_dir AS '/backup/oracle';
expdp(數據泵導出工具)備份整個數據庫或特定對象,指定目錄對象、轉儲文件名及日志文件:expdp system/password@orcl DIRECTORY=backup_dir DUMPFILE=full_backup_$(date +%F).dmp LOGFILE=full_backup_$(date +%F).log FULL=Y
FULL=Y:備份整個數據庫;若需備份特定用戶,替換為SCHEMAS=username;若需備份表空間,替換為TABLESPACES=tablespace_name。gzip減少存儲空間占用:gzip /backup/oracle/full_backup_$(date +%F).dmp
crontab -e
# 添加以下行
0 2 * * * /path/to/expdp_backup.sh
適用場景:需要高性能備份、增量備份或滿足企業級恢復要求(如歸檔日志模式)。
操作步驟:
sqlplus / as sysdba
SQL> rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/rman_full_%U.bak';
FORMAT:指定備份文件路徑及命名規則(%U為唯一標識符);若需備份控制文件,添加INCLUDING CONTROLFILE。RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle/rman_incr_%U.bak';
RMAN> LIST BACKUP SUMMARY;
RMAN> VALIDATE BACKUPSET <backup_set_id>;
控制文件:數據庫的“藍圖”,記錄數據文件、重做日志文件的位置及數據庫狀態,需定期備份(建議每次結構變更后備份)。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/backup/oracle/controlfile_backup.ctl';
歸檔日志:記錄所有更改數據的事務信息,是恢復的關鍵。確保數據庫處于歸檔模式(ARCHIVELOG),并定期備份歸檔日志目錄:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
適用場景:邏輯備份文件損壞、誤刪除對象或跨平臺遷移。
操作步驟:
.dmp)存在于指定目錄(如/backup/oracle)。impdp恢復數據,可選擇恢復整個數據庫或特定對象:impdp system/password@orcl DIRECTORY=backup_dir DUMPFILE=full_backup_20250930.dmp LOGFILE=import_$(date +%F).log FULL=Y
TABLES=table1,table2;若需覆蓋現有數據,添加TABLE_EXISTS_ACTION=REPLACE。適用場景:數據文件損壞、數據庫崩潰或邏輯備份失效。
操作步驟:
RMAN> RESTORE CONTROLFILE FROM '/backup/oracle/controlfile_backup.ctl';
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
USERS)損壞,可將表空間離線后恢復:SQL> ALTER TABLESPACE users OFFLINE IMMEDIATE;
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
SQL> ALTER TABLESPACE users ONLINE;
system01.dbf)損壞,需將其離線后恢復:SQL> ALTER DATABASE DATAFILE '/u01/oradata/orcl/system01.dbf' OFFLINE;
RMAN> RESTORE DATAFILE '/u01/oradata/orcl/system01.dbf';
RMAN> RECOVER DATAFILE '/u01/oradata/orcl/system01.dbf';
SQL> ALTER DATABASE DATAFILE '/u01/oradata/orcl/system01.dbf' ONLINE;
UNTIL TIME或UNTIL SCN語法:RMAN> RUN {
SET UNTIL TIME="TO_DATE('2025-09-30 18:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS; -- 重置重做日志,數據庫會創建新的 incarnation
適用場景:誤刪除數據、誤修改表結構或需要快速回退到某個時間點(需開啟Flashback功能)。
操作步驟:
ARCHIVELOG模式,并啟用Flashback:SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/backup/oracle/flashback' SCOPE=BOTH;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
FLASHBACK DATABASE命令回退到指定時間點:SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-09-30 18:00:00', 'YYYY-MM-DD HH24:MI:SS');
SQL> ALTER DATABASE OPEN RESETLOGS;
VALIDATE BACKUPSET),確保備份可用。SYSDBA或具有相應權限的用戶執行。通過以上策略,可在CentOS環境下實現Oracle數據庫的有效備份與恢復,保障數據安全。