今天用到了將Oracle中一個使用者下的所有資訊匯入到另一個機器中的使用者下,例如有一台機器中某使用者為aa,需要在另一台機器中將aa使用者下的所有資訊,如表、資料表空間、索引拷貝到原生資料庫上。
首先查看aa使用者下的預設資料表空間,或者根據sysdba使用者查看。
select username,default_tablespace from user_users; //目前使用者
select user,default_tablespace from dba_users; //sysdba查詢所有的使用者和預設資料表空間
比如現在知道了aa使用者的資料表空間是aatbs;
那麼現在在cmd中執行,而不是在sqlplus中或者pl/sql中的SQL>執行
exp aa/aa@orcl file=C:\aa_bak.dmp full=y //全部匯出;
然後在另外一個資料庫中執行命令如下
sqlplus / as sysdba;
create tablespace aatbs datafile 'c:\oracle\product10.2.0\oradata\aa_bak.dbf' size 32M
autoextend on next 32M maxsize 2048M extent management local; --建立資料表空間,其中資料表空間名和剛才查詢的資料表空間名一致
create user aa identified by aa default tablespace aatbs;
grant dba to aa;
--drop user aa cascade;
exit;
建立資料表空間的時候需要注意
1.datafile後的檔案路徑必須為單引號,我用了雙引號不好使
2.另外需要設定預設的資料表空間,因為匯出的備份檔案中的資料表空間是aatbs,如果此時不指定資料表空間,匯入備份檔案的時候會因為建立表所在的資料表空間不一致而報錯
然後切換到cmd中,執行
imp aa/aa@orcl file=c:\oracle\product10.2.0\oradata\aa_bak.dbf full=y;
Oracle預存程序如何遷移到Hive?
利用RMAN跨平台遷移資料庫
線上遷移OCR遇到報錯:PROT-16
使用RMAN簡單遷移資料表空間