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

Oracle 利用 Exp/Imp 更改資料表 Tablespace 實作指南

     編輯:Oracle 資料庫基礎

情境

需將使用者 db_zgxt 所有表從 Tablespace A 移至 B,且保留大量資料,不想 Drop/Recreate。

操作步驟 (Oracle 8.0.5 for NT)

  1. 匯出所有表:
    EXP80 OWNER=db_zgxt FILE=Exp0326.DMP LOG=Exp0326.LOG
  2. 刪除所有表:
    SELECT 'DROP TABLE '||TABLE_NAME||';' FROM USER_TABLES; (批次執行)
  3. 用 INDEXFILE 參數匯入產生 DDL 檔:
    IMP80 FULL=Y FILE=Exp0326.DMP INDEXFILE=db_zgxt.SQL LOG=Imp0326_1.LOG
    編輯 db_zgxt.sql:移除 CREATE TABLE 註解、將 Tablespace A 改為 B、將 CREATE INDEX 加上註解。
    在 SQL*Plus 執行此腳本建立表 (已在 Tablespace B)。
  4. 匯入資料 (忽略索引、忽略表存在錯誤):
    IMP80 FULL=Y INDEXES=N FILE=Exp0326.DMP IGNORE=Y LOG=Imp0326_2.LOG
  5. 建立索引:
    再編輯 db_zgxt.sql:註解 CREATE TABLE、取消註解 CREATE INDEX,執行建立索引。

部分表遷移同理,匯出/匯入時加 TABLES=... 限制。

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