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别名的区别。之间是如何区分的?
诊断结论:拿两节点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,特殊情况下可能会导致节点重启,保险起见,可以到下次停机窗口一起变更。
往期精彩
DBASK在线问答
随时解惑
欢迎了解和关注
公司简介 | 恩墨学院 | 招聘 | DTCC | 数据技术嘉年华 | 免费课程 | 入驻华为严选商城
zCloud | SQM | Bethune Pro2 | zData一体机 | Mydata一体机 | ZDBM 备份一体机
Oracle技术架构 | 免费课程 | 数据库排行榜 | DBASK问题集萃 | 技术通讯
升级迁移 | 性能优化 | 智能整合 | 安全保障 | 架构设计 | SQL审核 | 分布式架构 | 高可用容灾 | 运维代维
云和恩墨大讲堂 | 一个分享交流的地方
长按,识别二维码,加入万人交流社群
请备注:云和恩墨大讲堂