开发环境之前多个用户共用一个表空间,后期维护比较麻烦,因此需要将这些用户拆出来,一个用户一个表空间,以后清理这些用户也更方便。
大致思路:假设A、B、C用户共用一个表空间,将A、B、C的用户数据使用expdp或其他工具备份出来,分别创建一个新的用户和表空间,将数据使用impdp还原到新用户。基本等于复制了一个新用户。
expdp ZHANGSAN/ZHANGSAN@192.168.0.10:1521/orcl \ directory=DATA_PUMP_DIR dumpfile=ZHANGSAN_20220610_expdp.dmp \ logfile=ZHANGSAN_20220610_expdp.log
create tablespace TS_ZHANGSAN0610 logging datafile 'TS_ZHANGSAN0610.dbf' size 256m autoextend on next 256m maxsize 2048m extent management local;
create user ZHANGSAN0610 identified by ZHANGSAN0610 default tablespace TS_ZHANGSAN0610; grant alter session, create any synonym, create any trigger, create job, create materialized view, create procedure, create public synonym, create view, create table to ZHANGSAN0610; grant connect, create sequence, unlimited tablespace to ZHANGSAN0610; grant read, write on directory DATA_PUMP_DIR to ZHANGSAN0610; grant connect, resource, dba to ZHANGSAN0610;
remap_schema
将旧帐户数据映射到新账户的schema,使用remap_tablespace
将旧帐户的表空间映射到新账户的表空间。impdp ZHANGSAN0610/ZHANGSAN0610@192.168.90.213:1521/orcl \ directory=DATA_PUMP_DIR dumpfile=ZHANGSAN_20220610_expdp.dmp \ logfile=ZHANGSAN0610_20220610_impdp.log \ remap_schema=ZHANGSAN:ZHANGSAN0610 \ remap_tablespace=TS_PUBLIC:TS_ZHANGSAN0610 transform=OID:N