Author: mac
-
使用Oracle GoldenGate 的迁移/升级数据库的例子
本文永久地址 https://www.askmac.cn/?p=16819 通过引入GoldenGate所带来的实际成绩与效果 迁移/升级所需要的东西以及产生的问题 作为解决问题的途径之一的 GoldenGate –减少停机时间 –迁移切换后的切回 –迁移阶段/确认阶段/并行执行 迁移/更新的结果 实际成绩与效果 在机器上计算需要30分钟的切换停止时间缩短为6分钟 成功大幅减少由于减少停机时间锁造成的机会损失 可以在10分钟之内切回之前认为无法实现的切回。 估计人工可以在144人/月的一半以下(有GoldenGate 相关的追加) 通过有效活用资源,成功减少成本 不需要购入、架构用于保存、实验ST的18台机器 成功将偶然性风险限制在最小 灵活使用经验 实现必要条件/解决问题/实际成绩与效果 「最小化机会损失」「风险最小化」「缩减成本」 有怎样的必要条件以及课题? 怎样解决、实现的? –为了实现目的所需要的结构 –围绕着解决所采取的idea以及tips 为何这么麻烦而困难? 迁移/更新的需求以及产生的问题 项目概要 项目概要: –伴随着机器变更的版本提升 升级的范围: –OS/DB/Middleware/外部机器等 DB相关的结构: –4节点Oracle Real Application Cluster 应用特性: –24小时365日online 其他: –迁移时机中的应用没有更改 项目中的迁移需求 目标与实现 对实际成绩以及结果的考察 需求・问题以及 GoldenGate 可以一口气解决多个需求问题的有潜力的产品 根据技术人员idea可以扩展可能性的产品…
-
解决ORACLE在将表空间设置成online时报ORA-1578错误
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 适用于 Oracle数据库-企业版- 11.2.0.3版本及更高的版本 本文档的内容适用于各个平台 目标 在尝试设置表空间为online时报ORA-1578错误 重新检查错误堆栈trace文件,可以看到ktundo(Kernel Transaction UNDO )函数 块不属于任何段 解决方案 有一个inactive事务需要在回收站里清除这个块 这是最主要的原因 ORA-01578: ORACLE data block corrupted (file # 3241, block # 64066) ORA-01110: data file 3241: ‘+DATA/trexprod/datafile/users.2148.852306913’ ========= Dump for incident 1718151 (ORA 1578) ======== *** 2014-07-23 13:39:56.893 dbkedDefDump(): Starting incident default dumps…
-
ORACLE DUL 工具使用方法介绍
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 1、介绍 这篇文档描述如何使用DUL,而不是完整的DUL功能描述。 DUL是用来替代其他方法无法实现的数据校验。也就是无法用export和SQL*Loader。数据库可能被损坏但数据库必须100%是正确的。在导出时会检查确认所有的数据库都是正确的并属于正确的段。如果DUL发现了错误的块,错误信息会被输出到文件里,但是并不会中断导出下一行或下一个块。 2、使用DUL 首先要检查你要导出的对象是否有相应的信息在数据库里。 会去从USER$, OBJ$, TAB$ 和 COL$中检索信息。 DUL会从系统表空间里获取信息,系统表空间数据文件必须包含控制文件,如果系统表空间文件不存在,那么看第六步。 2.1创建合适的“init.dul”文件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM平台指定参数(NT) REM能获取的最常见平台的参数列表:。 osd_dba_file_bits=10 osd_c_struct_alignment=32 osd_file_leader_size=1 osd_word_size=32 REM dul字典缓冲区大小如果其中一个值过低,启动将会失败。 dc_columns=2000000 dc_tables=10000 dc_objects=1000000 dc_users=400 dc_segments=100000 控制文件的位置和文件名,默认值在control.dul里 REM 在当前的路径control_file=D:\Dul\control_orcl.dul 数据库块大小,可以在init.ora中的文件中找到,或在服务器管理器中执行“show parameter %db_block_size%” 被检索到,将该参数更改为损坏数据块的块大小。 db_block_size=4096 当数据需要导出/导入格式,它可以/必须被指定。REM必须制定导出/导入的文件格式。REM必须创建一个可以被入工具使用的文件,虽然生成的文件与由EXP工具生成的表模式导出完全不同。它是一个有创建表结构语句和表数据的表转储文件。grants,存储子句,触发器不包括在这个转储文件中! export_mode=true (false表示是sqlloader,true表示imp) REM兼容参数可以设置为6,7或者8 compatible=8 该参数是可选的并能在REM不支持的长文件名(e.g. 8.3…
-
解决Oracle在SYSTEM 回滚段中出现ORA-600 [4193] ORA-600 [4194]
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 1.适用范围 版本8.1.7.4到10.2.3[release 8.1.7 to 10.2] 2.目标 这个文档主要提供一个修补方案,当SYSTEM 回滚段出项ORA-600[4139]/ORA-600[4194],这个情况会阻止数据库开启。 支持当SYSTEM回滚段被影响时,让恢复的时间点在逻辑不一致之前。 ORA-600[4193]和ORA-[4104经常由新事务并且发生在undo的段头(TRN CTL / FREE BLOCK POOL的信息)和undo 段块中。如果这个情况发生在非SYSTEM的undo段上,可以直接删除这些回滚段。这是在涉及到SYSTEM回滚段时,一个手动处理的方法。 3.修复 在进行操作之前,首先进行备份 在SYSTEM 回滚段头中使用BBED 设置ktuxc.ktuxcnfb 和 ktuxc.ktuxcfbp[0..x].ktufbuba 为0。这样做的话,Oracle在新的事务的时候会使用空的块,不会对undo块头和undo块进行比较。 例如: 如下是一个回滚段头的dump TRN CTL:: seq: 0x00af chd: 0x0036 ctl: 0x002a inc: 0x00000000 nfb: 0x0001 mgc: 0x8002…
-
解决ORACLE强制开库遇到ORA-00704 ORA-00604 ORA-01555错误
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 适用于 oracle企业版数据库,10.2.0.4及更高版本 症状 alter database open resetlogs,遇到下面的错误: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01555: snapshot too old: rollback segment number 11 with name “_SYSSMU11$” too small Tue Jan 17 04:46:17 2012 Error 704 happened…
-
了解Oracle Deferred Rollback/Undo Segments
查dba_segments可以看到一种独特的SEGMENT类型 即DEFERRED ROLLBACK: 1* select segment_name,segment_type from dba_segments where segment_type=’DEFERRED ROLLBACK’ SQL> / SEGMENT_NAME SEGMENT_TYPE —————————— —————— 1.12928 DEFERRED ROLLBACK 1.21840 DEFERRED ROLLBACK 1.30040 DEFERRED ROLLBACK 这些DEFERRED ROLLBACK也叫做SAVE Undo segments,具有以下的特性: 其存在是为了那些突然OFFLINE掉的表空间上的活跃事务存放UNDO/Rollback回滚数据 Segment_name数据段的名字为FILE#文件号.Block#块号 其SEGMENT_TYPE是DEFERRED ROLLBACK 一般自动创建在SYSTEM表空间上 属于SYS用户 如果OFFLINE掉的表空间重新ONLINE且undo数据已经被应用则会被自动DROP掉 Deferred Undo Segments是特殊用途的回滚段,其中的undo数据不同于undo表空间上的数据结构,以一种简单的顺序日志形式存在。其SEGMENT_NAME为FILE#.Block#,对应其段头segment header的物理位置。 从DBA_SEGMENTS查的话就是SEGMENT_TYPE为DEFERRED ROLLBACK的数据段,一般存在SYSTEM表空间上,且属于SYS用户。 有用户遇到过OFFLINE掉几个表空间后,SYSTEM表空间急速膨胀,最后查出来就是被这些DEFERRED ROLLBACK回滚段占用了空间。 DEFERRED ROLLBACK的数据结构就是简单的顺序存放着,而没有对齐或者填充,这一点和普通的undo是不同的。 下面是与Save Undo/DEFERRED ROLLBACK相关的事件: 10023 – Create…
-
给Oracle年轻的初学者的几点建议
“那些担心技术做不久的人,他们的担心是有道理的,因为他们的技术确实做不久;而那些不担心技术做不久的人,他们不担心也是有道理的,因为他们的技术确实可以做很久。。。。。。。“ 对你来说这个问题是有意义的,所以你觉得不要去google,不要自己检索知识,不要自己做判断(这种情况下的问题本身对别人没太大意义,因为别人一般能直接google到);而要找群里的人去讨论、解决。为什么别人(能花费这样的精力的即使不是专家,那么也很敬业)花费几个小时写的文章总结的内容,还不如你找个群里的随便交流几句,他随便打几个字来的让你信服?你是真的在研究问题,还是你想推脱自己做判断的责任给别的人?你只是在寻找自己内心的舒适区域罢了! 不要试图在QQ群里寻找问题的答案,技术类QQ群本身就很矛盾,技术讨论应当是深刻的、不随意的,而QQ群相反。我建立这些群主要目的是消息分发,而不是讨论。足够有意义的讨论应当记录下来,或者在论坛或者其他可以记录的CMS。没有意义的讨论本身是在浪费时间。 如你所说 “大家都有新手的时候” “都是一点点过来的” “你也有这个阶段”; 当然每个人都有新手阶段,但显然在某个行业技术上比较有建树的人,不会有太多坏习惯,会有自己的逻辑思考、有自己的搜索手段、遇到问题会总结而不是乱问问题,因为他知道这样做是没有效率的;他很精明,当然会追求最大利益化。 每当我问一个人看书吗?一般收到的答复都是:太忙了,没时间看书。但是,经过我的观察,他们却有大把的时间用来混各种群。 我相信这些整天在各种群里进行「交流」的人是不会统计自己每天花多少时间在这件事情上的,他们倒是很有可能关闭了朋友圈,因为他们似乎觉得扫几眼朋友圈更花时间。我并不是说把时间花在朋友圈上就是合理的,我是说,大多数人其实不知道自己的时间都浪费在那个让他/她最舒服的事情上,你比如我,这会儿不就写公众号文章呢么? 当然这篇文章不是要告诉你如何识别自己的时间花在了哪里,我已经有结论了,正如文章开头所说,大多数人这个行业里的人,尤其是一些做技术的,工程师,在我们这一行,又叫做程序员或是开发者,他们中有大多数人每天把时间耗费在各种群里面。 很多人会说,我进了一大堆群是为了学习啊,正如很多人小时候要家里买电脑说是为了学习一样,电脑对他们的用途最终变成了游戏机。群也一样,对于少数群是有价值的,对于大多数群,最后沦为了纯聊天消磨时间的工具,从这一点来说,群是高效的 — 能高效的把你的时间消耗掉。 我的建议是少用这些群,尤其是你发现群里多数情况下讨论的都是哪一个公司工资高,哪一个公司脑残,哪一个人是真的牛人,哪一个人是水货… 当然,在一个技术群里,拎出来任何一个行业有点名气的人最后都将被识别为水货,只有他们自己才最牛。当你发现就是没有人讨论行业,没人讨论技术,没有人讨论解决方案,没有人讨论代码应该怎么写的时候,我建议你最好还是从那些群里退出来。你从这样的群体里收获的只有浮躁和偏见,对你百害而无一益。你在这样的群里混 10000 个小时,也混不成一个牛人,当然,你有可能混成个群主。 有人总以为认识个把牛人自己也会进步,问题是你跟牛人都交流个什么啊?要是每天都是聊些没用的,牛人对你而言不过是个聊天机器人一样。 阻碍你进步的很可能是你领域里的各种小圈子对你影响,对你的潜移默化,最好你能远离那样的圈子。 然后你会发现,原来自己是有时间看书的,是有时间思考的,是有更多时间踏踏实实工作的。 最后,写这篇文章包括发布花了我不到半小时时间,要不是被打断两次,时间还可以更短一点。 给Oracle年轻的初学者的几点建议:之前有同学发来邮件咨询我对于年轻Oracle初学者的建议,在这里也给出maclean liu我的几点意见,供更多的人参考: 尽可能学好英语 ,把45%的精力花在英语上 Oracle急不得, 并非一蹴而就。 多做实验 多看些老外的博客,当成兴趣慢慢养着 也都可以,你还年轻 好好把C和JAVA玩一阵,特别是C ,这是有好处的。 第一份工作很重要,最好别去国企或者私企, 即便去印度企业也好,有英语环境 能接触到新鲜事物最好 不要看重工作前5年 、乃至前10年的收入, 即使你可能为生活所迫 你在QQ群里学技术?看下面扩展链接第一条、第四条 强烈建议读下扩展阅读: 你说你没时间看书,但是却有大把的时间混各种群 作者:Fenng 为什么有人工作10年仍不是专家,有人2年就足够卓越了? 俞敏洪:哪怕是盲目自信 都比懦弱和考虑周到强一百倍 适当离群,是保证优秀的必要 在Oracle甲骨文中国工作是怎样一番体验? 看图说话:Maclean在Oracle的这一年多所留下的足迹 关于技术提问和你为什么会被禁言 “所以碎片化学习是你在有系统知识基础上锦上添花,单纯只强调碎片化学习就是一个骗局,它会让你花费了大把的时间和精力,最后一无所获。” …
-
【Oracle数据库恢复】SYSAUX表空间无法ONLINE一例
简单描述一下这个ORACLE数据库恢复需求: 10.2.0.3 数据库 windows平台 主机断电导致数据库打不开 加了隐藏参数打开了数据库 但是system和sysaux上有坏块 导致数据查询不了 把SYSAUX表空间OFFLINE掉了 没有任何备份 exp导出报错,无法导出到重建库 问题卡在exp上,数据库是可以打开的 用户尝试了用 dul,但是他搞到的dul是过期的,所以用不了,他尝试修改系统时钟来让dul以为自己不过期,但是dul会读取文件头中的时间,这样瞒不了dul EXP-00008: 遇到 ORACLE 错误 376 ORA-00376: 此时无法读取文件 3 ORA-01110: 数据文件 3:SYSAUX.DBF’ ORA-06512: 在 “SYS.DBMS_LOGMNR_LOGREP_DICT”, line 995 实际在该案例中SYSAUX不可用 , 可以通过特殊的方法来彻底重建 SYSAUX表空间。 如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
-
【Oracle数据恢复】Undo表空间数据文件丢失导致数据库无法打开ORA-00604、ORA-00376、ORA-01110
前几天帮一个北京的用户成功修复了一个900G的生产库无法打开的问题,该库的背景是一个900GB的重要生产库,但是之前几乎没有任何备份,且在instance crash的情况下丢失了当前undo表空间。 尝试打开数据库OPEN database时没有报什么ORA-600[4XXX] 如[4000]的内部错误,而是直接报: ORA-00604: error occurred at recursive SQL level 1 ORA-00376: file 2 cannot be read at this time ORA-01110: data file 2: Error 604 happened during db open, shutting down database USER: terminating instance due to error 604 Instance terminated by USER, pid = 573600 ORA-1092 signalled during: ALTER DATABASE…
-
灵活使用ORACLE Real Application Testing (RAT)来减少测试人工的方法/实例介绍
前言 伴随着更新的性能问题 RAT 是什么? 可以执行时机业务中的workload相应的测试 对正式环境中的SQL进行Capture & Replay 9i / 10g 中获得的信息在 11g中重现 疑似客户端中可以再现高负荷状态 一次 Capture 中 可以变化Transaction的时机等重新执行测试 Upgrade 以及Patch 应用等导致数据库变化,并可能会影响性能。 Real Application Testing 数据库中可以高效执行测试结构 可以在应用中不加工就可以减少人工 下述两个功能,合称为RAT SQL Performance Analyzer (SPA) 调查对性能的影响 Database Replay (DB Replay) 应用的workload调查 执行时间,SQL执行结果行数,错误内容 SPA 与 DB Replay 的差别 用途与功能 SQL Performance Analyzer Database Replay 该在怎样的情况下使用? 确认指定的重要的SQL相关的系统变更导致的性能影响的SQL单体测试 通过使用数据库服务器正式环境中的负荷,执行包含子系统在内的一概性测试时。…