oracle 表更新的一次奇异经历(二)
来源:互联网 发布:魔兽世界tbc数据库 编辑:程序博客网 时间:2024/06/05 19:29
上次说的原因已经基本定位,主要是表更新后的行迁移数量过多导致。初步在网上查询了一下方法,主要有三种:rebuild、move、导出导入表信息,各有优劣。也和公司的DBA讨论了一下,他建议用move方法。我觉得前两种都可以,由于需要自己动手,就在toad中看到可以直接支持rebuild,有现成的方法生产脚本,个人觉得比较保险。
当然动手时间最好选择在晚上或周末人少的时候,因为接近周末了,所以决定周六动手。
周六下午待系统rman备份基本完成后,开始动手了,因为有toad现成的脚本,所以就容易了,rebuild生成脚本后大体看了一眼,先拷贝了一份脚本,然后点击执行。
目不转睛的盯着一步步完成,突然心一沉,居然toad脚本报错,好像是日志组冲突,“日志组“?这是什么鬼?难道因为有人操作或者rman没有执行完?看了看似乎没有发现有正在执行的session。再试一次,报错依然,心里开始有点慌了,赶紧先联系DBA,问问日志组冲突怎么回事,DBA回复不清楚。看来是rebuild不成了,赶紧紧急恢复吧,还好执行脚本还不多。现在才赶紧仔细端详rebuild的脚本,没错先改A表名为A_X,然后删除引用这个表的其他表上的外检约束,删除本表上的约束,开始新建A表,从A_X查询插入A表数据,。。。。现在到哪一步出错了?看了看A_X已经有了,A表重建没有成功,不管了,先把A_X改名回来,把其他表的外键约束、本表约束统统重新建立一遍吧。手忙脚乱一通,终于好了,算是恢复了。
这时重新审视了一下新建表的脚本,突然发现与以往不同,多了这么一句:
SUPPLEMENTAL LOG GROUP GGS_37635 (BNO) ALWAYS
直觉感觉和日志组报错有点关系,赶紧网上搜一下,好像和oracle stream、ogg等有关,这时DBA来电,OGG报错,果然和OGG有关。DBA赶紧忙着恢复OGG去了。还好业务系统已经恢复正常,还能缓口气。
OGG是别的团队负责的,一时也无法搞明白,要不第二方案?和DBA商量一下,他也说使用move方案吧,今天先不处理了,他需要找时间验证一下。好吧,只好先收工了!
第二天一早,收到DBA信息,验证通过,详见邮件。大体上看了一下,不过和想的有点出入,我们move表不用换表空间,DBA验证的是换表空间,不过既然换表空间都没有问题,那么不换表空间也应该没有问题,因此决定再用move方案试一次。move方案相对简单一点,需要注意索引失效后的重新rebuild一下就行。于是我就立刻开工。果然进展顺利,很快就执行完毕,顺便把索引、约束、外键、其他引用的视图、函数、存储过程也编译一遍,也重新收集一遍统计信息。
然后再检查一下字典表的数据迁移情况,OK,果然消除了!随后也观察一下数据情况,居然大周末也有人加班操作,没多大一会就产生新数据了,好吧,至少帮我验证基本功能正常了!
接下来还有一个小插曲,检查表索引时发现,居然主键索引的属性不是唯一,虽然不影响系统本身,但是难免心里痒痒,干脆修改一下吧,结果因为主键索引不能随便更改,只能删除重建,同时各表引用这个表的外键失效,又引起新的一轮操作,OGG又开始报错,还好有DBA在,很快恢复。
事后总结:(1)提前准备方案,特别要注意备好异常恢复方案,免得手忙脚乱;
(2)多方论证,这次调整没有意识到OGG和此次调整有关,差点吃大亏。
后记,本周前两天又通过ELK平台进行了局部URL和业务部门网段的监控分析,确认响应时间恢复到以前的水平,也算是对于周末手忙脚乱的回报吧!看来,吃一堑长一智,平常再多的理论学习也是雾里看花,到头来还得通过实践检验,同时也才算是有体会有收获。
- oracle 表更新的一次奇异经历(二)
- oracle 表更新的一次奇异经历(一)
- 一次优化web项目的经历记录(二)
- 一次配置oracle em的经历
- 上周去ThoughtWorks的一次失败的面试经历(二)
- 记一次保存UIWebView的缓存经历(二)
- 一次ORACLE OVER()开窗函数的使用经历
- 经历的一次诈骗
- 一次全站挂马的经历
- 一次失败的经历
- 一次演讲的经历
- 一次惨痛的经历
- oracle二表更新
- QTcpSocket的一次奇异之旅
- 一次oracle support的危机现场处理(之二)
- 一次上厕所的搞笑经历
- 一次重组程序的经历
- yy的一次面试经历
- halcon学习之仿射变换1
- [BZOJ2223][Coci 2009]PATULJCI(整体二分+bit)
- CSS3初步
- Opencv学习笔记(九)光流法
- Java加密技术(四)——非对称加密算法RSA
- oracle 表更新的一次奇异经历(二)
- android.os.NetworkOnMainThreadException异常解决
- 使用opencv旋转图像时出现错误:windows has triggered a breakpoint in test.ext
- Android 系列 6.18实现AutoCompleteTextView
- 手机端滚动加载下一页
- Maven的SrpingMVC+Mybatis打包文件不全
- [leetcode]343. Integer Break
- android传感器
- 微信小程序helloworld结构