一、備份策略
BACKUP DATABASE PLUS ARCHIVELOG命令實現,建議每周執行一次。BACKUP INCREMENTAL LEVEL 1 DATABASE命令實現,建議每日執行。BACKUP ARCHIVELOG ALL DELETE INPUT命令實現,建議每日執行。expdp system/password DIRECTORY=DATA_PUMP_DIR dumpfile=full.dmp full=y命令執行全庫導出。ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/backup/change_tracking_file'。ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/flash_recovery' SIZE 10G;啟用閃回數據庫:ALTER DATABASE ARCHIVELOG; ALTER DATABASE ENABLE FLASHBACK DATABASE。CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS(保留7天內的恢復點)。crontab工具定期執行備份腳本,例如每日凌晨2點執行全備:0 2 * * * /home/oracle/scripts/full_backup.sh。腳本需包含RMAN備份命令、日志記錄、錯誤通知等功能。VALIDATE BACKUPSET命令驗證備份集:RMAN> VALIDATE BACKUPSET 123;(123為備份集編號)。二、恢復策略
RESTORE DATABASE);③恢復歸檔日志(RECOVER DATABASE);④打開數據庫(ALTER DATABASE OPEN)。V$LOG_HISTORY查看歸檔日志時間),步驟:①關閉數據庫;②還原全備數據文件;③恢復到指定時間點(RECOVER DATABASE UNTIL TIME '2025-08-30 10:00:00');④打開數據庫并重置日志(ALTER DATABASE OPEN RESETLOGS)。RESTORE CONTROLFILE FROM '/u01/backup/controlfile.bak');③掛載數據庫(ALTER DATABASE MOUNT);④恢復數據庫(RECOVER DATABASE);⑤打開數據庫(ALTER DATABASE OPEN)。IGNORE=Y(忽略表已存在錯誤)、TABLES=表名(指定表)等參數。例如導入特定表:impdp system/password DIRECTORY=DATA_PUMP_DIR dumpfile=table_dump.dmp tables=scott.emp。SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET);②執行閃回命令(FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-08-30 10:00:00', 'YYYY-MM-DD HH24:MI:SS'));③打開數據庫并重置日志(ALTER DATABASE OPEN RESETLOGS)。ALTER TABLE 表名 ENABLE ROW MOVEMENT);②執行閃回(FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP('2025-08-30 10:00:00', 'YYYY-MM-DD HH24:MI:SS'))。EXEC DBMS_LOGMNR_D.BUILD(options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE));②添加Redo Log文件(EXEC DBMS_LOGMNR.ADD_LOGFILE(logfilename=>'/u01/archive/log_1.arc', options=>DBMS_LOGMNR.NEW));③啟動LogMiner(EXEC DBMS_LOGMNR.START_LOGMNR(starttime=>TO_DATE('2025-08-30 09:00:00', 'YYYY-MM-DD HH24:MI:SS'), endtime=>TO_DATE('2025-08-30 10:00:00', 'YYYY-MM-DD HH24:MI:SS')));④查詢V$LOGMNR_CONTENTS視圖獲取錯誤SQL,執行反向操作恢復數據。