Oracle 一次生产分库,升级,迁移

简介:

今天完成了一个负载较高的中央数据库的分库操作, 并实现了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 关系型数据库 数据库
Oracle生产数据库insert插入较慢分析过程和解决办法
Oracle生产数据库insert插入较慢分析过程和解决办法
621 0
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
384 0
|
Oracle 关系型数据库
【YashanDB知识库】YMP从oracle到yashan迁移评估报OCI相关错误
本文来自YashanDB官网,主要解决在使用YMP(yashan-migrate-platform)进行迁移评估时出现的OCI版本检查错误问题。错误原因为操作系统重装后,OCI所需依赖缺失(如`libnsl.so.1`、`libnnz19.so`等)。文章提供了排查步骤和解决方法:一是检查并配置环境变量`LD_LIBRARY_PATH`,二是若依赖仍缺失,则需手动下载并安装对应依赖文件。适用于使用YMP迁移平台的用户遇到OCI相关问题时参考。
|
Oracle 关系型数据库 网络安全
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
|
SQL Oracle 关系型数据库
Oracle向YashanDB迁移的丝滑体验
这篇文章主要介绍了从 Oracle 向 YashanDB 迁移的过程,包括 YashanDB 迁移平台 YMP 的介绍、下载安装准备、安装步骤、运行状态及访问方式,迁移中的添加数据源、创建任务、迁移配置、离线迁移、一致性校验等环节,还分享了迁移后的体验,认为 YMP 不错但希望增加在线迁移等功能。
|
SQL Oracle 关系型数据库
【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包
【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包
|
SQL Oracle 关系型数据库
基于YMP工具实现Oracle迁移YashanDB
这篇文章主要介绍了基于 YMP 工具实现 Oracle 迁移 YashanDB 的相关内容,包括 YMP 工具的简介、架构、规格,迁移前的环境准备和工具部署,迁移过程中的创建任务、评估、配置、离线迁移、校验等步骤,以及迁移体验,指出其部署简单、数据类型兼容但存在部分功能不支持等情况。
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
453 0
|
Oracle 关系型数据库 分布式数据库
如何从Oracle迁移到PolarDB(ADAM)(二)
如何从Oracle迁移到PolarDB(ADAM)(二)
378 0

热门文章

最新文章

推荐镜像

更多