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 ...
随机推荐
- 命令行导入SQL文件
摘要:把数据库导出为XX.sql格式的数据库文件,导入到另外一个数据库中的时候,总是无法全部导入.及时用mysql的命令界面导入依然是无法全部导入.老师告诉我:在命令行中运行的效率和成功率是最快和最高 ...
- Linux和Windows下查看、设置环境变量的比较
[一]查看环境变量: 1.windows 查看所有的变量:set 范例:>set 查看某个变量的值:set 环境变量名 范例: >set JAVA_HOME ...
- struts 标签<s:ierator>的简单使用说明
struts 标签<s:ierator>的简单使用说明,只显示<s:ierator> 的前6条数据 <s:iterator value="lstVisitor& ...
- Html5前端框架
BootCss bootcss.com amazeui http://amazeui.org/
- Backbone Model——数据模型
Model是Backbone中所有数据模型的基类,用于封装原始数据,并提供对数据进行操作的方法,我们一般通过继承的方式来扩展和使用它. 如果你做过数据库开发,可能对ORM(对象关系映射)不会陌生,而B ...
- C#课外实践——校园二手平台(技术篇1)
前面分享了这次的课外实践的心得,这次,就分享一下从这次的课外实践的过程中学到的知识技能吧.虽然有句话说的好,不要做没有准备的战争,但是,我想说的是,生活中有很多的事情是不允许我们有准备的.遇到事情必须 ...
- paip. 定时 关机 休眠 的总结
paip. 定时 关机 休眠 的总结 //////////////////title bat shell 批处理日期时间的使用比较. bat shell 批处理if else 多行.. 作者Attil ...
- 单元测试之NSNull 检测
本文主要讲 单元测试之NSNull 检测,在现实开发中,我们最烦的往往就是服务端返回的数据中隐藏着NSNull的数据,一般我们的做法是通过[data isKindOfClass:[NSNull cla ...
- hdu 1087 动态规划之最长上升子序列
http://acm.hdu.edu.cn/showproblem.php?pid=1087 Online Judge Online Exercise Online Teaching Online C ...
- php读取大文件的方法
1.使用file 函数直接读取 $starttime = microtime_float(); ini_set('memory_limit','-1'); $file = "testfile ...