方法一(常用):
导出原表空和原用户的数据表结构(不含数据rows=n 表示不导出数据)。
exp \'sys/pwd@orcl as sysdba\' file=xx.dmp buffer=65535 owner=user rows=n
导出原表空间和原用户的数据库表及全部数据
exp \'sys/pwd@orcl as sysdba\' file=xx.dmp buffer=65535 owner=user rows=y
导入数据表,更换新用户和表空间, 加tablespaces=newtablespaces 参数
imp \'sys/pwd@orcl as sysdba\' file=xx.dmp fromuser=user1 touser=user2 ignore=y tablespaces=newtablespaces log=xx.log
注意:
1.导入时如果不加参数 tablespace=XXX,总是报错:ORA-01950:对表空间无权限。
2. 对临时表空间不能执行配额操作,对永久表空间可以。
方法二:
导出命令
expdp username/password@orcl dumpfile=xxx.dmp directory=xxxxx schemas=username
导入命令
impdp onlinecolzs/onlinecozs dumpfile=XXX.dmp directory=dpdata1 remap_schema=onlinecol:onlinecolzs remap_tablespace=ts_onlinecol_prod:zaixianzs_data logfile=xxx.log
参数说明
dumpfile:需要导入的dmp文件名称
directory:dmp文件所在的目录文件夹
REMAP_SCHEMA: 该选项用于将源方案的所有对象装载到目标方案中。 REMAP_SCHEMA=source_schema:target_schema
REMAP_TABLESPACE: 将源表空间的所有对象导入到目标表空间中。 REMAP_TABLESPACE=source_tablespace:target:tablespace
具体步骤:
1、创建表空间和用户。
2、创建目录
create directory dpdata1 as 'D:\tempdmp'
3、查询目录
select * from dba_directories;
把dmp文件复制到刚才创建的目录文件夹下(D:\tempdmp),这个文件夹需要自己手动创建。
4、执行impdp导入命令:
impdp onlinecolzs/onlinecozs dumpfile=XXX.dmp directory=dpdata1 remap_schema=onlinecol:onlinecolzs remap_tablespace=ts_onlinecol_prod:zaixianzs_data log=xxx.log
其中:ts_onlinecol_prod:原先dmp文件的表空间名称,如果不知道原先的表空间名称是什么,先随便写个,到时候导入的时候会提示表空间不存在,把提示不存在的表空间名称写上去就可以。
zaixianzs_data:需要导入到的表空间的名称(第一步创建的表空间名称)