oracle數據從一個表空間導入到另一個表空間

問題:在使用exp導出用戶數據後,再使用imp導入時,必須保證二者對象的表空間一致才能成功導入sql

在此分享一點解決辦法:工具

 

 

  1. exp導出用戶數據: exp userid=user/user owner=user file=user.dmp
  2. 導出表DDL:打開pl/sql運行菜單:「工具」->「導出用戶對象」功能, 選擇全部的表,不選擇存儲,導出爲文user_tables.sql
  3. 建立表結構:使用目標用戶登錄pl/sql後,執行:user_tables.sql
  4. 刪除約束SQL:

 

select 'ALTER TABLE ' || OWNER || '.' || table_name || ' drop CONSTRAINT ' || constraint_name || ' cascade;' 
from dba_constraints dc where dc.owner='USER';
-- 生成刪除主,外建的代碼,複製出來 執行便可刪除約束

 

  1. 刪除索引:
    select 'drop index ' || owner || '.' || index_name || ' ;' from dba_indexes di where di.owner='USER' AND DI.TABLE_TYPE='TABLE' AND di.UNIQUENESS!='UNIQUE' order by di.table_name, di.index_name;
    -- 查詢後,複製出來,執行後就能夠禁止索引
     
  2. 導入數據: imp userid=other/other fromuser=user touser=other  ignore=y indexes=n constraints=n buffer=102400000 feedback=1000000 file=user.dmp
  3. 重建約束(包括:主鍵、外鍵)和索引:運行users_tables.sql便可<--由於以前刪除掉了原來的約束和索引
相關文章
相關標籤/搜索