在簡單批處理基礎上,本文提供四大進階建議:RMAN 批量操作、EXP/IMP 完整參數模板、SQL*Loader 高性能導入、腳本與任務計劃工程化,幫助構建企業級備份恢復體系。
REM rman_backup.bat
rman target rman/rman@orcl < C:\RMAN.TXT
RMAN.TXT 內容示例:
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT 'E:\backup\rman\%d_%T_%s_%p.bak';
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP CURRENT CONTROLFILE FORMAT 'E:\backup\rman\ctrl_%d_%T.ctl';
RELEASE CHANNEL ch1;
}
優勢:增量備份、塊級換、自動管理歸檔、壓縮 (AS COMPRESSED BACKUPSET)、加密、目錄/控制文件記錄。
exp_full.bat
@echo off
REM 刪除舊備份 (保留最新)
del c:\exp\*.dmp
REM 導出指定表
exp userid=cw/cw@db file='c:\exp\data.dmp' tables=(student) compress=y grants=y indexes=y constraints=y triggers=y statistics=none log=c:\exp\exp.log
imp_full.bat
@echo off
echo 開始恢復表...
D:
cd Oracle\ora92\bin
imp userid=user/pass@db file=d:\config_bak.dmp tables=(table1,table2) ignore=y grants=y indexes=y constraints=y triggers=y log=d:\imp.log
REM 後續 SQL 腳本驗證
sqlplus /nolog @oraStartup.sql >> oraStartup.log
pause
echo 恢復完畢!
oraStartup.sql:
CONN user/pass@db AS SYSDBA
SELECT COUNT(*) FROM table1;
QUIT;
適用於大量文本/CSV 導入,性能遠超 IMP。
REM loader.ctl
LOAD DATA
INFILE 'data.csv'
BADFILE 'data.bad'
DISCARDFILE 'data.dsc'
APPEND
INTO TABLE target_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
col1,
col2 DATE 'YYYY-MM-DD',
col3 "UPPER(:col3)",
col4 CONSTANT 'DEFAULT_VAL'
)
調用:sqlldr userid=user/pass@db control=loader.ctl direct=y parallel=true (直路徑+並行,極速)。
| 維度 | 建議 |
|---|---|
| 參數化 | 用戶名/密碼/路徑/保留天數通過配置文件或環境變量注入,不寫死 |
| 日誌規範 | 統一格式:時間級別模塊信息;ERROR/WARN 觸發告警 |
| 冪等性 | 重複執行不產生副作用 (如備份文件帶時間戳、導入用 IGNORE=Y) |
| 任務調度 | Windows 任務計劃 / Linux cron / 企業級調度平台 (Control-M, Airflow, Azkaban) |
| 備份驗證 | 每周隨機抽取 1 個備份在測試庫 RESTORE/RECOVER 驗證 |
| 異地備份 | 備份文件異步同步至異地存儲 (NFS/S3/OSS/磁帶) |
| 參數 | 說明 | 典型值 |
|---|---|---|
FULL=Y | 全庫導出 (需 DBA 權限) | Y/N |
OWNER=(user1,user2) | 指定模式導出 | schema 列表 |
TABLES=(t1,t2) | 表級導出 | 表列表 |
QUERY="WHERE cond" | 行級過濾導出 | WHERE 子句 |
COMPRESS=Y | 導出時壓縮段 (IMP 時一次性分配) | Y/N |
IGNORE=Y | 導入時忽略對象已存在錯誤 | Y/N |
INDEXES=Y | 包含索引 | Y/N |
GRANTS=Y | 包含授權 | Y/N |
CONSTRAINTS=Y | 包含約束 | Y/N |
STATISTICS=NONE | 不導出統計信息 (避免版本不兼容) | NONE/COMPUTE |
BUFFER=409600 | 導入緩衝區大小 (提高性能) | 字節數 |
從「能跑通」到「好用、穩、可管」,關鍵在於:RMAN 替代 EXP 做核心備份、SQL*Loader 替代 IMP 做大數據導入、參數化/日誌/冪等/調度/驗證/異地六大工程化能力。將這些建議落地為標準化腳本庫與運維流程,才是備份恢復體系成熟的標誌。