使用dblink产生的”SELECT /*+ FULL(P) +*/ * FROM XXXXX P ” 解析

在MES平台看到一个提问,应用程序总时会自动产生类似”SELECT /*+ FULL(P) +*/ * FROM XXXXX P “这类SQL,确认不是应用代码中调用,看到FULL hint对于SQL调优人员可能会捶开发人员的冲动 ,同样对于SQL审核或SPA、 数据库国产迁移性能分析等需求抓到这类SQL可能就白白浪费感情。这SQL是数据库自动产生的吗?是!它是DBLINK调用的。

,

Troubleshooting oracle CRS start cssd fail with log show “unable to escalate to real time“

Oracle 11.2.0.4 RAC 安装完重启CRS启动失败,提示ocssd无法启动,ocssd日志中查看提示如下错误, 提示在提升CSSD进程为real time模式失败。
clssscSetPrivEnv: unable to set priority to 4
SLOS: cat=-2, opn=scls_set_priority_realtime, dep=1, loc=setsched
unable to escalate to real time

,

10个PostgreSQL中常见SQL错误

SQL语言当今在数据查询分析这块地位至今无法撼动,曾经的NoSQL也开始疲软,口号从”no SQL”也变成了“not only SQL”或“no , SQL!”, 但SQL的开发能力参差不齐,有些是从ORACLE数据库转到postgreSQL的,相同SQL的结果不并相同,在性能上也并不是所有人都可以编写高效正确查询,这里简单列几个在PG中几个SQL注意事项。

Troubleshooting ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

最近有家银行客户一套核心凌晨跑批时报出了ORA-04036,与12c后增加的PGA_AGGREGATE_LIMIT有关,环境oracle RAC 12.1.0.2 on AIX, 临时增加了PGA_AGGREGATE_LIMIT参数大小解决,事后找我分析原因
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

, ,

Troubleshooting Oracle 11g ORA-07445 [kkqteSetSubPartNums()+355] and ORA-00600 [kghrst:ds]

一家内衣品牌的客户,环境oracle 11.2.0.4 rac on linux, db alert log日志中出现应用查询提示oracle ORA-07445: exception encountered: core dump [kkqteSetSubPartNums()+355] [SIGSEGV] [ADDR:0x7FEFCA3BDFB8] [PC:0x7818D8F] [Invalid permissions for mapped object] [] 和ORA-00600: 内部错误代码, 参数: [kghrst:ds], [0x7FFC26461030], 简单记录该问题

, ,

Troubleshooting oracle 19c RAC ‘gc cr block lost’ and ‘Library Cache Load Lock’

最近遇到这个案例大量FG prorcess堵塞,19c (19.4) 2nodes RAC, 等待Library Cache Load Lock, 堵塞会话为REC0, 该进程等待gc cr block lost. 同时在rec0进程trace文件中提示
IPCLW:[0.0]{-}[WAIT]:PROTO: [1661188358080974]ipclw_data_chunk_process:1165 Discarding msg with seq # 875492546, expecting 2730385062
IPCLW:[0.0]{-}[WAIT]:PROTO: [1661188358080974]ipclw_data_chunk_process:1165 Discarding msg with seq # 875492587, expecting 2730385062

, ,

Troubleshooting Oracle 19c hang wait ‘enq: TX – contention’ when RECO distributed Transaction recovery

Oracle 19c RAC实例大量会话hang,等待事件为’enq: TX – contention’, 做hanganalyze 堵塞进程为RECO, ‘buffer busy waits’<='enq: TX - contention' (cycle) RECO与前台进程形成死锁, 分布式事务表dba_2pc_pendings无记录。简单记录处理过程.

, ,

Troubleshooting Performance SQL执行计划改变因为Height Balanced Histogram 的Popular Value

最近有个银行客户咨询,他们一个系统有个SQL在凌晨1点左右执行计划突然变差了,数据库为oracle 11.2.0.4 RAC, 从AWR看数据库该时段实例级几乎空闲,上线很久的业务,问题时间点无人为操作,SQL特征是查询一个分区表,2个列上查询条件,并不包含分区键列, 其中有一个列使用了绑定变量,执行计划有原来使用绑定变量列的索引改为全表分区扫描,直到白天10点以后人为收集了统计信息恢复正常。

, ,

oracle to openGauss: 迁移后中间件socket closed,这锅DB不背

有一个项目从oracle迁移到了opengauss(MogDB发行版)后,有部分应用在运行一段时间后会超时, 日志中一些Socket closed错误, 执行的是从数据库中unload一些查询数据离线存储,常见的问题有网络防火墙, 或有一些timeout配置,或网络闪断等,逐一排除,当然在出问题时,应用厂家可能出于责任原因并不会坦诚,变更的是DB,会把怀疑方向指向DB, 但最终确认是中间件配置问题, 这里简单记录一下.

How to migrate data from Oracle or another Schema or another openGauss to openGauss(PostgreSQL)?

在openGauss数据库后期维护中难免有数据迁移或复制, 比如从oracle异构数据迁移,或在同一个server中复制一个schema到另一schema, 或是从另一个server复制到本server, 有一些命令行工具可以高效率的处理这些需求,并且可以迁移数据不生成落地文件,提升迁移速度,这里简单记录三种需求。

Troubleshooting Start HAS fail “Operating System function: opendir failed with error data: 2 error location: scrsearch1”

一套Oracle 11G standalone环境数据库文件在ASM中,几年没有重启的老系统,操作系统重启后,启动HAS服务失败, 提示如下错误:
as root

# /u01/app/11.2.0.3/grid/bin/crsctl start has
CLSU-00100: Operating System function: opendir failed with error data: 2
CLSU-00101: Operating System error message: No such file or directory
CLSU-00103: error location: scrsearch1
CLSU-00104: additional error information: cant open scr home dir scls_scr_getval
CRS-4000: Command Start failed, or completed with errors.

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还算不复杂,下面简单分享

,