前言:OracleXE全稱為oracle database 11g express edition 。Oracle Database 11g Express Edition是 Oracle 數據庫的免費版本,支持標准版的大部分功能,11g Express Edition 提供 Windows 和 Linux 版本 。
由於本次任務是跨Oracle的兩個版本來遷移數據,故只能使用expdp命令來實現導出、導入。具體步驟如下:
1、用sys用戶登錄Oracle 12c ,創建目錄DIRECTORY。如下:創建了名為‘CS_DB’的目錄
CREATE OR REPLACE DIRECTORY CS_DB AS 'E:\easyman_hlz\LM\data';
2、導出用戶C##LM的數據。需要給導出文件設定需要的Oracle版本號,本目標OracleXE的版本號為 11.2.0.2.0
查詢oracle的版本號: select * from v$version;
3、導出命令如下:
expdp C##LM/C##LM@ORCL schemas=C##LM dumpfile=LM20180809_2expdp.dmp DIRECTORY=CS_DB version= 11.2.0.2.0
說明:導出用戶C##LM下的所有對象至文件LM20180809_2expdp.dmp中,文件放置在目錄CS_DB下,導出的文件面向於導入的Oracle版本號為11.2.0.2.0
4、切換至安裝了OracleXE的終端,在庫中創建CS_DB目錄,並將剛才導出的文件LM20180809_2expdp.dmp拷貝至該目錄
5、在OracleXE上創建C##LM用戶,建立表空間Tablespace,名為LM,便於后期清理數據,將C##LM用戶的表空間指定為LM(該步驟可通過toad完成)
修改用戶的表空間:
6、導入數據至OracleXE的C##LM用戶中,命令如下:
IMPDP C##LM/C##LM@XE DIRECTORY=CS_DB schemas=C##LM dumpfile=LM20180809_2EXPDP.DMP REMAP_TABLESPACE=SYSTEM:LM
說明:OracleXE的實例名XE非ORCL,由於原導出用戶屬於SYSTEM表空間,故在此處需要特別指定導入至LM表空間中
7、導入過程中可能會出現超出字符長度的問題,可能是兩邊的編碼格式有差異,可以人為去調整導入用戶對應表字段的長度,然后重新導出、導入。
8、通過toad訪問已導入數據后的用戶C##LM
參考鏈接:
Oracle 關於expdp和impdp的應用實踐