前言:不知道dmp 文件的 導出用戶 和 表空間 就別折騰了, 我折騰了半天, 網上方法都試了, 最後都報錯"用戶不存在"; 有知道的麻煩評論告訴小弟.
1. 打開 oracle 命令行
sqlplus /nolog
2. 連接 Oracle
conn /as sysdba;
3. 創建表空間
create tablespace oesv6 datafile 'D:\DevFiles\oracleLog\oesv6.dbf'size 2048m autoextend on next 512m maxsize 10240m;
4. 創建用戶
create user oes identified by 密碼 default tablespace oesv6 temporary tablespace temp profile default;
5. 給用戶管理表空間權限
grant connect,resource,alter system,debug connect session,create session,create any view,select any table,delete any table,drop any table,alter any table,dba,sysdba to oes;
6. 導入 dmp 文件 (這一步坑很多, 可能會失敗, 具體參照提示自己解決吧)
(1) imp 導入方式
imp usename/password@localhost/orcl(表示SID) file= D:\360Downloads\xxxx.dmp full=y ignore=y
(2) impdp 導入方式( imp導入報錯: IMP-00038:無法轉換爲環境字符集句柄, 則用這種導入 )
<1> 退出 Oracle 命令行, 使用新創建的用戶再次登錄
<2> 創建臨時目錄, 即dmp文件所在文件夾(D:\360Downloads),路徑最好不要有中文。
create directory dpdata1 as 'D:\360Downloads';
<3>退出 oracle 命令行, 在 cmd 命令行執行導入命令
impdp oes/密碼 dumpfile=20200219.dmp directory=dpdata1 remap_schema=onlinecol:oes remap_tablespace=ts_onlinecol_prod:OESV6
其中:ts_onlinecol_prod:原先dmp文件的表空間名稱,如果不知道原先的表空間名稱是什麼,先隨便寫個,到時候導入的時候會提示表空間不存在,把提示不存在的表空間名稱寫上去就可以。
zaixianzs_data:需要導入到的表空間的名稱(第一步創建的表空間名稱)
REMAP_SCHEMA: 該選項用於將源方案的所有對象裝載到目標方案中。
REMAP_SCHEMA=source_schema:target_schema
REMAP_TABLESPACE: 將源表空間的所有對象導入到目標表空間中。
REMAP_TABLESPACE=source_tablespace:target:tablespace
後語: 導入時如果提示 用戶名/密碼第一個字符+後面的.... , 則執行一次 sqlplus /nolog, 然後 conn /as sysdba, 再 exit 退出來, 然後再導入就好了.