问题现象
尝试执行弱读查询,但失败,报错如下。
obclient [SYS]> Select /*+ READ_CONSISTENCY(WEAK)*/ count(*) records,
sum(to_number(substr(dbms_crypto.hash(utl_raw.cast_to_raw('Hash'
||"SUBSID"
||"ORDERLINEID"
||"REGION"
||"OLDPRODID"
||"NEWPRODID"
||"STARTTIME"
||"RECDATE"
||"STATUS"
||"STATUSDATE"
||"ORDERID"
||"NOTES"
),2),24,8),'xxxxxxxx')) HASH_VAL
From NGCRM_XX.CS_REC_PRODCONVERT_WAITING;
ORA-00600: internal error code, arguments: -4007, cluster weak read service is disabled, weak read not supported
问题原因
排查弱读相关参数:
max_stale_time_for_weak_consistency: 用于设置弱一致性读允许读到多旧的数据。weak_read_version_refresh_interval: 设置弱一致性读版本号的刷新周期。
注意
当 weak_read_version_refresh_interval 值为 0 时,OceanBase 数据库不再刷新弱一致性读版本号,不论当前弱读版本号是否满足 max_stale_time_for_weak_consistency,均无法提供弱读服务。
适用版本
OceanBase 数据库 V2.x,V3.x 版本。
解决方法
将参数 weak_read_version_refresh_interval 恢复为默认值即可。
obclient > ALTER SYSTEM SET weak_read_version_refresh_interval = 50ms;