在使用oracle的 exp 和imp 匯出匯入的時候。有時遇到,需要匯入的資料不是同一個使用者的,也不一定是同一個資料表空間。
例如,來源資料庫,上使用者為aaa,資料表空間aa 目標資料庫 ,使用者為bbb 資料表空間bb 當用imp匯入以後查看發現,bbb沒有aa這個資料表空間,但是還是匯入進去了,不過全部都跑到了users裡面。這種情況時常有發生,特別是遷移資料庫的時候。那麼為了更好的管理資料表空間和資料表,可以採用下面的方式。
串連目標資料庫
oracle@UCITDB:~> sqlplus /nolog SQL
*Plus: Release 10.2.0.1.0 - Production on Fri Oct 15 16:14:29 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> CONN /AS SYSDBA Connected.
SQL> revoke unlimited tablespace from ucitdba;
Revoke succeeded. 刪除該使用者的資料表空間使用限制
SQL> alter user ucitdba quota 0 on users;
User altered. 修改資料表空間使用參數
SQL> alter user ucitdba quota unlimited on ucit;
User altered. 將目標資料表空間的無限制使用許可權賦給使用者
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options
imp ucitdba/111111 fromuser=ucitdba touser=ucitdba file=/opt/oracle/oradata/backup/ucit_20101015.dmp tablespaces=ucit grants=y
具體地址根據自己的設定修改,之後斷行符號搞定
如果出現了tablespaces的錯誤。那麼是因為dmp檔案中還有大量的建立表的命令中含有資料表空間users 可以使用 UltraEdit 將 tablespaces "USERS" 替換成 你的資料表空間,儲存後,重新匯入。