資料導出導入 (EXP/IMP) 前的權限配置與表空間準備是成功遷移的前提。本文提供最小權限授予範本、表空間建立標準語句 (含自動擴展)、TNS 連線描述範例,並說明 FULL=Y、IGNORE=Y、TABLES= 等關鍵參數的實務用法。
-- 導出 (EXP)
exp wjcx/wjcx@orcl file=wjcx.dmp
-- 導入 (IMP) - 完整導入
imp wjcx/wjcx@orcl file=wjcx.dmp full=y ignore=y
-- 導入 - 單表導入
imp wjcx/wjcx@orcl file=wjcx.dmp tables=emp
參數說明:
full=y:導入所有使用者 (需 SYSDBA 權限)。ignore=y:表已存在時忽略建立錯誤,繼續導入資料 (不會覆蓋結構)。tables=:指定導入表清單,支援萬用字元 tables=emp,dept%。
-- 基本連線權限
GRANT CONNECT TO wjcx;
-- 開發/測試環境常用組合 (含建表、序列、程序、觸發器...)
GRANT CONNECT, RESOURCE, DBA TO wjcx; -- 注意:DBA 權限極高,生產環境禁用
生產環境建議精細授權:
GRANT CREATE SESSION TO wjcx;
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE,
CREATE TRIGGER, CREATE TYPE, CREATE SYNONYM TO wjcx;
GRANT UNLIMITED TABLESPACE TO wjcx; -- 或指定 QUOTA ON tablespace
CREATE TABLESPACE wjcx
LOGGING
DATAFILE 'F:\Oracle\oradata\orcl\wjcx01.dbf'
SIZE 32M
AUTOEXTEND ON
NEXT 32M
MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;
關鍵參數解析:
| 參數 | 建議值 | 說明 |
|---|---|---|
| SIZE | 32M~100M | 初始大小,避免頻繁擴展 |
| AUTOEXTEND ON | ON | 自動擴展,防止 ORA-01653 |
| NEXT | 32M~100M | 每次擴展增量 |
| MAXSIZE | 2G~UNLIMITED | 上限,防止佔滿磁碟 |
| EXTENT MANAGEMENT LOCAL | LOCAL | 本地管理,效能優於字典管理 |
| SEGMENT SPACE MANAGEMENT AUTO | AUTO (11g+) | 自動段空間管理 (ASSM),減少碎片 |
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
Easy Connect 替代 (無需 tnsnames.ora):
exp wjcx/wjcx@192.168.0.3:1521/orcl file=wjcx.dmp
imp wjcx/wjcx@192.168.0.3:1521/orcl file=wjcx.dmp full=y ignore=y
NLS_LANG 設定或字元集轉換。SELECT object_name, status FROM user_objects WHERE status != 'VALID';EXPDP/IMPDP) 並行導入。| 代碼 | 訊息 | 對策 |
|---|---|---|
| EXP-00008 | ORA-00942: table or view does not exist | 導出使用者無權限查詢該物件,授予 SELECT 或以擁有者導出 |
| IMP-00015 | Object already exists | 加 ignore=y 或先 DROP 目標物件 |
| IMP-00017 | Tablespace 'XXX' does not exist | 預先建立表空間或使用 Data Pump remap_tablespace |
| IMP-00058 | ORA-02304: invalid object identifier | 物件名含特殊字元,使用雙引號或重命名 |
標準化權限與表空間範本,能將遷移失敗率降至最低。記住:權限最小化、表空間預建、參數顯式化 是鐵律。