開發測試常需將生產/測試環境的 Schema 匯入本地資料庫。本文詳述使用 PL/SQL Developer 內建 **Export User Objects** 與 **Export/Import Tables** 功能,實現結構與資料的完整離線遷移,適合中小型 Schema (建議 < 50GB)。
CREATE TABLE owner.tbl 含 Schema 前綴)。.sql 檔案路徑 (如 D:\migration\schema_struct.sql)。
.pde 檔案 (如 D:\migration\table_data.pde),副檔名會自動補齊。-- 以 SYS/SYSTEM 登入本地資料庫
CREATE USER target_user IDENTIFIED BY "LocalPass#2024"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE TO target_user;
-- 若需建立 View/Procedure 等,另行授予 CREATE VIEW, CREATE PROCEDURE 等
重要:使用者名 **必須與遠端 Schema 同名**,因步驟 1 匯出 DDL 含 OWNER 前綴。
target_user) 登入 PL/SQL Developer (連線本地 SID)。schema_struct.sql。
table_data.pde。| 場景 | 問題 | 解決方案 |
|---|---|---|
| 大表 (>10GB) 匯入極慢 | PDE 逐列處理、索引維護開銷大 | 匯入前 DISABLE 索引/約束,匯入後 REBUILD;或改用 Data Pump (expdp/impdp) 平行匯入 |
| CLOB/BLOB 欄位資料遺失 | PDE 格式版本相容性 | 升級 PL/SQL Developer 至最新版;或改用 expdp CONTENT=DATA_ONLY |
| 遠端/本地字元集不同 (AL32UTF8 vs ZHS16GBK) | 中文亂碼 | 設定 NLS_LANG 環境變數一致;匯出前確認字元集轉換正確 |
| 序列值不同步 | Export User Objects 不含序列當前值 | 手工 SELECT last_number FROM user_sequences 記錄,遷移後 ALTER SEQUENCE ... RESTART |
| 密碼驗證函數/Profile 遺失 | 未匯出 Profile/Password Verify Function | 手工重建 Profile 並指派 |
NETWORK_LINK),TB 級首選。