20万DBA在关注的11个问题

引言


云和恩墨旗下的DBASK小程序近期增加了数据库 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的专题栏目和一些新的技术专家,另外,也新关联了技术闲谈、OB、架构文摘、51CTO技术栈等等数据领域的公众号,欢迎大家阅读分享。

新晋技术专家


下面是墨天轮DBASK部分新晋的技术专家。大家可以点击往期阅读《墨天轮DBASK技术专家邀请函》了解详情,申请成为我们的技术专家,加入专家团队,与我们一起创建一个开放互助的数据库技术社区。

房晓乐

TiDB学院院长

赵全文

Oracle ACE Associate,擅长数据库日常运维和性能优化

利成文

擅长Oracle, DB2, SQL Server等数据库

李敏

擅长Oracle RAC、ASM等高可用领域,另外人称XD小王子

邓秋爽

擅长Oracle性能优化和故障处理

许文榕

擅长Oracle日常运维及故障处理

许玉晨

擅长Oracle日常运维及故障处理

孙加鹏

擅长Oracle、SQL Server等数据库

谢金融

擅长Oracle日常运维及故障处理

刘娣

恩墨东区交付一姐,擅长Oracle性能优化

刘文波

擅长Oracle日常运维、故障处理以及性能优化

陈刚

擅长Oracle故障处理

周琦放

擅长Oracle性能优化

杨天成

擅长Oracle、及开源数据库

张敏

擅长Oracle数据库的日常运维

新关联公众号


墨天轮DBASK是一个开放互助的数据库技术社区。所以,我们也新关联了技术闲谈、OB、架构文摘、51CTO技术栈等等数据领域的公众号,方便大家的阅读。如果有和数据相关的公众号,有文章转载合作的需求,可以留言联系小编哦~

我们分享本期DBASK小程序整理出的问题和诊断总结,供大家参考学习,详细的诊断分析过程可以通过标题链接跳转到小程序中查看。


问题一、总结不走索引的常见情况

请问SQL什么情况下不走索引,帮忙总结一下。

诊断结论

1. 谓词中出现NULL过滤条件

2. 谓词中出现函数转换导致没有走索引;

3. 统计信息不准确;

4. 在WEHRE条件中like中关键字两边都有"%";

5. 查询条件值与列类型不一致;

6. 查询条件列进行数学运算;

7. 索引列在 IN 或者多个 OR 语句中;

8. 是否使用的是不可见索引等。


问题二、sid和服务名,和tns别名的区别

sid和服务名,和tns别名的区别。之间是如何区分的?

诊断结论:拿两节点RAC的情况说明下吧:db1/db2为两个节点的sid,是两个节点数据库实例的唯一名称,与instance_name参数一致分别为db1/db2;db为服务名,方便应用连接数据库,与service_name参数一致两个节点为db;tns别名为在tnsnames.ora文件中自定义的别名,应用使用此别名连接数据库,如连接字符串为db,tns别名设置为crmdb,应用连接直接使用crmdb即可,方便辨别。


问题三、oracle DG failover后更改flashback操作的并行度

我这边遇到一个问题,想改变DG在failover后主库进行的flashback操作时的并行度,就是主库执行flashback to scn xxxxxx的命令所默认的并行度。我们观察到默认是128的parallel,但是由于某些原因,我们可能需要降低并行度,请问有什么参数可以控制吗?

我在网上到处都找不到相关文章,也无法从专业书籍里找到类似的研究。

诊断结论:经测试,flashback的并行度默认受CPU_COUNT参数控制。


问题四、MySQL体系结构中一直说也有SGA和PGA,请问具体位置在哪?

MySQL 体系结构中一直说也有 SGA 和 PGA,5.7 的官方文档也没有描述,那请问是在 InnoDB 中,还是具体位置在哪?

诊断结论:一般而言,如果对应于Oracl的这两个对应概念,SGA指的是以Innodb buffer pool,innodb字典,frm缓存等公用缓存组合出来的内存区域。PGA指的是以sort buffer,binlog buffer等线程专用内存组合成的内存区域。


问题五、oracle 11g支持IPV6吗?

公司最近在做IPV6的改造方案,我想问下对现有oracle数据库会有什么影响吗?公司主要用oracle11g和oracle12c。

诊断结论:11gr2支持单节点使用ipv6,12cR1支持public IP的ipv6(内联不支持),12cR2完全支持。


问题六、move表后,表空间可用300G,但是无法resize

由于磁盘组冗余度不符合安全要求,对各表空间(Bigfile)进行清理后尝试做数据文件的resize操作,过程如下:

1. 新建表空间,作为数据中转用

2. MOVE大部分表(90%)至其新建表空间后MOVE回原有表空间,从而减少数据库碎片

3. 收缩对应的数据文件在MOVE回原有表空间后重建相关索引,统计发现可用空间提高40G左右,有效的减少了碎片,但是无法resize数据文件到MOVE之后的大小。

诊断结论:实际上按照你的操作思路,可以move 100%的表都去另外一个表空间,然后直接drop掉原有表空间就可以了。如果存在没MOVE表的EXTENTS已经扩展到了数据文件的边缘,是没办法resize的。


问题七、如何快速预估表的行数

请问有哪些方法可以快速预估表的行数?

诊断结论:

1. 并行查询count(*);

2. 统计信息num_rows字段;

3. sample block() 取样查询。


问题八、RAC配置多个public网络

现在有一个需求,客户有两个网络,都需要连接数据库,需要配置两个public网络,请问如何配置。

诊断结论:首先官方建议不要在安装Oracle时配置多个public网络,等集群安装完之后再通过命令去添加public网络,测试步骤详见小程序文章。


问题九、关于分区表全局分区索引和全局不分区索引的效率

按月分区的分区表,单个分区表记录大约1500万,对于非分区键上的索引来说,是建全局分区索引还是不分区索引效率高?分区索引按照列HASH分区还是有其它方式?

专家解答:LOCAL索引的最大好处是在进行分区操作,比如TRUNCATE PARTITION, DROP PARTITION时,不会出现索引INVALID的情况,不影响索引的可用性。由于GLOBAL索引所有的数据存储在一起,因此当执行分区操作的时候,索引会失效,而如果想要保证所有的有效性,需要增加UPDATE (GLOBAL) INDEXES语句,这使得原本很快结束的DDL操作,由于需要维护全局索引而变得非常缓慢,且产生大量的日志。12c之后,全局索引的异步同步可以缓解全局索引的这个问题。

而GLOBAL索引的好处是,在表变为分区后,只要索引仍然是GLOBAL索引,通过索引访问数据的效率就不会下降。由于LOCAL索引的索引分区数量和表分区数量相等,如果访问一个LOCAL索引,且查询条件未指定分区键值,这时Oracle将会扫描所有的索引分区。而GLOBAL索引则只需要访问一棵索引树,当分区数量众多时,二者的效率差异是非常明显的。

当然,它们还有其他的区别。就用户而言,判断需要GLOBAL还是LOCAL索引,最主要看是否会频繁进行分区的维护操作,比如定期删除老分区,如果是的话,LOCAL是最佳选择,如果不是,则考虑GLOBAL索引。


问题十、同样的SQL,变量不同执行计划不一样

一条相似的SQL语句,变量值不同,执行计划不同。SQL如下:

select order_no from OWNER.TAB_NAME where pa_id = '10221178' and ORDER_TIME > SYSDATE - 120;(异常)
select order_no from OWNER.TAB_NAME where pa_id = '10221178' and ORDER_TIME > SYSDATE - 150;(正常)

诊断结论:120的trc文件可以看到成本最低的是bit map and的执行路径,120的trc文件可以看到成本最低的是bit map and的执行路径。至于为什么两个执行计划不一样,应该和IDX_XXX索引选择率变化导致bit map的成本增加有关。


问题十一、oralce 11g RAC 系统时间同步问题

Oralce 11g RAC 系统时间慢慢的就比正常时间慢了,如何解决呢,rac节点之间时间是同步的,但是比实际时间慢出30分钟,这个问题如何避免呢,rac本身自带了时间同步的服务,还可以在外面再加ntp服务吗?

诊断结论:一般都是在两节点开启NTP服务,同步外部NTP服务器的时间,实践中都是配置NTP服务。如果启用NTP服务,集群自己的ctss服务会停止,没有影响。如果需要启用NTP,特殊情况下可能会导致节点重启,保险起见,可以到下次停机窗口一起变更。

本文分享自微信公众号 - 数据和云(OraNews)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-27

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维经验分享

数据备份及恢复(mongodump/mongorestore)

1.mongodump创建高保真的BSON文件,mongorestore可以用其恢复数据库。对于小型数据库的备份和恢复,这两个工具非常简单和高效,但对于大型数据...

21830
来自专栏运维经验分享

MongoDB 备份与还原 mongodump、mongorestore

​ mongodump 是 MongoDB 官方提供的备份工具,它可以从 MongoDB 数据库读取数据,并生成 BSON 文件,mongodump 适合用于备...

19420
来自专栏MongoDB中文社区

什么是MongoDB?简介、架构、功能和示例

什么是MongoDB?MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储。MongoDB是2000年代中期出现的一个数据库,属于NoSQL数据库...

25210
来自专栏业余草

手把手教你MySQL“误操作”回魂术

误操作数据库的事情,估计不少开发人员都可能会遇到。毕竟常在河边走,哪有不湿鞋的呢?

16220
来自专栏运维经验分享

备份(mongodump)和恢复(mongorestore)

MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件  备份数据使用下面的命令...

69110
来自专栏运维经验分享

linux中的 tar命令的 -C 参数,以及其它一些参数

复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html tar命令的-C参数  ...

47930
来自专栏业余草

MySQL的高并发处理技术MVCC

最近五一放假,除了带小孩到处转转外,还看了几页《高性能MySQL》。另外家里还有一本《高可用MySQL》,这都是以前在 CSDN 写作时送的书。前前后后大概 4...

19030
来自专栏运维经验分享

Mongo的备份和恢复(mongodump 和mongorestore )

1、mongorestore恢复数据默认是追加,如打算先删除后导入,可以加上--drop参数,不过添加--drop参数后,会将数据库数据清空后再导入,如果数据库...

13430
来自专栏JAVA葵花宝典

count(1) 比 count(*) 效率高么?

MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么...

14520
来自专栏腾讯云serverless的专栏

前端如何单枪匹马实现小程序页面级版本控制

小程序冷启动时,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。

14220

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励