2025年oracle数据库迁移到新服务器_oracle库对库迁移数据

oracle数据库迁移到新服务器_oracle库对库迁移数据一 创建用户 1 1 步骤 1 2 注意事项 二 处理空表 1 描述 Oracle11g 中的新特性 当一个表中的数据为 0 时不分配 segment 所以就不能够被导出 2 解决方法 方法一 先 insert 一条数据 再 rollback 就产生 segment 了 该方法是在空表中先插入一条数据 再删除就 产生 segment 了 执行 exp 或者 expdp 时就可以导出了此空表了 方法二 修改


一、创建用户

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值,然后再执行导出语句,则可以导出空表。

select 'alter table '||table_name||' allocate extent;' 
from user_tables
where num_rows=0 or num_rows is null;

(3)总结

方法一在表很多的时候不实际,方法二最好用在数据库刚创建时,方法三在实际中最常用。

三、使用传统方式进行迁移

2.1 步骤

(1)处理空表

select 'alter table '||table_name||' allocate extent;' 
from user_tables
where num_rows=0 or num_rows is null;

(2)数据库备份

exp username/password@service file=filename.dmp;

(3)数据库导入

imp username/password@service file=filename.dmp full=y ignore=y;

四、使用数据泵方式进行迁移

3.1 步骤

(1)处理空表

select 'alter table '||table_name||' allocate extent;'
from user_tables
where num_rows=0 or num_rows is null

(2)数据库备份

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)数据库导入

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;
编程小号
上一篇 2025-01-26 13:01
下一篇 2025-02-05 14:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/137159.html