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

Oracle 表空間遷移實戰:利用 EXP/IMP 重組表空間不停機操作指南

     編輯:Oracle 資料庫基礎

背景

效能或管理需求常要求將表移至新表空間。傳統刪除重建法在大量資料下需備份還原,耗時風險大。本文示範利用匯出/匯入(EXP/IMP)重組表空間,以用戶 db_zgxt 從表空間 A 遷移至 B 為例(Oracle 8.0.5 NT 環境)。

操作步驟

1. 匯出所有表

EXP80 OWNER=db_zgxt FILE=Exp0326.DMP LOG=Exp0326.LOG

系統提示輸入帳密後,將全表匯出至 DMP 檔。

2. 刪除原有表

批次產生 DROP TABLE 指令:

SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables;

在 SQL*Plus 執行輸出腳本刪除所有表。

3. 產生建表腳本並修改表空間

IMP80 FULL=Y FILE=Exp0326.DMP INDEXFILE=db_zgxt.SQL LOG=Imp0326_1.LOG

INDEXFILE 參數將 CREATE TABLE/CREATE INDEX 寫入 SQL 檔(建表語句被註解)。編輯該檔:

  • 移除建表語句註解
  • 將表空間名 A 替換為 B
  • 為所有建索引語句加上註解

在 SQL*Plus 執行腳本,表即在新表空間建立完成。

4. 匯入資料(不含索引)

IMP80 FULL=Y INDEXES=N FILE=Exp0326.DMP IGNORE=Y LOG=Imp0326_2.LOG
  • INDEXES=N:不建立索引
  • IGNORE=Y:忽略「表已存在」錯誤,直接導入資料

5. 重建索引

再次編輯 db_zgxt.SQL:註解建表語句,移除建索引語句註解,執行腳本完成索引建立。

完成

至此,db_zgxt 所有表已成功從表空間 A 遷移至 B,全程無需大量資料備份還原,大幅縮短維護窗口。

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