工作随记:oracle 19c客户端通过service访问PDB异常问题

概要

应用端访问提示错误信息为:VersionHelper异常!未将对象引用设置到对象的实例!
在这里插入图片描述
此问题原因有以下三种情况:

(1)未初始化对象:在使用对象之前,没有对其进行初始化或者分配内存。

(2)对象已经被释放:在使用对象之前,对象已经被释放或者销毁。

(3)对象被赋予了null值:在使用对象之前,将对象赋值为null,导致无法访问对象。

因应用登录正常,那也就说明已连接数据库,很有可能是对象被赋予了null值,经过应用测试排查发现是在访问long字段中数据(sql语句)获取不到导致的。

技术测试分析

测试1:

获取不到long字段中的值,那么通过将long类型转换为clob类型获取则没问题,那么这里我就开始怀疑兼容性问题了,因为oracle客户端配置为了19c的客户端。

测试2:

在服务端不做变更情况下使用11g客户端访问long字段没问题,那么很明显是客户端产生的影响。

测试3:

数据库服务器修改隐含参数_rowsets_enabled,进行排除法,实际我在alert中未发现600的报错,所以此问题可能性较小,实际测试与猜想一致,修改无效。
alter system set “_rowsets_enabled”=FALSE scope=both sid=‘*’;
在这里插入图片描述

测试4:

因为数据库是19c多租户模式,添加了一条service指向了pdb,让应用测试将实例名换成pdb的实际名称测试居然通过了!
现在就可以说真相浮出水面了:

#之前的配置信息
#加了和高可用相关的,追求现业务连续性时使用参数
srvctl add service -db db19c -pdb pdb1 -service cxldb -preferred db19c1,db19c2 -notification TRUE -commit_outcome TRUE -retention 86400 -drain_timeout 300 -stopoption IMMEDIATE -replay_init_time 600 -failover_restore AUTO -failovertype AUTO

srvctl start service -db db19c -service cxldb 

解决方案:

1、修改service

#删除原先配置
srvctl stop service -db db19c -service cxldb 
srvctl remove service -db db19c -service cxldb 
#新增service配置
srvctl add service -db db19c -pdb pdbl -service cxldb -preferred db19c1,db19c2
#启动service
srvctl start service -db db19c -service cxldb 

在这里插入图片描述
应用测试成功!

2、修改pdb名称

在这里插入图片描述
操作步骤:
1、需要关闭其他节点
2、在一个节点启用受限模式在cdb下修改
3、然后关闭,重启以后其他节点也生效了

总结

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. <span style='color:red;'>C</span>++<span style='color:red;'>随</span><span style='color:red;'>记</span>

    C++

    2023-12-14 04:44:02      49 阅读
  2. SVN客户异常问题处理

    2023-12-14 04:44:02       33 阅读
  3. 工作oracle重建一张1T数据量的大表

    2023-12-14 04:44:02       47 阅读
  4. Oracle 19c RAC 心跳异常处理

    2023-12-14 04:44:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 04:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 04:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 04:44:02       87 阅读
  4. Python语言-面向对象

    2023-12-14 04:44:02       96 阅读

热门阅读

  1. SSH连接服务器后执行多条命令

    2023-12-14 04:44:02       48 阅读
  2. Docker的基本概念

    2023-12-14 04:44:02       52 阅读
  3. 分布工具类的定义与实现及测试。

    2023-12-14 04:44:02       61 阅读
  4. mysql的CHAR和VARCHAR类型

    2023-12-14 04:44:02       72 阅读
  5. 二分法中mid的处理以及STL二分函数

    2023-12-14 04:44:02       51 阅读
  6. 使用c++版本的itk计算二值三维图像的表面

    2023-12-14 04:44:02       63 阅读
  7. 光伏发电技术的应用领域有哪些?

    2023-12-14 04:44:02       63 阅读
  8. 【js或momentJs获取当前月的起止日期】

    2023-12-14 04:44:02       64 阅读