前言:不知道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 退出来, 然后再导入就好了.