DBA入门之路:察微知渐细致入微

在DBA的职业生涯中,要面临无数的艰难险阻、排忧解难,所以细致入微,严谨认真的风格必不可少。养成了察微知渐的习惯,才能在分析诊断故障时层剖缕析,直指核心;而我也一直认为,将这种习惯贯彻到学习积累之中,才能形成自己沉稳的技术根基。

我在微信群的交流中,经常看到很多人屡屡提出非常简单的问题,这些问题事实上并未超越大家的能力范畴,只要仔细阅读,稍加思考就能找到答案,我认为这就是学习方法的问题。大家应该首先找到适合自己的学习方法,然后才能在技术生涯中快速进步,提升自我。

以下是我对于一些小的案例、知识点的学习思考,与大家作为借鉴。

登录计数

在OracleDatabase 10g中,默认的用户管理上有个小的改进,就是对默认的失败登录次数的限制,用户的PROFILE中,FAILED_LOGIN_ATTEMPTS设置口令失败尝试次数为10,如果连续进行了10次口令失败的登录尝试,用户账号将被锁定。

SQL> select *from dba_profiles where resource_name=’FAILED_LOGIN_ATTEMPTS’;

PROFILE RESOURCE_NAME RESOURCE LIMIT

------------------------------------------------ -------- ------------------------------

DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10

那么这里的10次登陆失败计数是如何完成的呢?查看底层表USER$的字段,其中LCOUNT字段就是用来完成这个功能的:

SQL> desc user$

Name Null? Type

----------------------------- -------- --------------------

USER# NOT NULL NUMBER

NAME NOT NULL VARCHAR2(30)

TYPE# NOT NULL NUMBER

PASSWORD VARCHAR2(30)

DATATS# NOT NULL NUMBER

TEMPTS# NOT NULL NUMBER

DEFROLE NOT NULL NUMBER

DEFGRP# NUMBER

DEFGRP_SEQ# NUMBER

ASTATUS NOT NULL NUMBER

LCOUNT NOT NULL NUMBER

。。。。。。。。

可以通过sql.bsq文件来进一步确认,这个文件提示lcount正是失败的登录尝试计数(count of failed loginattempts):

会话审计

在最近的一次客户数据库性能优化中,再次遇到了类似的一个案例。这是一个Oracle Database 11g 11.1.0.6的数据库环境:

在这个数据库的SQL ordered by Gets诊断中,发现了一条可疑的SQL,如下图所示,这个SQL的逻辑读排在第三位,占整体数据库逻辑读的14.23%,其SQL Module是: OracleEnterprise Manager.Metric Engine:

在这里我想强调一点的是,很多时候DBA在遇到数据库系统自身调用的内部SQL时,常常下意识的选择回避,认为数据库的自身功能不会存在太大的问题,而事实往往相反。我的一个座右铭是,决不放过任何一句可疑的SQL代码。这里的Module显示,该SQL是OEM的Metric引擎发起的,一个数据库的内部功能在任何时候都不应该消耗大量的系统资源。

格式化一下该SQL代码得到如下完整输出:

SELECTTO_CHAR(current_timestamp AT TIME ZONE 'GMT',

'YYYY-MM-DD HH24:MI:SS TZD') AScurr_timestamp,

COUNT(username) AS failed_count

FROM sys.dba_audit_session

WHERE returncode != 0

AND TO_CHAR(timestamp, 'YYYY-MM-DD HH24:MI:SS')>=

TO_CHAR(current_timestamp -TO_DSINTERVAL('0 0:30:00'), 'YYYY-MM-DD HH24:MI:SS')

从这段代码可以看到,该SQL是用于监控和计算失败登陆次数(failed_count)的,这一监控结果可以在某用户发生失败登陆尝试时给出告警。这里的DBA_AUDIT_SESSION用于记录审计对于数据库所有的CONNECT和DISCONNECT操作,底层表为AUD$。在Database / Grid Control中如果启用了Failed Login Count Metric监控,就可能遇到这个问题,一个建议的解决方案就是停用这个监控。

但是为什么会出现这样的问题呢?检查这个SQL的执行计划,可以发现一些端倪,如下图所示,对于AUD$表的访问出现了一个全表扫描,然后进行NESTED LOOPS OUTER连接:

如果此处AUD$表的数据量较大,就可能产生非常大量的逻辑读,影响性能,恰恰AUD$表经常会存在大量的数据,这就是原因所在。在后续版本中,Oracle正在尝试通过对该表进行分区,提升数据清理效率,并通过适当的索引提升访问性能。

外一则

对于DBA_AUDIT_SESSION的各种访问都可能遇到类似的问题,另外一则报告的问题SQL如下:

select a.CURRENT_AUDIT_SETTING, b.TOTAL_SUCC_LOGINS

from (select value asCURRENT_AUDIT_SETTING

from v$parameter

where name = 'audit_trail') a,

(select count(*) as TOTAL_SUCC_LOGINS

from dba_audit_session

where (action_name ='LOGON' and returncode = 0 or

action_name like'LOGOFF%')

and timestamp >EMIP_BIND_START_DATE

这段SQL在客户环境中的执行计划如下图所示,类似的执行计划和全表访问,导致了SQL执行成本的上升,极大的影响了性能:

任何时候,我们都应当对系统的功能与SQL心存警惕,不能掉以轻心。

近期文章

删繁就简-云和恩墨的一道面试题解析

用SQL解一道数学题:Gauss和Poincare

新年贺礼:云和恩墨大讲堂期刊发行

2015 Oracle 十大热门文章精选

Oracle 12c ASM 防火防盗新特性揭秘

DBA入门之路:学习与进阶之经验谈

DBA入门之路:关于日常工作的建议

数据驱动,成就未来。整合业界顶尖的技术与合作伙伴资源,围绕数据及相关领域,提供解决方案和专业服务。

业务架构

电子渠道(网络销售)分析系统、数据治理

IT基础架构

分布式存储解决方案 | zData一体机 | 容灾环境建设

数据架构

Oracle DB2 MySQL NoSQL

专项服务:架构/安全/容灾/优化/整合/升级/迁移

运维服务:运维服务 代维服务

人才培养:个人认证 企业内训

软件产品:SQL审核、监控、数据恢复

应用架构

应用软件和中间件:数据建模 | SQL审核和优化 | 中间件服务

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP技术

8 个不得不说的 MySQL 陷阱

Mysql安装简单,速度较快,功能丰富。另外它还是开源运动的标杆,它的伟大成就向我们展示了一个成功的公司是可以建立在开源代码之上的。 然而用过mysql的人都曾...

3235
来自专栏PHP技术

浅谈12306 核心模型设计思路和架构设计

原文出处: 汤雪华 前言 春节期间,无意中看到一篇文章, 文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很...

3997
来自专栏杨建荣的学习笔记

学习Oracle和MySQL推荐的几本书

已经很多次收到后台网友的留言或者私信了,对于学习Oracle和MySQL,他们都有类似的疑问,我就索性放在一起来回答下。 简单来说,官方文档是最好的...

4256
来自专栏数据库新发现

一道面试题引出的系列数据库性能,数据安全问题及解决方案

友情链接:http://enmotech.com/web/classify/43.html

552
来自专栏LanceToBigData

TCP/IP(二)物理层详解

前言   在前面说了一下,计算机网络的大概内容,没有去深刻的去了解它,这篇文章给大家分享一下物理层!   我们知道ISO模型是七层,TCP/IP模型是五层,而t...

2125
来自专栏数据和云

DBA决不能心存侥幸

最近一个阶段,在不断频繁的出差中,也不断接收到大量的客户援助请求,各类千奇百怪的故障呈现出来。 题图是来自某客户现场的一条标语:侥幸的明天就是不行。这张图在微博...

3208
来自专栏CSDN技术头条

4个简单的数据管理技巧

它发生在我们所有人身上,你会收到新的A/B测试结果和需要验证的数据。或者你将最新漏斗分析转化到一个数据应用中,这样就可以不断地收获你努力工作带来的好处。当在检查...

18310
来自专栏飞总聊IT

难圆满的SQL Server 2017Linux梦

难圆满的SQL Server 2017Linux梦 ? 最近数据库领域大事不断。继Oracle OpenWorld由70多岁的CTO Larry宣告着DBA们的...

3228
来自专栏开源FPGA

是否有必要学习使用纯Verilog写一个SDRAM控制器

1193
来自专栏达摩兵的技术空间

工作被别人打断了怎么办?

我们经常在自己设置的番茄钟也就是25分钟内遇到被打断的情况。这里我们从几个角度切入分析应该如何应对。

492

扫描关注云+社区