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

本文主要是介绍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技术是个知识的海洋,我只能分享点滴,诊断故障是一种能力,避免故障同样也是能力。

1

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 语言程序在读取字符时,自认为是字符串结束符,而出现的截断,影响了应用程序字符解析。

2

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

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

2. 参数建议

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

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带来了哪些影响。

4

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

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

 

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

 

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

小编提醒关于《2019数据技术嘉年华PPT》共有两个获取途径:

1. 在“数据和云”公众号后台回复:2019dtc,即可下载!

2.在“墨天轮”上,已按13个会场整理了目前所有已经开放的PPT,大家可以选择感兴趣的主题下载,详情:https://www.modb.pro/db/11553,复制到网页中打开。

PPT还在不断更新完善,请持续关注!

扩展阅读


  1. 倏忽相聚,共论创新:干货满满的嘉年华落下帷幕

  2. 自控力差,你可能忽略了一种更底层的能力

  3. 企业级分布式 HTAP 数据库管理系统,腾讯 TBase 正式开源  

  4. PostgreSQL学习的九层宝塔

  5. MySQL和PostgreSQL在多表连接算法上的差异

  6. 分布式事务中间件你知道哪些?

  7. 史上最全Oracle数据泵常用命令

  8. 如何巧妙处理enq: TX - index contention问题?

  9. 如何在ORACLE CLOUD中创建和访问容器集群丨内附官方文档链接

  10. 替换Oracle,从阿里巴巴到亚马逊-他们在逃离什么?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

help,30万+下载的完整菜单栏

2019DTCC,数据库大会PPT

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

ENMOBK,《Oracle性能优化与诊断案例》

DBALIFE,“DBA 的一天”海报

DBA04,DBA 手记4 电子书

122ARCH,Oracle 12.2体系结构图

2018OOW,Oracle OpenWorld 资料

产品推荐

云和恩墨Bethune X企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!

云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

戳这里,阅读原文( 注: 点击下方“阅读原文”立即下载本次大会张维照老师PPT

这篇关于DBA最好的“枕边故事”丨真实世界Oracle故障诊断之一千零一夜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/321011

相关文章

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1:MSSQL SQL语法篇: BULK INSERT      [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]         FROM 'data_file'        [ WITH       (      [ [ , ] BATCHSIZE = batch_siz

Oracle start with connect BY 死循环

解决办法 检查start with前有没有where条件, 如果有的话,套一层select,再 Oracle start with connect BY

Java 文件读写最好是用buffer对于大文件可以加快速度

参考例子: FileReader fileReader = new FileReader(filename);BufferedReader bufferedReader = new BufferedReader(fileReader);List<String> lines = new ArrayList<String>();String line = null;while ((line =

Java调用Oracle存储过程一

一、通过PL/SQL工具连接上Oracle数据库,创建表zx_test_procedure 二、创建存储过程 ①无返回值的存储过程 存储过程为: create or replace procedure testa (para1 in varchar2,para2 in varchar2) as begin insert into zx_test_procedure(i_id,i_n