ARCHIVE LOG LIST
驗證,若未開啟,可通過SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
開啟)。SYSDBA
權限的用戶(如sys
)登錄,或創建專用備份用戶并授權(如GRANT CREATE SESSION, BACKUP ANY DATABASE, RECOVERY CATALOG OWNER TO backup_user;
)。/u01/backup/full
、/u01/backup/incremental
、/u01/backup/archivelog
),并賦予Oracle用戶讀寫權限(chown -R oracle:oinstall /u01/backup; chmod -R 750 /u01/backup
)。使用RMAN(Recovery Manager)進行全量備份,生成數據庫的完整副本,適合首次備份或災難恢復。
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP DATABASE FORMAT '/u01/backup/full/full_%U.bak' TAG 'FULL_BACKUP';
BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/full/controlfile_%U.bak';
RELEASE CHANNEL ch1;
}
說明:FORMAT
參數指定備份文件路徑及命名規則(%U
為RMAN自動生成的唯一標識符);TAG
用于標識備份類型,便于后續管理。
在全量備份基礎上,進行增量備份(Level 1),僅捕獲自上次備份以來的變更,減少備份時間和存儲占用。
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 1 DATABASE TAG 'INCREMENTAL_BACKUP' FORMAT '/u01/backup/incremental/incr_%U.bak';
RELEASE CHANNEL ch1;
}
注意:增量備份需依賴最近的全量備份,建議每周執行一次全量備份,每日執行增量備份。
歸檔日志記錄了數據庫的所有變更,是實現時間點恢復(PITR)的核心。定期備份歸檔日志,避免日志文件占滿磁盤。
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT '/u01/backup/archivelog/arch_%U.bak' TAG 'ARCHIVE_LOG_BACKUP';
RELEASE CHANNEL ch1;
}
說明:DELETE INPUT
參數備份后自動刪除已備份的歸檔日志,釋放空間。
使用expdp
(數據泵導出)工具導出數據庫對象(如表、視圖、存儲過程),適合需要導出特定數據或跨數據庫遷移的場景。
# 創建邏輯備份目錄對象
sqlplus / as sysdba <<EOF
CREATE DIRECTORY expdp_dir AS '/u01/backup/expdp';
EXIT;
EOF
# 執行導出(全量)
expdp sys/password@orcl DIRECTORY=expdp_dir DUMPFILE=full_exp.dmp LOGFILE=full_exp.log FULL=Y
說明:FULL=Y
表示導出整個數據庫;若需導出特定用戶或表,可替換為SCHEMAS=username
或TABLES=table1,table2
。
/u01/backup
)。若數據庫完全損壞,需從最近的全量備份恢復,再應用增量備份和歸檔日志。
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
RESTORE DATABASE; # 恢復數據庫文件(數據文件、控制文件)
RECOVER DATABASE; # 應用歸檔日志和增量備份(若有)
RELEASE CHANNEL ch1;
}
說明:RECOVER DATABASE
會自動檢測并應用歸檔日志,若存在增量備份,需先執行RESTORE DATABASE
,再依次應用增量備份(如RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
)。
若需恢復到某一特定時間(如誤刪除數據前),需結合歸檔日志進行時間點恢復。
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE UNTIL TIME '2025-10-10:18:00:00'; # 指定恢復時間
RELEASE CHANNEL ch1;
}
說明:恢復完成后,數據庫將處于“未打開”狀態,需手動打開(ALTER DATABASE OPEN RESETLOGS;
),RESETLOGS
會重置重做日志,創建新的備份周期。
若需恢復特定表或用戶數據,可使用impdp
導入邏輯備份。
# 創建邏輯恢復目錄對象
sqlplus / as sysdba <<EOF
CREATE DIRECTORY impdp_dir AS '/u01/backup/expdp';
EXIT;
EOF
# 執行導入(全量)
impdp sys/password@orcl DIRECTORY=impdp_dir DUMPFILE=full_exp.dmp LOGFILE=full_imp.log FULL=Y
說明:若需導入到現有數據庫,可添加TABLE_EXISTS_ACTION=APPEND
(追加數據)或REMAP_SCHEMA=old_schema:new_schema
(映射用戶)。
sqlplus / as sysdba
),執行SELECT COUNT(*) FROM v\$datafile;
確認數據文件數量與備份前一致;執行SELECT * FROM v\$log;
確認重做日志狀態正常。SELECT * FROM employees WHERE employee_id = 100;
),驗證數據是否與備份前一致。crontab -e
添加0 3 * * * find /u01/backup -type f -mtime +30 -exec rm {} \;
),刪除30天前的備份文件,避免磁盤空間耗盡。RMAN VALIDATE BACKUPSET;
命令驗證備份文件的完整性,確保存儲介質無損壞。