DBA最好的“枕边故事”丨真实世界Oracle故障诊断之一千零一夜_张维

来源:数据和云      日期:2019-12-03 10:27    浏览数:2095次

原标题:DBA最好的“枕边故事”丨真实世界Oracle故障诊断之一千零一夜

云和恩墨大咖系列报道

2019数据技术嘉年华于11月16日在京落下了帷幕。大会历时两天,来自全国各地上千名学术精英、数据库领袖人物、数据库专家、技术爱好者在这里汇聚一堂,围绕“开源 • 智能 • 云数据 - 自主驱动发展 创新引领未来”的大会主题,共享"开源自研,云和数据,智能运维,智能业务,数据前沿,用户实践"六大主题盛宴。

近期,小编为大家精心准备了“2019数据技术嘉年华——云和恩墨大咖系列”分享。在此次嘉年华大会上,云和恩墨专家团聚焦行业热点,分析典型案例,探索数据价值,共论智能未来。

让我们跟随云和恩墨专家团一同回顾嘉年华的精彩瞬间,领略他们眼中的数据之美吧~

2019数据技术嘉年华 张维照先生现场演讲图

本期,我们请到云和恩墨交付总监 张维照先生,张维照有超过10年的一线数据库维护经验, 热衷于数据库性能调优和故障诊断,是一名 Oracle ACE-A。本次嘉年华他带来题为:真实世界Oracle故障诊断之一千零一夜主题分享。下面,让我们跟随张维照的文字,走进他的 “一千零一夜” 篇章。

注: 点击文章底部“阅读原文”,立即下载张维照老师本次大会PPT!

今天很高兴来到这里, 我是张维照,“运维”的“维”,(~o_o~)。从事Oracle DBA一线工作十年有余, Oracle ACE-A,工作之余会在我的Blog(anbob.com)分享一些日常维护工作中遇到的有意思的案例和学习成果。开始为了督促自己进步,利用google搜索自己文档方便,后来就这么坚持至今, 可能世界上所有的坚持都是因为热爱。

身处在知识大爆炸的时代,获取知识的途径更加廉价和丰富, 数据库类型更是“百花齐放”,“万象更新”,开源、国产、云数据库开始崛起。首先,开源不是免费午餐,更不能只关注开源本身,重要的是开放的生态不能选择进入技术堡垒。再者,正如本次大会主会场行业大咖们所说, 如果国产库总是“慢一步”,那是不会有未来的。也希望国产数据库的崛起, 性能不是数据库的全部,稳定与安全同样应该放在首位。最后,我想提一点,不能上了某云就无法换云,选择国产也不应该是重走长征路。于我个人而言,我也关注学习其它几个数据库,我喜欢所有数据库,但是发现Oracle依旧是我“初恋“。

”一千零一夜“系列故事集可能是家中有小孩子床头必备书,刚开始接到分享任务时,我不确认要分享什么。我突然想到,几年前做好的电子书整理,但一直没有分享, 这次我希望把我分析故障的案例中一部分经验分享出来, 望大家在做相同操作起到一点预防或运维规范参考作用。非一线城市的客户在最佳实践、规范化方面还是相对较弱,我希望今天的分享能让他们多一些预防,少一些救火。Oracle技术是个知识的海洋,我只能分享点滴,诊断故障是一种能力,避免故障同样也是能力。

一、Oracle日常维护中风险

1. CPU

2. 内存

3. 网络

4. OS

5. 同样还有存储空间也不是一次给足,一劳永逸,同样存在数据库db_files资源上限,文件系统inode上限,directory index上限等。

6. 一次One-off patch28423598 安装后,因为启动方式的不同,sqlplus启动报错,srvctl start instance正常,结果发现补丁缺陷导致oracle执行文件权限存在差异。

7. 同一个数据库不同实例看到的参数不一致,但opatchlsinv显示的版本又相同时,但也不一定是真实,如何诊断?Oracle0文件是上一个版本oracle文件的备份,确认了之前升级失败导致。

8. 11.2.0.4 迁移PL/SQL package一个很平常的操作,居然在导入后package body总是invalid, 导入过程中corrupted, 后分析原来是时wraped PL/SQL中如果首尾出现“/”符号,会出来这个问题是当前版本的BUG。

9. 平时一个很平常的RMAN备份还原迁移,结果因为在备份还原中使用了parallelism, 在写入Veritas 文件系统后,因为veritas 也是和Oralce table一样是extent的结构,结果写不连续,一个8G的数据文件生成了17万个碎片,而导致在检索巨大的元数据时,耗费了大量的CPU, 影响了IO效率出现约10倍左右的衰减。

10. 数据库中存入的一个‘0‘字符,而导致了C 语言程序在读取字符时,自认为是字符串结束符,而出现的截断,影响了应用程序字符解析。

二、升级12C 后容易遇到的问题

1. 升级12c存在一些情景过度生成trace 文件

2. 参数建议

3. 升级后优化器 语法转换失败的解决方法

三、案例优化SQL解析高而引入了bug

Dbms_shared_pool.markhot 用于降低lib cache 的对象操作wait Library cache: mutex X, 如version count 高时search ,pin,unpin child 的cursor. cursor:mutex s/x , Markhot 会依赖CPU 个数创建不同的副本, 当然最佳是改应用代码加 虚拟hint

如/*copy1*/ /*copy2*/ …. , 所以建议不要所有问题都偷懒从数据库端解决。

问题时间 ASH 出现较高的log file sequential read等待。

分析是又触发了一个内部错误,而自动生成的redo dump。

相比其它同类RDBMS, MySQL每个SQL都是硬解析,延伸记录一下PostgreSQL 12中对于SQL游标共享的处理方法Prepared Statements。Oracle会把执行计划存储在shared pool(Library cache)中对于所有会话可以共享,但同时高并发时可能会出现librarycache争用,但是PG不同,其存储在program的本地内存中,只能给会话级复用。在PostgreSQL V12版本中引入一个参数 plan_cache_mode,有三个值auto(default) 、force_custom_plan 和 force_generic_plan,记录三个参数对于CBO带来了哪些影响。

四、Oracle19c 自动索引的一种应用场景

Oracle的很多技术不得不感叹,确实是走在关系型数据库的前沿。Oracle 19c自动索引技术首次引入,是AI在DB领域一次创新。

之前版本Index monitor是一种排除法, 19c的自动索引更像是一种清空后的加法。使用在线克隆PDB的功能,复制一套测试环境,然后调用dbms_auto_index.DROP_SECONDARY_INDEXES清理掉所有不影响业务完整性约束的索引。然后根据测试SQL按需评估创建AI索引。这样就可以比对原系统人工创建和AI自动索引的差异性。

规范化、标准化是自动化的前提,希望在前期规划和维护前多一些思考与敬畏,减少一次故障的发生。Oracle有很多最佳实践, 也许在不同行业有一些不同的触发场景, 规范也略有不同, 只有多测试方可找到适合自己的最佳实践。例如我在一个关于癌症的宣传中看到,世界卫生组织把65度以上热饮归为致癌物,而我们还在一直强调“趁热喝”,道理是相通的,不是么?返回四川新闻网,查看更多

责任编辑:

广告网http://www.yxad.com/

热门文章

  • 合作伙伴

  • 官方微信
    官方微信

    新浪微博
    文章投稿
    yxad@qq.com
    邮件订阅
    第一时间获取最新行业数据、研究成果、产业报告、活动峰会等信息。