Oracle 資料庫跨環境遷移需嚴謹規劃權限、儲存結構、物件定義與資料一致性。本文提供從來源環境權限審計到目標環境驗證的標準化遷移流程。
-- 檢查來源用戶權限與角色 SELECT * FROM dba_tab_privs WHERE grantee = 'SCOTT'; SELECT * FROM dba_role_privs WHERE grantee = 'SCOTT'; -- 解鎖帳號 ALTER USER scott ACCOUNT UNLOCK; -- 授予遷移所需權限 GRANT CONNECT, RESOURCE, DBA TO scott;
-- 先刪除同名表空間(含內容與資料檔) DROP TABLESPACE ts_name INCLUDING CONTENTS AND DATAFILES; -- 建立業務表空間 CREATE TABLESPACE xx_bp DATAFILE 'F:\app\xx_bp.ora' SIZE 50M AUTOEXTEND ON NEXT 1M; -- 建立歷史/索引等專用表空間 CREATE TABLESPACE xx_hs ...; CREATE TABLESPACE xx_indx ...;
AUTOEXTENDCREATE USER mig_user IDENTIFIED BY password DEFAULT TABLESPACE xx_bp TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON xx_bp; GRANT CONNECT, RESOURCE TO mig_user;
-- 範例:建表含表空間、儲存參數、主鍵 CREATE TABLE xx.bp_oper_detail_tb ( task_id VARCHAR2(50) NOT NULL, flow_id NUMBER(19) NOT NULL, ... state INTEGER NOT NULL ) TABLESPACE xx_bp PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE (INITIAL 64K NEXT 8K MINEXTENTS 1 MAXEXTENTS UNLIMITED); -- 主鍵索引指定表空間 ALTER TABLE xx.bp_oper_detail_tb ADD CONSTRAINT bp_oper_detail_pk PRIMARY KEY (task_id, workitemid, flow_node) USING INDEX TABLESPACE xx_bp PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED);
-- 範例:參考資料載入
INSERT INTO sm_field_parent_tb (field_id, parent_field, last_modi_date)
VALUES ('VH0007', 'VH0000', '20160420074707');
...
COMMIT;
EXP/IMP 或 Data Pump (EXPDP/IMPDP)DBMS_DATAPUMP API 程式化控制EXCHANGE PARTITION 秒級切換SQL*Loader、GoldenGate、CDC 工具SELECT COUNT(*) FROM user_tables 等| 項目 | 驗證方式 |
|---|---|
| 表空間/用戶/配額 | DBA_TABLESPACES, DBA_USERS |
| 物件完整性 | USER_OBJECTS 狀態 VALID |
| 資料一致性 | 筆數、MD5、關鍵欄位抽樣 |
| 權限對等 | DBA_TAB_PRIVS, DBA_ROLE_PRIVS |
| 應用連線 | 連線池、TNS、Wallet 測試 |
標準化遷移流程 + 完整驗證清單,是跨環境 Oracle 遷移成功的關鍵。