環境說明:export在tbs_skate表空間的數據,現在想import到指定的表空間tbs_wyzxg,已經修改了用戶的默認表空間爲tbs_wyzxg
關於此問題,作如下解釋:
Oracle並沒有提供什麼參數來指定要導入哪個表空間,數據默認將導入到原本導出時數據所在的表空間中,但是我們可以通過以下的方法來實現導入到不同的表空間。
1.將index以及constraints導入指定的表空間
在IMP時候使用INDEXFILE參數 ,當給此參數指定了某一文件名,IMP的時候所有的index將不會直接導入到表空間中,
而是在指定的文件中生成創建index的腳本。然後用文本編輯器打開此文件,直接編輯腳本中的storage參數,修改爲
想要導入的表空間名稱。然後重新執行IMP,使用INDEXS=n參數將除Index之外的Objects導入。
最後進入SQL*PLUS,直接運行剛纔編輯的腳本,生成索引。
該方法適用於將index以及constraints導入指定的表空間。
2.改變目的用戶的默認表空間
將導出的所有數據都導入到指定的表空間。
操作步驟如下:
SQL> create user skate identified by skate default tablespace tbs_wyzxg;
SQL> grant resource,connect to skate;
SQL> grant resource,connect to skate;//賦resource,connect權限
SQL> revoke unlimited tablespace from tbs_skate;//撤銷此權限
SQL> alter user myhuang quota 0 on tbs_skate;//將用戶在tbs_skate表空間的配額置爲0
SQL> alter user myhuang quota unlimited on tbs_wyzxg;//設置在用戶在 tbs_wyzxg表空間配額不受限。
經過上述設置後,就可以用imp導入數據,數據將會進入指定的myhuang表空間:
C:/Users/Administrator>imp userid="sys/aibo as sysdba" fromuser=hpo5 touser=skate
file=d:/hpo520320.dmp log=d:/hpo520320.log buffer=409600000 ignore=y
到現在,你就可以登陸數據庫查詢數據是否都已經導入到指定的表空間了
select * from user_tables;
select * from user_indexes
SQL> drop tablespace tbs_skate including contents and datafiles;
3。使用TOAD
TOAD是強大的Oracle數據庫管理軟件,是Quest出品的第三方軟件,我們可以使用其中的Rebuild Multi Objects工具來實現將多個Object轉移到指定的表空間。
於是我們可以不管三七二十一,先IMP,然後再用TOAD作事後的修改。
---end------