当前位置:   article > 正文

oralce数据库迁移,低版本像高版本迁移,清空表数据_oracle低版本数据导入高版本

oracle低版本数据导入高版本

前言

公司要把数据库迁移到另一台服务器,旧库用的是11G,新库用的19c


提示:以下是本篇文章正文内容,下面案例可供参考

一、第一次迁移

由其他同事迁移,使用数据泵,迁移过程报了很多错误,数据不全,故此次迁移失败。

虽然数据不全,但是这些同事把表结构都创建了。

二、第二次迁移

1.创建表

第一次迁移的时候表结构已经创建好了,不需要再创建,这里只是说说我建表的其它思路:

使用plsql以sql方式导出表结构,如果表空间不一样,批量替换sql文本中的表空间。

2.清空表数据

因为第一次到表结构的时候,有些表也导了数据,故我需要清空表数据,如果表没有数据,跳过此步骤。

(1)禁用表约束

  1. select 'alter table ' || table_name || ' disable constraint ' ||
  2. constraint_name || ';'
  3. from user_constraints
  4. where constraint_type = 'R';

拿查询结果去执行

(2)启用表约束(导完数据后再执行)

  1. select 'alter table ' || table_name || ' enable constraint ' ||
  2. constraint_name || ';'
  3. from user_constraints
  4. where constraint_type = 'R';

先备份查询结果,执行完下面清空表数据sql后再执行启用约束sql(此查询结果)

(3)生成清空表数据sql

select 'truncate table '||table_name||';' from user_tables;

拿查询结果去执行

2.导入数据

思路

优先使用数据泵,exp次之,最次的思路:

如果两个数据库是相通,可以使用dblink和navicat同步数据。

如果两个数据库是不相通,就使用navicat同步数据。

(1)dblink同步数据

表有大字段可能会报错,所以此方式同步没有大字段的表。

生成dblink复制表数据sql语句,执行这些语句剩下的拥有大字段得表可用navicat或exp同步

  1. --生成插入数据语句
  2. select 'insert into '|| TABLE_NAME || ' select * from ' || TABLE_NAME || '@dblink_name;' from user_tables where TABLE_NAME not in(
  3. --查询所有拥有大字段的表
  4. select distinct t_tables.table_name
  5. from user_tab_columns t_column, user_tables t_tables
  6. where t_column.table_name = t_tables.table_name
  7. and t_column.data_type in('CLOB','NCLOB','BLOB','BFILE')
  8. )

(2)navicat同步数据

navicat先连接两边的数据库,然后选择“工具”-“数据传输”,打开如图窗口

选择刚才创建的连接,源的连接就是要迁移的库的地址,数据库就是用户名,同理目标库就目标库的信息。

“选项”配置,我的配置如图

因为只同步数据不同步表结构,不要勾选“创建表”选项,下一步。

勾选要同步数据的表。

如果有序列,序列不用选,因为同步过来序列是从1开始,是不正确的。

使用下面语句去旧库查询所有序列,把结果拿到新库执行序列就同步了

 select to_char(DBMS_MetaDATA.GET_DDL('SEQUENCE',u.SEQUENCE_NAME)||';') as aa from dba_sequences u where sequence_owner=(SELECT USER FROM DUAL) ORDER BY SEQUENCE_NAME;

三、验证数据是否导正确

1、先刷新再统计,在旧库和新库执行,拿结果到对比工具对比是否一样

  1. -- 刷新对应统计表 分析用户所有的对象(包括表、索引、簇)
  2. call dbms_stats.gather_schema_stats('用户名');
  3. --统计所有表的记录数
  4. select TABLE_NAME,num_rows from user_tables ORDER BY TABLE_NAME;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/1013961
推荐阅读
相关标签
  

闽ICP备14008679号