Troubleshooting ORA-00979: not a GROUP BY expression after upgrade Oracle 12C

数据库版本升级都会强烈建议功能和性能测试,但有时还是不具备这样的条件或未测试全面, 对于版本上线后的问题再见招拆招。最近遇到了一个11.2.0.3 升级 12.2 后有个存储过程无法执行,提示“ORA-00979: not a GROUP BY expression” 错误…

2019数据嘉年华,我和我经历的《真实世界Oracle故障诊断之一千零一夜》

主会场的爱好者们,座无虚席。 我的分享 我一共参加过2届嘉年华,上次是观众,这次是观众+分享者。 每次我都是以学习的心态参于, 收获满满,看看别人在做什么?这个行业在做什么?未来的方向在哪里?  这时代背景下分享Oracle多少有悲凉,“未能绽放就要枯萎吗?”。 但是看到Oracle专场还是不缺观众,很欣慰, 因为你不学oracle 确实什么错过很多其它库远远追不上的技术。 下面开始我的分享,没有经验时间,准备太多,时间太短。 今天很高兴来到这里, 我是张维照,“运维”的“维”,(~o_o~)。从事Oracle DBA一线工作十年有余, Oracle ACE-A,工作之余会在我的Blog(anbob.com)分享一些日常维护工作中遇到的有意思的案例和学习成果。开始为了督促自己进步,利用google搜索自己文档方便,后来就这么坚持至今, 可能世界上所有的坚持都是因为热爱。 身处在知识大爆炸的时代,获取知识的途径更加廉价和丰富, 数据库类型更是“百花齐放”,“万象更新”,开源、国产、云数据库开始崛起。首先,开源不是免费午餐,更不能只关注开源本身,重要的是开放的生态不能选择进入技术堡垒。再者,正如本次大会主会场行业大咖们所说, 如果国产库总是“慢一步”,那是不会有未来的。也希望国产数据库的崛起, 性能不是数据库的全部,稳定与安全同样应该放在首位。 最后,我想提一点,不能上了某云就无法换云,选择国产也不应该是重走长征路。于我个人而言,我也关注学习其它几个数据库,我喜欢所有数据库,但是发现Oracle依旧是我“初恋“。   ”一千零一夜“系列故事集可能是家中有小孩子床头必备书,刚开始接到分享任务时,我不确认要分享什么。我突然想到,几年前做好的电子书整理,但一直没有分享, 这次我希望把我分析故障的案例中一部分经验分享出来, 望大家在做相同操作起到一点预防或运维规范参考作用。非一线城市的客户在最佳实践、规范化方面还是相对较弱,我希望今天的分享能让他们多一些预防,少一些救火。Oracle技术是个知识的海洋,我只能分享点滴,诊断故障是一种能力,避免故障同样也是能力。 … 2019DTC ,我分享的《真实世界: ORACLE故障诊断一千零一夜》PPT 下载链接 : 链接:https://pan.baidu.com/s/1nf6mk74s1CeYTAae4lin5A 提取码:fo5o

多存储设备时Oracle RAC voting disk(表决盘)的最大可用

前几天银行客户问了一个问题,如果他们目前有两套存储,如何规划ASM diskgroup冗余度防止单存储坏时影响RAC的可用性, 常见于Extend RAC, 实现数据中心、电、网络、存储、服务器等等全部冗余。但是对于ASM DISKGROUP 可以使用redundancy normal(2-ways mirroring)允许坏1个failgroup. 甚至high redundancy(3-ways mirroring),允许坏2个failgroup. 都有可能存在坏1个存储而RAC不可用。对于Voteing disk有些特殊,redundancy normal 3个voting disk. high redundancy 5个voting disk。

Troubleshooting Slower IO Performance on Veritas for 11.2.0.4 compared 10gR2 on RAW device after RMAN migrate

一个数据库相同的存储从原来的oracle 10.2.0.4 使用RAW device,升级到oracle 11.2.0.4 同时使用Veritas 卷Vxfs 文件系统的RAC ,因为也使用了ODM(Oracle Disk Manager), 理论上也是一种变象的RAW device, 支持异常IO,避免双重buffer. 用户最直观的感受是在RMAN 备份集做的迁移后,数据库性能比之前慢的很多倍,

Oracle 11.2.0.4 “_part_access_version_by_number” = false

from 11.2.0.4, oracle use versioned KGL handle to store partitioned information, when DDL is execute against a partitioned object, it’s will increment a counter which is used is used in the KGL handle name that stores stores partitioning details. the counter is limited to 5 digits so once it exceed that digit count it migth pick up an old KGL versioned handle which would have stale data present.

Troubleshooting SYSAUX tablespace 过大, WRH$_ACTIVE_SESSION_HISTORY 未自动清理

wrh$_active_session_history记录的这些历史信息,可以通过dba_hist_active_sess_history视图进行聚合查询,wrh$_active_session_history是一个分区表,Oracle会自动进行数据清理。Oracle根据保留策略确定需要清除哪些,对于大型AWR表,数据是根据DBID,SNAPID存储在分区中。 如果分区中的所有记录都已过期,才会在自动清理数据时使用drop partition. 如果分区中有任何一条记录该分区都不会清除, 当SYSAUX表空间一直增长,如超过20Gb 时需要检查一下是否有AWR 的表一直未清理,如wrh$_active_session_history

Troubleshooting 11gR2 Grid Infrastructure Node not Join the Cluster After Evicted error show disk and network HB failed

节点2驱逐后无法再加入集群,日志显示是网络通信问题,查看开始时驱逐的原因也是VD CRS-1615:No I/O has completed 和 Network communication missing, 同时DISK HB和Network HB同时失败,并且存储和private network是双链路,用的也不是同一交换机。什么会导致同时出问题呢?

说说Oracle DB “secondary” index 那些事.(19c drop_secondary_indexes)

Oracle DB “secondary” index 叫辅助索引或次要的索引,名称是相对primary index命名的,但是在19c的dbms_auto_index.drop_secondary_indexes中可以看出删除的索引也并不是除了primary key以外的全部索引, 主键、外键、唯一键同样也会保留。 该功能可能目前也只能用于测试环境中, 如先把次要的索引全部删除,然后测试让数据库自动创建及删除维护相应的索引。

说说 ora.crf(CHM) 那些事

ora.crf是Cluster Health Monitor(以下简称CHM)提供服务的资源, 用来自动收集操作系统(CPU、内存、SWAP、进程、I/O以及网络等)的使用情况。 当然还是建议生产环境部署OSW来收集记录更久的信息, OSW是调用的OS 命令,而CHM 调用的是OS API,开销低、实时性强。 开始的版本是每秒一次,从11.2.0.3应该是变为每5秒一次。

Troubleshooting 因存储断电导致数据库ora-600 [2131], [33], [32] & ORA-600 [kffbAddBlk04] ORA-15081

简单记录一起存储突然断电导致的11.2.0.4 2-Nodes RAC恢复案例。
ORA-00600: internal error code, arguments: [2131], [33], [32], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [ORA_NPI_ERROR], [600], [ORA-00600: internal error code, arguments: [kffbAddBlk04], [], [], [], [], [], [], [], [], [], [], []
ORA-00345: redo log write error block 120471 count 109
ORA-00312: online log 1 thread 1: ‘+DATADG/anbob/onlinelog/group_1.261.897563031’
ORA-15081: failed to submit an I/O operation to a disk

Troubleshooing ORA-600 [2663] after DataGuard switchover

这是一个非常典型的dataguard 环境中存在的bug, 在oracle 11.1-12.1版本之间一直存在的BUG,当Physical Standby Dataguard 环境发现switchover或者failover后,在验证索引块上存在无效的scn时抛出的错误ORA-600 [2663],或者有时附带ORA-600 [ktbdchk1: bad dscn], 该BUG不会导致当前数据块上有数据丢失,也不会有数据勘误在索引块上。 这里简单记录.

Troubleshooting high db file sequential reads cause a insert do index split

1. Set 450502, level 1 -> to control block rejections for any index block.
2. Set underscores to reduce the limit from 10000 to something lower. If the limit is good enough, do not have to set these parameters.
3. If the limit must be reduced to below 1024 (using the underscore) additionally set event 450503 – it forces the code to accept whatever user sets.
4. Set 43822 – to control rejections for root/branch split.

12c R2注意事项: mmon trace增长很快,3秒一次AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1

Oracle 12c很多情况下TRACE目录使用率增长迅速, 之前有总结过两篇异常情况,但是最近还是比较多,记录一下另一种情况。
Oracle12c R2注意事项: 因BUG生成大量的trace file 包含KRB: (rman module)
Oracle12c R2注意事项:ORA-12805问题