Oracle 一次生产分库,升级,迁移
今天完成了一个负载较高的中央数据库的分库操作, 并实现了oracle的滚动升级(10.2.0.1->10.2.0.4), 业务中断仅15分钟. 平台: RHEL AS 4 + Oracle 10.2.0.1
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--
Oracle 一次生产分库,升级,迁移的更多相关文章
- 【转帖】从 Oracle 到 PostgreSQL ,某保险公司迁移实践 技术实践
从 Oracle 到 PostgreSQL ,某保险公司迁移实践 http://www.itpub.net/2019/11/08/4108/ 信泰人寿保险股份有限公司 摘要:去O一直是金融保险行业永恒 ...
- 【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
[Linux]将Oracle安装目录从根目录下迁移到逻辑卷 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到 ...
- gitlab升级迁移(二)
前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问 ...
- 将Oracle 12c的某用户数据迁移至OracleXE的用户
前言:OracleXE全称为oracle database 11g express edition .Oracle Database 11g Express Edition是 Oracle 数据库的免 ...
- FastAdmin 生产环境升级注意
FastAdmin 生产环境升级注意 列出 FastAdmin 实际生产中升级注意事项. 安全相关,看 FastAdmin 的资讯. 如果使用 Git 更新生产文件,注意更新后的权限. JS 修改后注 ...
- 案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul
#案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul #项目背景 多套业务系统, 所有节点注册到consul集群,方便统一管理 使用consul的dns功能, 所有节点hostnam ...
- 生产环境下,oracle不同用户间的数据迁移。第一部分
:任务名称:生产环境下schema ELON数据迁移至schema TIAN ######################################## 测试一:测试参数 数据泵数据导出:exp ...
- 生产环境下,oracle不同用户间的数据迁移。第二部分
任务名称:生产环境下schema ELON数据迁移至schema TIAN######################################## 测试二:测试参数remap_tablespa ...
- 生产环境下,oracle不同用户间的数据迁移。第三部分
任务名称:生产环境下schema ELON数据迁移至schema TIAN########################################前期准备:1:确认ELON用户下的对象状态se ...
随机推荐
- Java小应用程序Applet,画布上新建按钮和文本
<pre name="code" class="java">package com.hx; import java.applet.*; import ...
- 解析posix与perl标准的正则表达式区别
解析posix与perl标准的正则表达式区别 作者: 字体:[增加 减小] 类型:转载 本篇文章是对posix与perl标准的正则表达式区别进行了详细的分析介绍,需要的朋友参考下 正则表达式(Regu ...
- 第三天:DOM EventListener 句柄的添加和移除
1.事件句柄的包含如下两个方法: ps:使用句柄的好处是,修改方法的名称时,不需要改变多处 1.添加一个句柄, 2.添加多个句柄不会覆盖,运行结果:点击“按钮”,弹出框hello,确定后,自动弹出框w ...
- [ASE][Daily Scrum]11.17
这两天感冒了没有第一时间更新blog和tfs,给大家抱歉了! 上周五我们已经将服务器搭建完成并成功通讯,周六周日大家非常给力的完成了很多内容! View Shilin Liu 处理来自服务器的数据 显 ...
- 用c#开发微信 (14) 微统计 - 阅读分享统计系统 4 部署测试 (最终效果图)
微信平台自带的统计功能太简单,有时我们需要统计有哪些微信个人用户阅读.分享了微信公众号的手机网页,以及微信个人用户访问手机网页的来源:朋友圈分享访问.好友分享消息访问等.本系统实现了手机网页阅读.分享 ...
- 撰写合格的REST API
原文 : http://mp.weixin.qq.com/s?__biz=MzA3NDM0ODQwMw==&mid=208060670&idx=1&sn=ce67b889698 ...
- Linux:软件安装
Linux 上的软件安装 四种安装方式 在线安装 从磁盘安装盘deb软件包 从二进制软件包安装 从源代码编译安装 在线安装 在不同的linux发行版上面在线安装方式会有一些差异包括使用的命令及它们的包 ...
- javascript跨域通信(二):window.name实现的跨域数据传输
首先了解一下window.name这个东西是什么. name 在浏览器环境中是一个全局/window对象的属性,当在 frame 中加载新页面时,name 的属性值依旧保持不变 并且name 属性仅对 ...
- servlet--转向forward与重定向
当使用forward形式跳转servlet时,地址栏会显示跳转前的servlet访问地址. 跳转是在服务端实现的,客户浏览器并不知道该跳转动作. forward可以跳转到另一个servlet,jsp, ...
- MySQL:InnoDB存储引擎的B+树索引算法
很早之前,就从学校的图书馆借了MySQL技术内幕,InnoDB存储引擎这本书,但一直草草阅读,做的笔记也有些凌乱,趁着现在大四了,课程稍微少了一点,整理一下笔记,按照专题写一些,加深一下印象,不枉读了 ...