Bootstrap

oracle imp和exp 导入不同库的用户和表空间

参考:

oracle 导入(imp)数据时的表空间(tablespace users)问题_imp tablespace-CSDN博客

网上的解决办法大概都是这种,但是实际测试19c数据库并不能成功,所以最后采取在导出文件上强行修改表空间的办法,改完后再继续执行导出导入操作,具体如下:

导出
exp username/password@地址:1521/实例名 owner=用户名 file=/backup/文件名称.dmp 

在linux上强行修改表空间,数据量不大的情况下,也可用uledit打开修改:
cp /backup/文件名.dmp  /backup/文件名.dmp.ori

sed -i 's/TABLESPACE "旧表空间名"/TABLESPACE "新表空间名"/g'  /backup/文件名.dmp 

导入:
drop user username cascade;

create user newuser identified by "password" default tablespace new_tablespace_name;
grant resource,connect to newuser ;
1.使用DBA用户收回用户的unlimited tablespace权限。
revoke unlimited tablespace from newuser ;

2.取消用户在表空间old_tablespace_name上的配额。

alter user newuser quota 0 on old_tablespace_name;

3.为了防止用户在表空间new_tablespace_name上的配额不足,使用如下sql让用户在该表空间上不限配额。
alter user newuser quota unlimited on new_tablespace_name;

导入
imp newuser/"password"@db file=/backup/文件名.dmp fromuser=old_user touser=new_user  ignore=y grants=n

应该可以成功了。

;