今天完成了一个负载较高的中央数据库的分库操作, 并实现了oracle的滚动升级(10.2.0.1->10.2.0.4), 业务中断仅15分钟. 平台: RHEL AS 4 + Oracle 10.2.0.1

分库目的:

1) 迁出BUSINESS/BUSINESS_APP两业务系统用户数据, 减轻中央库的业务压力和负载, 调整数据库架构, 以应对后续新业务系统上线造成对中央库的冲击;

2) 新库升级Oracle10.2.0.1到10.2.0.4, 数据库本身修复了很多bug, 增强了数据库的稳定性.

3) 调整定时任务, 把原先的定时任务由crontab/job方式改为oracle scheduler.

大概操作步骤如下:

--1) 提前安装Oracle10.2.0.4, 并部署Streams复制(schema复制)

BEGIN
DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS (
      schema_names                   => 'BUSINESS,BUSINESS_APP',
      source_directory_object        => 'DIR_SOURCE',
      destination_directory_object   => 'DIR_DEST',
      source_database                => 'SOUR.NET',
      destination_database           => 'DEST.LK',
      perform_actions                => TRUE,
      script_name                    => NULL,
      script_directory_object        => NULL,
      capture_name                   => 'cap_erating',
      capture_queue_table            => 'tab_cap_que_erating',
      capture_queue_name             => 'cap_que_erating',
      capture_queue_user             => NULL,
      propagation_name               => 'prop_erating',
      apply_name                     => 'app_erating',
      apply_queue_table              => 'tab_app_que_erating',
      apply_queue_name               => 'app_que_erating',
      apply_queue_user               => NULL,
      dump_file_name                 => 'SOUR.dmp',
      log_file                       => 'SOUR.log',
      bi_directional                 => FALSE,
      include_ddl                    => TRUE,
      instantiation                  => DBMS_STREAMS_ADM.instantiation_schema
   );
END;
/

--2) 检查目标库Streams复制是否正常

SELECT   'capture' process_type,
         capture_name process_name,
         status,
         error_message
FROM   DBA_CAPTURE
UNION ALL
SELECT   'propagation' process_type,
         propagation_name process_name,
         status,
         error_message
FROM   dba_propagation
UNION ALL
SELECT   'apply' process_type,
         apply_name process_name,
         status,
         error_message
FROM   dba_apply;

SELECT   apply_name,
           local_transaction_id,
           source_commit_scn,
           error_creation_time,
           error_message
    FROM   dba_apply_error
ORDER BY   source_commit_scn DESC;

--3) 停止全部业务系统, 要求只能中断15分钟

--4) 取消源库定时任务(包括crontab/job)

--5) 核查源库是否还有连接

SELECT   username, status, COUNT ( * )
    FROM   v$session
   WHERE   username IN
                 ('BUSINESS', 'BUSINESS_APP')
GROUP BY   username, status;

--6) 核查目标库是否还有Streams复制事务

SELECT   streams_name,
           streams_type,
           cumulative_message_count,
           first_message_time,
           XIDUSN,
           XIDSLT,
           XIDSQN,
           last_message_time,
           total_message_count
    FROM   v$streams_transaction
ORDER BY   3 DESC;

--7) 从源库获得重建序列语句, Streams复制这点特别注意, 因为Streams本身不会去同步序列值

set pages 0
SELECT   'DROP SEQUENCE ' || sequence_owner || '.' || sequence_name || ';'
            stmt
FROM   dba_sequences
WHERE   sequence_owner IN
               ('BUSINESS', 'BUSINESS_APP')
UNION ALL
SELECT      'CREATE SEQUENCE '
         || sequence_owner
         || '.'
         || sequence_name
         || ' start with '
         || last_number
         || ' MAXVALUE '
         || max_value
         || ' MINVALUE '
         || min_value 
     || DECODE (cycle_flag, 'N', ' NOCYCLE ', ' CYCLE ')
     || DECODE (cache_size, 0, ' NOCACHE ', ' CACHE '||cache_size)

|| DECODE (ORDER_FLAG, 'N', ' NOORDER ', ' ORDER ')

|| ';' stmt

FROM   dba_sequences
WHERE   sequence_owner IN
               ('BUSINESS', 'BUSINESS_APP');

--8) 目标库重建序列

--9) 源库和目标库刷新同义词, 把同义词指向新的dblink, 同义词脚本提前准备好
--源库
@E:\用户迁移\sour_synonyms.sql
--目标库
@E:\用户迁移\dest_synonyms.sql

--10) 源库和目标库重新编译失效对象
@?/rdbms/admin/utlrp.sql
exec uts.get_invalid;

--11) 各业务系统更改数据库连接指向, 并启动各业务系统

--12) 测试业务系统启动情况
SELECT   username, status, COUNT ( * )
    FROM   v$session
   WHERE   username IN
                 ('BUSINESS', 'BUSINESS_APP')
GROUP BY   username, status;

--12) 增加定时任务, 为方便管理统一改为scheduler

--13) 删除流配置
exec dbms_streams_adm.remove_streams_configuration;

--14) 其它收尾工作, 如各开发人员查询用户的授权等等.

--End--

转:http://www.cnblogs.com/jerryxing/p/3431148.html

文章可以转载,必须以链接形式标明出处。
本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/6006066.html   ,如需转载请自行联系原作者

Oracle 一次生产分库,升级,迁移相关推荐

  1. Oracle数据库教程(Oracle备份、恢复、升级、迁移)视频教程

    Oracle数据库教程(Oracle备份.恢复.升级.迁移)视频教程 风哥Oracle备份恢复与迁移升级专题包括:Oracle备份恢复基础.用户模式的备份恢复.RMAN备份恢复.Flashback闪回 ...

  2. Oracle 11g rac 生产环境asm磁盘迁移

    Oracle 11g rac 生产环境asm磁盘迁移 一.配置存储 二.配置udev(两个节点都需要操作) 三.创建新的ocr磁盘组orc 四.备份原ocr和votedisk 五.迁移OCR磁盘组 六 ...

  3. oracle 10.2.0.1升级到10.2.0.4

    --********************************* -- Oracle 10.2.0.1 升级到 10.2.0.4 --****************************** ...

  4. datapump跨平台升级迁移的总结

    最近测试了使用datapump来迁移百G数据的场景,因为实际需要,需要把Unix下10gR2的库迁移到Linux下11gR2,所以这个过程相对来说牵制也较多.考虑了多种方案,最后权衡后决定使用data ...

  5. 明晚8点直播丨 Oracle RMAN 单实例异机迁移恢复(版本:11gR2)

    Oracle RMAN 单实例异机迁移恢复(版本:11GR2)-9月29日20:00 迁移数据库的方法有多种,较为常用的则是使用RMAN.使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程 ...

  6. 29日直播丨 Oracle RMAN 单实例异机迁移恢复(版本:11GR2)

    Oracle RMAN 单实例异机迁移恢复(版本:11GR2)-9月29日20:00 迁移数据库的方法有多种,较为常用的则是使用RMAN.使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程 ...

  7. oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...

    天萃荷净 运维DBA反映生产数据库10.2.0.1存在BUG导致SQL无法使用,在升级到10.2.0.5后执行SQL报错ORA-00918,分析原因为BUG修复后要修改SQL语句,升级数据库到10.2 ...

  8. centos7恢复mysql数据库_MySQL数据库升级迁移填坑记

    原库:*.*.101.73/74 系统环境: Suse 12.4 MySQL: 5.7.29 新库:*.*.110.46/47 系统环境:CentOS7.7 64位 MySQL版本: 5.7.30 [ ...

  9. oracle 11.2.0.3RAC升级到11.2.0.4

    oracle 11.2.0.3RAC升级到11.2.0.4 一.GRID集群软件升级 二.Oracle数据库软件升级 注意 照着大佬的教程一步一步做的 ,升级完看也挺简单,可能会出现一些突发状况,这个 ...

最新文章

  1. 网站建设中这些图片优化小技巧需掌握
  2. Paper之Algorithms:国内外Algorithms高质量论文、CUMCM分类推荐(建议收藏,持续更新)
  3. matlab二重定积分_怎样用matlab求二重积分?
  4. PostMan怎样携带登录信息请求后台接口防止出现无法访问资源问题
  5. zcmu-1184(矩阵乘法)
  6. 无法加载具有重复项目项的项目: pathstroke.cpp 作为 ClCompile 且作为 None 项类型包括在其中。
  7. MOS管驱动电路总结
  8. java版spring cloud+spring boot+redis多租户社交电子商务平台 (十三)springboot集成spring cache...
  9. Class Diagram
  10. 常年“盘踞”数据库前五的 MongoDB,在中国有哪些新动向?
  11. python可视化编程实战代码_Python数据可视化编程实战——导入数据
  12. git --amend 使用和撤销
  13. 架构设计——ID生成器
  14. 神经网络为什么叫神经网络【一文看懂】
  15. 查看论文是否被ISTP、EI检索
  16. OWT Server信令分析 (下) [Open WebRTC Toolkit]
  17. 作为菜鸟的我,努力学编程就对了——初来乍到篇
  18. 安卓机更新系统会卡吗_安卓手机系统“越更新越卡”?或许和这4个原因有关,早看早知道...
  19. OSPF如何配置被动接口
  20. Spring Cloud 入门总结

热门文章

  1. Mysql —— 索引的使用顺序
  2. zabbix自动发现url以及对http返回状态码监控实现
  3. 阿里云CentOS 7.4安装Zabbix 4.2
  4. TeraTerm自动登录(Login)
  5. ibatis中iterate的用法(conjunction=or ,)
  6. JAVA中遗留的问题_java中遗留的小问题
  7. vue多单页面多tab_vue-cli3创建多页面项目
  8. 【疑点】当子元素全部浮动时,怎么解决父元素塌陷的问题?
  9. .Protobuf,GRpc,Maven项目出现UnsatisfiedDependencyException、ClassNotFoundException、BuilderException等异常
  10. Mac上重装pycharm打不开的解决方法