Oracle to openGauss: SQL语法兼容性中的中文(全角)符号

最近有项目从oracle迁移到openGuass后存在部分应用SQL提示语法不兼容问题, 后发现SQL中在原oracle执行中包含中文逗号”,”做为查询列的分隔符, 以我对oracle的认识oracle不太可能支持中文SQL语法, 找应用常用的plsql developer工具演示了一下,果然支持中文逗号,甚至还支持中文的括号,或一半中文一半英文如”()”. 但是这种SQL在mysql, postgresql, openguass是都不支持的

,

How to speed up create index on Oracle and PostgreSQL(加速索引创建)?

创建索引是table优化访问的常用手段, 但是通常create index会影响对表上的其他DML执行(非online), oracle和postgresql在该方面提供了online的方法,但是可能会增加索引的创建时间,对于表大小超过GB创建索引你可能希望如何加速创建索引

Exadata OS reboot dev_watchdog call Trace show “dev_deactivate_queue run_timer_softirq cpuidle_enter_state”

近日一客户Exadata Machine节点总是会不定理重启,在DB和GI层无错误日志,类突然断电或无响应重启, 分析OS message日志显示如下信息。
WARNING: CPU: 2 PID: 0 at net/sched/sch_generic.c:334 dev_watchdog+0x228/0x22c
Apr 7 12:49:37 xd08anbob03 kernel: Modules linked in: oracleacfs(PO) oracleadvm(PO) oracleoks(PO) ipmi_poweroff scsi_transport_iscsi

OSW系列:ERROR. You do not have a compatible version of OSWatcher to use with oswbba.

osw是oracle检测系统资源的轻量级脚本级,是oracle的标准license许可,在oracle环境中不需要额外购买可以单独安装部署,建议也相信国产数据库后面应该也会出相应的工具,昨天一同事说是在分析一套19c的osw数据里提示错误如下:

,

( 案例) Tuning OS performace kernel.sem cause high %sys CPU

去年的blog《如何在 Linux 上诊断高 Sys CPU》 记录过%sys CPU高与oracle相关常见的2个情况 , 这次刚好遇到了因OS内核参数配置的kernel.sem信号量产生CPU高的案例,记录一下现象。 环境Oracle Exadata X8。

, ,

Troubleshooting Linux high %iowait and many Processes stuck in D state

一套医院的Oracle数据库用户平时并发并不高,但时长出现数据库无法响应,导致应用活动并发数逐渐增加,OS load能达大几百甚至1000+, 这是一个4物理CPU,144core的硬件,CPU usage sys和user并不高,数据库查询v$session活动会话高时event是大部分进程on cpu, 操作系统层是%iowait高,

Troubleshooting oracle 11.2.0.4 RAC crsd.bin is not running after replace VD and OCR(Storage device)

环境oracle 11.2.0.4 2-nodes RAC on linux, 客户做了存储设备更换,像RAC 依赖的设备VD/OCR 通过增加NEW ASM DISKGROUP方式替换,做完以后当时RAC资源都正常,此日重启CRS服务发现crsd.bin进程一直失败,两个节点相同CRS无法启动,CSSD、GIPC\GPNP均启动正常,但ASM实例启动正常,DB手动启动也可以正常open, 后分析crs日志发现crs为启动后crash, 这里简单记录该问题。

Troubleshooting Oracle 11.2.0.4 高并发insert等待 ‘enq: HW – contention’后分配大量空extent

环境11.2.0.4 RAC,表空间耗尽大量insert并发等待enq: HW, 增加30数据文件后,但很快空间再次接近耗尽,后分析增长最大的segment时发现了新增加的数据文件被insert的segment分配大量extent,但都是unused block,存在重复提升High water Mark现象,通常extent是用完后再allocate new extent,这种大量创建空extent的现象属于软件bug.

,

如何在麒麟Kylin Linux V10 SP1静默安装 Oracle 11g (11.2.0.4)单实例

最近信C进程加速, 一些行业可能面临替换CentOS、RedHat linux的ZZ任务, Oracle可能还要3-4年的缓和期,当前Oracle官方在12c已经增加了对中标麒麟的认证, 但目前没有任证的OS如果基于centOS的货也可以安装并运行生产环境, 在Kylin V10安装了个单实例oracle 11.2.0.4还算不复杂,下面简单分享

,

Alert behavior changed from 11.2.0.4 “create or replace view” fail with ORA-01720

今天有个同事咨询,发现在11.2.0.4以后的版本create or replace view 修改view 视图时,即使view owner当前用户是dba role也无法create or replace方式重建view,如当前用户u1把select on u1.t1 给u2(without grant option), 用户u2创建 view 给了u3 select 查询. 按说u3对u1.t1是当前没有级联授权,所以u2在编辑view时会报错ORA-01720,而在11.2.0.3之前是正常编辑,但行为是不正确的, 从11.2.0.4以后已做修正。

Oracle 数据库安全性评估工具 (DBSAT) 小试

Oracle 数据库安全性评估工具Oracle Database Security Assessment Tool (DBSAT) 可提供专业建议,助您降低 Oracle 数据库的安全风险或漏洞威胁。使用 DBSAT,您可以通过数据库当前状态评估(包括配置)和敏感数据发现等功能,全面洞察数据库的安全和合规态势。DBSAT区分 Oracle on-premises 数据库、自治数据库(共享和专用)和 DBCS,根据数据库目标类型,DBSAT 执行不同的检查项

Troubleshooting Oracle 19c RAC ORA-29770 with LMD hang, LMHB terminating the instance

前段时间一个oracle 19c RAC 1个节点异常重启,日志显示是lmd进程hang 丢失heartbaet 超过70s, Lmhb进程重启了实例, 操作系统资源空闲,从lmhb trace中确实lmd在做free memory的操作。

,

Troubleshooting Oracle RAC node OS shutdown (‘crsctl stop crs -f’) cause db instance stop on another node

ORACLE 2-NODES RAC只关闭了node1上的db instace,当然此时业务不受影响,node2上的实例正常依旧可以对外提供服务, 1小时后OS组准备就绪,在节点1关闭操作系统,同步收到了业务无法访问,查看node2 db实例已自动shutdown, 其它资源正常,手动立即起动db实例2恢复业务,刺激,为什么停实例1 CRS会触发停实例2 的db instance?

, ,

Troubleshooting Oracle 19c sessions hang wait “enq: SS – contention” and “DFS lock handle” event

背景是了解到当晚B库的节点1有大量的数据加载操作。实例2 FG 并行查询Sort segment allocations空间紧张,通知所有实例CIC 等待DFS LOCK HANDLE, 其它会话等它完成 等ENQ SS, 而实例1一直未答复sort segment清理完成。 因为 Sort Segments cleanup是后台进程SMON责任,实例1 DBW似乎在等SMON或DBW很忙未完成,TEMP表空间已大到1.5TB,

,

Index Rebuild in Postgresql vs Oracle

在关系型数据库中,索引是SQL查询性能优化的常用技术,mysql可能不会创建太大的数据库,但是pg和oracle表达到100G或TB以上时,慢查询可能会比较明显,需要考虑创建适当的索引,但随着时间的推移,索引可能需要一些维护来保持性能. 通常当涉及到表时更新时,Oracle管理UNDO的方式和PostgreSQL中的MVCC工作方式略有不同,然而索引仍然可能碎片化,因此需要重新构建。

12cR2 ASM start fail when using multiple private interconnects, HAIP issue

Oracle从11.2.0.2开始引入了一个新特性网络冗余技术HAIP。HAIP的目的用来代替操作系统级别的网卡绑定以实现Active-Active的模式进行数据传输。Oracle HAIP 支持多个私网,之前通常使用OS层的网卡绑定,但Oracle一直在希望使用自己的技术而不依赖其他,但HAIP存在较多bug,个人还是比较推荐OS bond网卡,这里简单记录一个案例,当使用2个HAIP网卡时,节点间HAIP 1缺失并且交叉在两个网卡上的,导致ASM无法启动。

RMAN Fails With RMAN-20021: Database Not Set On Physical Standby

前段时间一套11.2.0.4环境standby db因为password file问题与primary db产生了一个月的Archivelog GAP,修复密码文件后Standby已同步跟上Primary db ,但是原备份软件在Standby上的备份任务从那天起一直失败报错RMAN-20021

,

Troubleshooting Oracle ORA-04031 Due To KGLH0 Heaps growth

KGLH0 associated with the SQL Area in the Shared Pool. Each child cursor consumes KGLH0. Large allocation in KGLH0 can occur due to many child cursors and a lack of sharing of the parent cursor.A library_cache dump(“library_cache level 16”) reveals that each child cursor is associated with one KGLH0 and one SQLA, where KGLH0 stores environment information, and SQLA parsing tree and xplan.

Oracle 12c后的安全增强查询sys.user$ ORA-01031

Oracle 12c后的安全增强可能会导致运维中出现些差异, 如有时需要非sys用户查询sys的user$、link$等基表,这些表是因为存有password hash值,在之前一些安全部门查询是否有弱密码时喜欢采集user$,之前授权select any dictionary系统权限或dba role可以,但在是12c后增强不再允许,还有像Toad这种第三方工具如11.6的老版本在连接数据库时还以检测select any dictionary 判断user$权限也提示ORA-1031错误

如何恢复Truncate sys.IDL_UB1$?

近日一客户咨询truncate table sys.IDL_UB1$如何恢复, 为什么会有这样的需求?后来我在测试统计了一下system表空间的TOP 10的大对象,它确实在TOP 1。猜想应该是看到system表空间使用率高, 也未评估IDL_UB1$表的重要性,直接truncate释放了空间。 然后数据crash无法再启动。我找了个19c PDB测试库测试一下如何恢复?不要在生产库测试,也不要轻易删sys Schema下的对象。