zoukankan      html  css  js  c++  java
  • Oracle数据库迁移

           Oracle数据库迁移有exp/imp,expdp/impdp等神器,但是各自也都有各自的限制(也可能是自己研究不到位)。

           exp要求用户和表空间一致,expdb要求用户名一致。但是如果新库和老库的表空间和用户名都不一致如何做迁移呢?

    本文介绍借助pl/sql实现数据库的迁移。

    1、导出建表结构

        通过Tables->右键"Export data"->选择"SQL INSERTS"->选择"Create tables"

        注意一定要"where clause处填写wherw 1=2表表示此处只选择表结构不导出数据。

    image

    2、创建触发器

         该步骤比较复杂:需要先创建一个"GET_VIEW_TEXT"函数来将user_triggers的

    trigger_body转换为varchar2类型

    CREATE OR REPLACE FUNCTION GET_VIEW_TEXT(tri_name varchar2) return varchar2 is
      var_var  varchar2(4000);
      long_var long;
    begin
      BEGIN
            SELECT trigger_body
          INTO long_var
          FROM user_triggers
         WHERE trigger_name = tri_name
           and rownum < 2;
        var_var := substr(long_var, 1, 4000);
      END;
      return var_var;
    end GET_VIEW_TEXT;

    通过SQL获取触发器的创建语句

    select 'create or replace trigger ' ||description ||
          GET_VIEW_TEXT(trigger_name) 
    from user_triggers

    3、视图

    可以按昭3的方法来生成视图的创建语句,需要修改SQL语句。

      SELECT * FROM user_views 

    4、dblink

    按照老库的dblink在新库重建。在新库需要创建一个老库的dblink用于导数据使用。

    5、其他对象

       通过如下SQL检查是否遗漏对象。

    SELECT OBJECT_type,COUNT(*) FROM user_objects
    GROUP BY OBJECT_type
    ORDER BY object_type

    6、根据时间导入数据

       选择数据完整的一个时间点,根据user_tables生成导入数据的SQL。

    6、新建Sequence

    可通过如下SQL语句获取需要创建Sequence的语句。

    SELECT 'create sequence ' || SEQUENCE_NAME ||
    ' MINVALUE 1 MAXVALUE 999999999999999999999999999 start with ' ||
    LAST_NUMBER || ' INCREMENT BY ' || INCREMENT_BY || ' CACHE ' ||
    CACHE_SIZE||';'
    FROM USER_SEQUENCES
    WHERE SEQUENCE_NAME<>'AA'

  • 相关阅读:
    preventDefault()、stopPropagation()、return false 之间的区别
    angular $q服务的用法
    Introduction
    软件工程第一次作业
    整除光棍(天梯)
    遍历数据文件目录music中的所有歌单,提取歌曲名称以及对应的标签,并进行统计。统计各个标签的歌曲数目,并在每个标签下找出出现次数最多的3首歌曲,写入到excel表格中:
    Python中字符串的format
    Kafka设计原理总结
    Dubbo源码分析
    浅谈HTTPS传输过程
  • 原文地址:https://www.cnblogs.com/wangn/p/3324770.html
Copyright © 2011-2022 走看看