How to Kill session or Cancel SQL query on Oracle , MySQL, PostgreSQL(数据库比较系列八)

数据库维护过程中难免会遇到一些不正常的SQL或会话进程正在占用系统大量资源,临时需要终止查询或kill会话,在Oracle, MySQL, Postgresql数据库中不同的操作。

,

Troubleshooting Library cache lock (OPTIMIZER EXPRESSION HEADER ) on oracle 19c

The environment is Oracle 19.14 RAC 4-nodes, After the database was upgraded to 19c, there was a performance problem. From AWR, I saw a large number of library cache locks and library cache pins in the top event. namespace was OPTIMIZER EXPRESSION HEADER

Troubleshooting High Private/Interconnect Network Latency Case

系统资源的最大利用是系统优化的目标,但是过度”优化”系统的容错性就相对较差,如果出现丝毫的卡顿就会“雪崩”,前段时间分析的一个案例,号称是亚洲最好的一套HP小机配置,有Oracle原厂操刀调试的一套Oracle 12c R1环境,不过确实效率很高,突然有一天因RAC 节点之间的private network 高latency导致频繁的 gc 相关等待,从而导致性能问题。

Troubleshooting Oracle CRS start fail due to I/O hang , Message show “lpfc_scsi_prep_dma_buf_s3“ error

近日一客户的4节点RAC,有三个节点CRS驱逐已crash(node 1,2,4),CRS无法启动,只有node 3目前实例还可以连接, 联系我时现场已经把1,2,4主机重启,问题依旧,先查检幸存节点是否正常, 登录node3 实例执行一些SQL查询hang挂起, 询问是否有过什么变更,答下午node3有部分存储链路问题,硬件工程师维修过。

,

How to Change in SQL Prompt format in Oracle , MySQL, PostgreSQL(数据库比较系列七)

像UNIX的PS1环境变量可以改变shell操作提示符, 在日常工作环境中可以提升一些效率可以防止一些误操作, 很多年前在看tom关于在练习oracle操作前的一些环境配置像login.sql, 还可以显示当前的用户或数据库名很是欣喜, 下面记录Oracle , MySQL, PostgreSQL三个主流数据库改变命令行提示符的方法。

Troubleshooting Oracle 11.2.0.4 RAC OCSSD start failed with error “sgipcnMctBind” “No buffer space available (74)”

当私网出过网络问题恢复后,多次遇到过gipc无法启动的问题, 当然有些场景可以尝试kill 生存节点的gipc或gpnpd.bin(不会导致GI重启)后,进程会自动重启动,可以尝试关闭问题节点CRS stack,再重启试试, 分析检查查看GI alert log和ocssd.trc,gipcd.trc等alert中提到的一些agent日志(eg.oracssdagent_root.trc),

,

Troubleshooting Dataguard SYNC同步模式时网络问题

有时跟踪 Data Guard 后台服务很有帮助,因此我们可以查看匹配的 NSSn 和 RFS 跟踪。对于深入研究,我们还希望在 Data Guard 配置的两端运行 tcpdump 捕获,并且可能在中间的网络组件上运行。为了最大限度地减少设备上的处理开销和捕获文件中的噪音,我们希望数据包过滤器尽可能具体。

, ,

如何在 Linux 上诊断高 %Sys CPU

Linux中CPU负载高必须引起关注,通常需要先查看CPU使用类型,CPU使用分为us(用户进程)还是sy(内核调用), sys通常不应该超过user , 数据库专用主机主要来自用户级的 CPU 时间(无论是“user”还是“nice”)。因此,当 CPU 时间的大部分时间花在内核(sys)中时,这表明出现了问题, %sys一般也不超过10%, 但是%sys超高这样的问题遇到好多次,原因有:NFS4 bug、 swap IO、安装了linux杀毒如卡巴斯基、3rd party modules、NUMA、cpu 中断、内核参数配置错误等

Know more about ORACLE’S RECYCLEBIN

Recyclebin回收站是oracle数据库对于drop table的一种回退机制,可以使用flashback before drop特性闪回已drop还在recyclebin中的对象。纵观其他数据库像SQL Server也提供了类似功能, MySQL可以利用recycle_bin插件,但是作用在MySQL slave实例上,当在master实例上进行drop操作时,slave实例可以拦截drop操作,先进行数据备份再进行删除操作。 而在PostgreSQL中可以利用event trigger和pg_event_trigger_dropped_objects 来手动实现drop时 rename对象的方式变相实现recyclebin功能, 当然也可以使用一些插件如Pgtrashcan、postgresql-recycle-bin;在Opengauss中也增强了flashback的功能,但是需要注意更新方式是使用Ustore还是Astore, recyclebin不支持Ustore,只支持Astore,而且同样支持Truncate。

为什么oracle standby database需要standby log? 为什么需要比主库online redo多一组?

很多时候我们在安装配置oracle dataguard时,需要在standby db 增加standby log, 但是有一些限制,如standby log file size和主库的online redo log size相同, standby log每个thread要比主库的online redo log要多1组,为什么需要standby log?为什么会有这样的要求呢?

,

Troubleshooting CRS start fail when Private IP using 169.254.*.* due to HAIP drop route table

Oracle RAC众所周知通常需要PUBLIC和Interconnect network两个网络,当然从12c使用FLEX ASM可以增加ASM network, 而interconnect network也就是private network在11g r2后可以配置多个网卡,引入了haip实现了private networkIP的HA, 以169.254.*.*的随机IP绑定在private network网卡上。169.254因为是一个保留网段, ORACLE RAC在获取HAIP时有判断是否已使用防止IP冲突,但是最近一有个客户RAC一个节点CRASH后,private network无法互相ping通,结果发现private network安装初期使用的也是169.254.9.*。

频繁SQL Failed Parse 导致”Library Cache Lock” & “kksfbc child completion” “cursor: pin S wait on X”

环境oracle 12c, 大量session同1个SQL ID等待library cache lock,blocker session在频繁的变,并且last_call_et并不久,SQL id在v$sqlarea查询不到对应的SQL TEXT, 间隔性出现cursor: pin S wait on X和kksfbc child completion等待事件, library cache lock的P3值(namesapce+mode)为5373954, 这简单简单记录。

Troubleshooting to connect DB failed with Ora-12541 due to adump trace Inode usage 100%

在kill crsd.bin后,listener上的public ip会立即自动消失, 当crsd.bin 自动启动后,public ip又会再次注册到listener上, 以上工作均有oraagent完成,无需任何操作,当 crsd 和 oraagent 进程自动重新启动时,应在 1 分钟左右注册丢失的 endpoint。 当然影响的不只是listener还有scan listener.

Troubleshooting to connect DB failed with ORA-12154 due to User Password have “@” (at mark) char

对于ORA-12nnn错误并不陌生,ORA-12154也是如配置tsnnames.ora 的alias错误常见,但是今天这个案例“若不是亲眼所见,我是万万不敢相信”, 在sqlplus中使用EZCONNECT尝试数据库时总时提示ora-12154, 而部分用户或jdbc应用使用相同用户可以正常链接,后分析密码中带了”@“符号导致。

Oracle、PostgreSQL、MySQL、MogDB/openGauss数据库比较系列(六): 分区键更新

今天在看MogDB的官方文档时看到一条关于分区的支持“Update操作时,支持数据跨分区移动(不支持Partition/SubPartition Key为List或Hash分区类型)” 也就是分区键更新, 那默认情况下Oracle、MySQL、PostGreSQL、MogDB(opengauss)横向对比一下表现,在rang\list partition update分区键在跨分区的表现。

Troubleshooting Oracle RAC node crash frequently on OEL 6.9 (Kernel panic)

有个客户的多套RAC节点总是频繁的重启, 故障并没有时间规律,环境Oracle RAC 11G r2 ON OEL 6.9 , 当然首先建议要排除一些硬件共性的配置,如是否电源电压不稳?机器所在区域空调是否差? 是否同一个宿主机上的VM? 硬件是否有报错? 一线同学说都排查过也做了些调整并未解决。 下面分享一些处理建议。

,

How to Recover Oracle Standby Database Using an Incremental Backup?

Oracle Standby database容灾库有时因为一些原因缺少了Primary database的archivelog未应用而中断同步,如备库归档目录使用率100%,或主库未传输删除了归档等。重新搭建DATAGUARD对于较大的数据库可能是费时费力,通常可以采用增量备份的方式,最近刚好是在处理一个ogg不同步的问题时。

,

Scripts: SQL 找出不连续的数值多种方法(gap)

像v$archived_gap一样有时需要找出一些序列中跳过的数值,如1,2,4,6,10,需要找出3,5,7-9,在数据库中使用SQL可以有多种方法,以下列出几种供参考

Troubleshooting Exadata to Non Exadata ORA-64307 HCC not supported

当从Oracle Exadata工程系统迁移到非Exadata环境时,或配置Datagurad时需要注意,有些功能时Exadata专属特性,如EHCC (hybrid columnar compression )的表对象在standby 查询或使用datapump迁移时会遇到下面的错误
ORA-64307: hybrid columnar compression is only supported in tablespaces residing on Exadata storage

Troubleshooting RMAN backup hang waiting for Autobackup, DB alert log ORA-00230

昨天遇到一个问题oracle 19c(19.10), 最近一段时间的RMAN备份任务都失败了,错误中有ORA-00230: operation disallowed: snapshot control file enqueue unavailable, 看着是cf的enqueue请求失败。 处理起来比较简单,找到blocker session就可以解决了, 之前的《Troubleshooting performance event ‘enq: CF – contention’》记录过一些分析方法,本次的案例当前还没有匹配的已知bug,这里简单的记录。

,