平台:
Oracle Communications Billing and Revenue Management – 版本: 7.3.0.0.1及以上
本文档中的信息使用于任何操作系统
故障现象:
PCM_OP_SUBSCRIPTION_SET_DISCOUNT_STATUS opcode被包装到一个顾客的opcode中,当顾客的opcode被调用的时,PCM_OP_SUBSCRIPTION_SET_DISCOUNT_STATUS也被调用将状态从1改为2,调用后,使用一个READ_OBJ来检查结果,状态仍是1.
重现的步骤:
r 0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1
0 PIN_FLD_AAC_ACCESS STR [0] "CACHEABLE_WRITE"
XXX
r 0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1
0 PIN_FLD_AAC_ACCESS STR [0] "NON_CACHEABLE_WRITE"
XXX
r 0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1
0 PIN_FLD_AAC_ACCESS STR [0] NULL
XXX
# Open transaction
open rw 1
# Cacheable write
xop PCM_OP_WRITE_FLDS 0x0400 1
# Non-Cacheable write
xop PCM_OP_WRITE_FLDS 0 2
# Read it back
xop PCM_OP_READ_FLDS 0 3
commit
# Read it back again
xop PCM_OP_READ_FLDS 0 3
Which gives the following output:
xop: opcode 5, flags 1024
# number of field entries allocated 20, used 1
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1 0
xop: opcode 5, flags 0
# number of field entries allocated 20, used 1
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1 0
xop: opcode 4, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1 0
0 PIN_FLD_AAC_ACCESS STR [0] "NON_CACHEABLE_WRITE"
xop: opcode 4, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1 13
0 PIN_FLD_AAC_ACCESS STR [0] "CACHEABLE_WRITE"
你会发现在提交之前NON_CACHEABLE_WRITE数据是正确的(它直接被写到数据库了),当事务提交的时候,缓存中的版本数据被清除最终以不正确的数据结束。
原因:
在非官方发布的9883220号补丁中报告的问题造成的
1. 对于HP-UX Itanium操作系统,请采取以下步骤
下载10038794补丁包,参考readme文档,并做必要的预处理
2. 在安装这个补丁包之前请确保你已经备份了系统。
3. 在测试环境中安装补丁包。
4. 重新测试论题
5. 更改这个方案,使它适用于别的操作系统。