Oracle 12.1.0.2版本,在图层浏览时遇到了ORA-07445 [QCDLAUCN] 错误。根据MOS的查询结果,得知这是一个bug (Doc ID 1932725.1):
文章中同时给出了解决办法:
当前是一个RAC的生产环境,未经充分论证贸然升级自然不合适,因此第一种解决方案被否定了。
要查询的图层,其所对应的分区表DK,记录数达10亿级,因此create table as 的解决方案短时间内也不合适。
那"query the table by using specified column names instead of using *"可以吗?我们在进行图层浏览时,调用的是ESRI的浏览接口,该接口已经把要执行的SQL定义死了,我们没法儿调整接口中的SQL文本。既然接口内的SQL没法儿调整,那如果我们传入进去的表名(要素类)参数就是已经调整后的SQL呢?如果我们基于DK表创建一个视图,视图的定义使用specified column names,然后把视图注册成图层,最后将视图名称作为参数传入浏览接口,是不是就可以了呢?我们按下面的步骤进行操作:
- Alter table dk rename to dk_bak;
- Create view dk as select column1,column2 .. from dk_bak;
- 因为矢量数据类型使用的是SDO_GEOMETRY,所以还需要执行:
Insert into user_sdo_geom_metadata select 'DK_BAK',t.COLUMN_NAME, t.DIMINFO, t.SRID from user_sdo_geom_metadata where table_name='DK';
应用程序不需要再作任何改动,进行浏览测试,OK,问题解决!