查看原文
其他

20万DBA在关注的11个问题

墨天轮 数据和云 2024-03-03

引言



云和恩墨旗下的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别名的区别。之间是如何区分的?


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





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

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


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





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


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





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


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





由于磁盘组冗余度不符合安全要求,对各表空间(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() 取样查询。





现在有一个需求,客户有两个网络,都需要连接数据库,需要配置两个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如下:

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


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


往期精彩


  1. DBASK问答集萃第一期

  2. DBASK问答集萃第二期

  3. DBASK问答集萃第三期

  4. DBASK问答集萃第四期


DBASK在线问答

随时解惑

欢迎了解和关注


公司简介 | 恩墨学院 | 招聘 | DTCC | 数据技术嘉年华 | 免费课程 | 入驻华为严选商城

  

zCloud | SQM | Bethune Pro2 zData一体机 | Mydata一体机 | ZDBM 备份一体机

Oracle技术架构 | 免费课程 | 数据库排行榜 | DBASK问题集萃 | 技术通讯 

升级迁移 | 性能优化 | 智能整合 安全保障 | 架构设计 | SQL审核 | 分布式架构 | 高可用容灾 | 运维代维

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

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


请备注:云和恩墨大讲堂

继续滑动看下一个

20万DBA在关注的11个问题

墨天轮 数据和云
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存