今天项目上ETL工具数据库需要迁移,暂定使用EXP全库导出,再用IMP导入。
EXP全库导出需写 full=y 参数。
exp system/123456a?@TEST1 file=D:/dbback.dmp full=y
在IMP之前需要先创建对应用户及涉及到的表空间,EXP导出的.dmp 文件并不包含表空间的创建命令。原理很简单,例如从WINDOWS 平台导出一个数据库,然后导入 LINUX 平台。WINDOWS平台的表空间的数据文件路径分隔符 是 '\',而 LINUX 平台的表空间的数据文件路径分隔符是 '/',这一点 ORACLE 并不能预知。因此 .dmp 中绝对不会包含表空间的创建指令的。
使用 oracle数据库提供的 拼字符 ‘||’ 批量创建 表空间
SQL> select 'create tablespace '||tablespace_name||' datafile '||''''||file_name||''''||' size '||bytes/1024/1024||'M;' ct_tbs from dba_data_files;
批量创建用户
SQL> select ' create user '||username||' identified by xxx '||' default tablespace '||default_tablespace ct_user from dba_users where account_status='OPEN' order by created desc;
imp system/123456a?@TEST2 file=D:/dbback.dmp