- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
平安数据库SQL审核平台
金海锋
现任平安集团数据库架构师。
拥有8年以上的数据库研发管理经验。
8年的金融行业从业经验。
擅长金融行业数据库应用架构设计。
丰富的数据库管理经验,一定的应用开发经验,掌握多门编程语言。
一次生产故障引发的思考
u故障现象:
前台大量业务功能无法使用,主机告警,CPU使用率接近100%,系统运行缓慢。
u故障分析:
一个高频SQL因隐式转换导致没有使用到高效索引,走了全表扫描,SQL性能极差。
u解决方案:
紧急固化执行计划后故障解除。
u引发的思考:
为何开发没有按照我们要求的规范来编写SQL?为何测试阶段没有发现问题?
如何再次避免这样的问题发生?
DevOps=Development+Operations+QA
人是不可靠的石器时代环境存在差异效率低下
人是不可靠的
石器时代
环境存在差异
效率低下
容易有漏网之鱼
进化
借助工具,进入铁器时代
消除人的不可靠因素
消除人的不可靠因素
消除环境的影响
消除环境的影响
提升效率大幅
不易产生遗漏
PAAudit
PAAudit
2011年
CodeXpert
2012年
DBAudit
2015年
SQLAudit
平台架构
数据库审计平台
Oracle
移交审核自助扫描
移交审核
自助扫描
月度审计
自动报告
Oracle
月度审计
月度审计
自助扫描
自助扫描自动报告
Oracle
生产审计自动报告MySQL自助扫描
生产审计
自动报告
MySQL
自助扫描
测试审核
自助扫描
MySQL
MySQL
移交审核自助扫描
SQLAudit
DBAudit
CodeXpert
为什么要对应用SQL做审计
开发人员写的SQL代码质量参差不齐,但总的来说还是偏差。
部分高压力系统因SQL代码质量问题出现生产故障。
提升开发人员的责任意识。
ITIL文档
规则集
绩效报告
绩效报告
SQLAUDIT
SQL扫描
WEB展示
审计报告
代码开发DEVPROD
代码开发
DEV
PROD
UAT
UAT
代码库
代码库
SQL捕获器 数据库解析引擎
SQL捕获器
数据库
调度器审核结果集!
调度器
审核结果集
↓基线月报规则引擎
↓
基线月报
基线日报
SQL基线
基线分析
SQL整改
SQLAudit工具核心模块为解析引擎和规则引擎。
解析引擎用于识别并解析各类的SQL语句,输出SQL树形解析结果。
规则引擎用于SQL语句的必改项违规扫描。
SQLAuditforOracle的审计规则集如下,并设置了必改项规则(黄色高亮所示),并已将必改项报告添加到开发、测试、生产的审计过程中。
类型
分类
规则号
检查点
说明
是否
必改
项
执行计划扫描
索引
PLAN-DML-I001
索引全扫
执行计划里有INDEXFULLSCAN操作,每次扣0.1分。
N
PLAN-DML-I002
索引跳跃
执行计划里有INDEXSKIPSCAN操作,每次扣0.2分。
N
PLAN-DML-I003
全表扫描
对于大于200M的表全表扫描,执行计划里有TABLEACCESSFULL操作,每次扣0.5分。
Y
连接
PLAN-DML-J001
笛卡尔积
缺少连接条件,导致SQL使用笛卡尔积的方式进行连接,每句SQL扣1分。
Y
PLAN-DML-J002
嵌套连接过深
执行计划中嵌套连接深度超过6层,每句SQL扣1分。
N
绑定变量
PLAN-DML-B001
绑定变量
未使用绑定变量的SQL,每句SQL扣0.2分。
N
PLAN-DML-B002
隐式转换
在查询列上发生隐式转换(包括良性的),每次扣0.5分。
Y
SQL扫描
通用
SQLA-DML-G001
禁止使用select*
禁止使用select*,必须明确选择所需的列,每句SQL扣0.5分。
N
SQLA-DML-G002
禁止出现重复查询子句
可以使用withas替换子句来提升SQL语句执行效率,每句SQL扣0.5分。
N
SQLA-DML-G003
索引列函数
在查询索引列上发生函数调用(函数索引除外),每次扣0.5分。
N
更新
SQLA-DML-U001
update禁止出现orderby子句
防止DML过程出现不必要的排序,每句SQL扣0.5分。
N
SQLA-DML-U002
update必须出现where子句
防止DML过程出现全表锁,每句SQL扣1分。
Y
SQLA-DML-U003
禁止更新主键列值
不允许有SQL更新主键,每次SQL扣1分。
N
查询
文档评论(0)