首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 批量備份恢復腳本進階建議:RMAN、EXP/IMP 參數、SQL*Loader、腳本調度實戰

     編輯:Oracle 資料庫基礎

前言

在簡單批處理基礎上,本文提供四大進階建議:RMAN 批量操作、EXP/IMP 完整參數模板、SQL*Loader 高性能導入、腳本與任務計劃工程化,幫助構建企業級備份恢復體系。

建議一:RMAN 腳本化批量備份


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/IMP 完整參數模板 (生產級)

導出腳本 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;

建議三:SQL*Loader 高性能數據加載

適用於大量文本/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/磁帶)

常用 EXP/IMP 參數速查

參數說明典型值
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 做大數據導入、參數化/日誌/冪等/調度/驗證/異地六大工程化能力。將這些建議落地為標準化腳本庫與運維流程,才是備份恢復體系成熟的標誌。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved