一、创建用户
1.1 步骤
1.2 注意事项
二、处理空表
(1)描述
Oracle11g中的新特性,当一个表中的数据为0时不分配segment,所以就不能够被导出。
(2)解决方法
方法一:
先insert一条数据,再rollback就产生segment了,该方法是在空表中先插入一条数据,再删除就 产生segment了,执行exp或者expdp时就可以导出了此空表了。
方法二:
修改 deferred_segment_creation 参数,该参数默认为TRUE,当修改为FALSE时,无论是空表还是非空表都分配segment,修改语句为:
alter system set deferred_segment_creation=false scope=both;
注意:该值设置之后对于以前导入的空表是不产生作用的,仍不能导出,只能对后面新增的表产生作用,如需导出之前的空表只能使用方法一。
方法三:
使用下面SQL查找空表,把查询结果导出,执行导出的语句,强行修改segment值,然后再执行导出语句,则可以导出空表。
代码语言:javascript复制select 'alter table '||table_name||' allocate extent;'
from user_tables
where num_rows=0 or num_rows is null;
(3)总结
方法一在表很多的时候不实际,方法二最好用在数据库刚创建时,方法三在实际中最常用。
三、使用传统方式进行迁移
2.1 步骤
(1)处理空表
代码语言:javascript复制select 'alter table '||table_name||' allocate extent;'
from user_tables
where num_rows=0 or num_rows is null;
(2)数据库备份
代码语言:javascript复制exp username/password@service file=filename.dmp;
(3)数据库导入
代码语言:javascript复制imp username/password@service file=filename.dmp full=y ignore=y;
四、使用数据泵方式进行迁移
3.1 步骤
(1)处理空表
代码语言:javascript复制select 'alter table '||table_name||' allocate extent;'
from user_tables
where num_rows=0 or num_rows is null
(2)数据库备份
代码语言:javascript复制sqlplus clean/clean@orcl as sysdba;
create directory dpdata1 as 'd:dump';
grant read,write on directory dpdata1 to clean;
quit
expdp flow/flow@flow directory=dpdata1 dumpfile=20200401.DMP logfile=20200401.log schemas=USER;
(3)数据库导入
代码语言:javascript复制sqlplus flow/flow@flow as sysdba;
create directory dpdata1 as 'd:dump';
grant read,write on directory dpdata1 to flow;
quit
impdp flow/flow@flow directory=dpdata1 dumpfile=20200401.DMP REMAP_SCHEMA=BPM_SAAS:flow EXCLUDE=USER;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179593.html原文链接:https://javaforall.cn