備份模式對比
| 模式 | 範圍 | 適用場景 | 典型指令 |
| Table (表級) | 指定使用者下的特定表 | 精準備份核心業務表 | exp user/pwd tables=t1,t2 file=exp.dmp |
| User (用戶級) | 某使用者擁有的所有物件 | 整個 Schema 遷移/備份 | exp user/pwd owner=schema file=exp.dmp |
| Full (完整) | 整個資料庫 (含系統表空間) | 異機完整複製、災難恢復演練 | exp system/pwd full=y file=exp.dmp |
常用參數速查
| 參數 | 建議值 | 說明 |
| ROWS | Y | 匯出資料列 |
| INDEXES | N | 匯入時重建索引較快,匯出可不含索引定義 |
| COMPRESS | N | 避免將初始程度壓縮為單一程度 (易導致匯入失敗) |
| BUFFER | 65536 | 緩衝區大小 (Bytes),調大提升吞吐 |
| FEEDBACK | 100000 | 每 N 行顯示進度點 |
| VOLSIZE | 0 | 磁帶卷大小,0=不限制 |
| CONSISTENT | Y | 確保交易一致性 (需足夠 Undo) |
增量備份 (僅限 Full 模式)
# 首次完整備份
exp system/pwd full=y inctype=complete file=full_01.dmp
# 後續累積增量
exp system/pwd full=y inctype=cumulative file=cum_02.dmp
# 或差異增量
exp system/pwd full=y inctype=incremental file=inc_03.dmp
前提:用戶需具 EXP_FULL_DATABASE 角色;資料量較小時適用。
磁帶轉儲操作 (tar)
# 查看磁帶裝置
lsdev -Cc tape
# 查看磁帶內容 (僅限檔案系統格式)
tar -tvf /dev/rmt0
# 覆蓋寫入新備份
tar -cvf /dev/rmt0 exp_schema_20240115.dmp
# 追加寫入 (保留既有資料)
tar -rvf /dev/rmt0 exp_schema_20240115.dmp
# 還原全部 / 指定檔案
tar -xvf /dev/rmt0
tar -xvf /dev/rmt0 exp_schema_20240115.dmp
警告:若直接 exp ... file=/dev/rmt0 寫入磁帶,該磁帶不可再用 tar 追加其他檔案,否則備份損壞。
恢復 (imp) 三模式對應
| 模式 | 典型指令 |
| Table | imp user/pwd fromuser=src touser=dst tables=t1,t2 file=exp.dmp ignore=y |
| User | imp user/pwd fromuser=src touser=dst file=exp.dmp ignore=y |
| Full | imp system/pwd full=y file=exp.dmp ignore=y |
關鍵參數:IGNORE 與 INDEXES
- IGNORE=Y:目標表存在時跳過 CREATE TABLE,直接 INSERT 資料;違反 PK/UK 的列跳過,合法列寫入。
- IGNORE=N (預設):目標表存在則報錯並跳過該表,繼續下一張表。
- INDEXES=N:不重建非唯一索引,主鍵/唯一索引仍會強制重建 以保資料完整性。
字符集轉換規則
- 單位元組字符集 (US7ASCII 等) → 匯入時自動轉換為 Session NLS_LANG 字符集。
- 多位元組字符集 (ZHS16GBK, AL32UTF8 等) → 盡量保持源/目標字符集相同 避免轉換損耗;若必須轉換,目標字符集必須為源字符集的 超集 (如 ZHS16GBK → AL32UTF8)。
最佳實務建議
- 備份前以 SYS 執行
@?/rdbms/admin/catexp.sql (僅首次)。
- 優先備份至磁碟,驗證
imp ... show=y 可讀後再轉儲磁帶。
- 排程於離峰時段 (如 23:00 後) 執行,減輕 I/O 衝擊。
- 定期演練恢復流程,驗證備份可用性與 RTO/RPO。
- 10g+ 建議改用 Data Pump (expdp/impdp):支援並行、壓縮、網路模式、細粒度物件過濾、可重啟作業。