Oracle 11g开发项目时,使用XML

Table出现了BUG,现总结如下:问题其实很简单,就是我们在项目中使用了很多超级长的SQL语句,之后导致SQL执行效率低下,并且貌似导致了Oracle的SQL编译空间溢出了。

出问题的SQL:

以下是代码片段:

SELECT N1,N2

FROM A1

WHERE

(N1='1' AND N2='a1') OR

(N1='2' AND N2='a2') OR

(N1='3' AND N2='a3') OR

(N1='4' AND N2='a4') OR

....

BUG解析

当然了真实的SQL文是不可能这么简单的,比这个要复杂的多。不过出问题的部分基本就是这样了,其实原来没用AND/OR这种结构,用的是IN,但IN语句的参数不能超过2000个。所以就改成这个结构了,这个结构传东西到是没有限制了,但是会导致SQL文变长,而且由于数据的长度不定。这些1和a1是前面产生的结果,所以不一定有多少组。所以都是直接拼在SQL里了。问题很明显,后果很严重。

BUG解决

因为系统已经开发很长时间了,不能进行太大的改动。老系统就这样,改的越多,错的越多,狂改代码基本属于自虐行为。所以我们引入了XMLTable来解决这个问题,这还是一个DBA给的建议呢。

以下是代码片段:

SELECT N1,N2

FROM A1

WHERE (N1,N2) IN (

SELECT X1,X2 FROM

XMLTable('for $i in /T/REC return $i' PASSING

XMLType(#str:CLOB#)

COLUMNS X1 INTEGER PATH 'X1',

X2 CHAR(2) PATH 'X2')

因为使用iBatis的缘故,所以我使用了一个叫str的参数,并且声明为CLOB类型的,但str里放什么呢?

以下是代码片段:

1a1

2a2

....

这个很明白了吧,就是把需要的数据通过XML的形式变成一个表,之后再和主表进行子查询进行关联。这样做的好处就是把SQL文的长度变换为参数的长度了,虽然参数变长了,但SQL文本身变短了。

QQ 744437114

oracle 11g 监听bug,oracle 11g数据库使用XML Table的BUG解决相关推荐

  1. oracle+重启+监听,重启oracle数据库监听

    oracle10偶然性卡住登陆 连接数据库异常:登陆数据库后以"conn /as sysdba"方式登陆正常,数据库轻载,无压力:于是检查数据库的监听器,输入"lsntc ...

  2. oracle 动态监听例子,ORACLE动态监听总结

    1 动态监听 本文档介绍ORACLE动态监听服务的配置及原理: 1.1 监听文件 $ORACLE_HOME/network/admin/listener.ora 1.2 动态监听 ORACLE实例在启 ...

  3. oracle 添加监听地址,oracle批改监听地址为localhost

    oracle修改监听地址为localhost 修改listener.ora,在11.1.0\db_1\NETWORK\ADMIN # listener.ora Network Configuratio ...

  4. oracle pdb监听配置,oracle 12c 监听

    ########################################## 查看 每个 service 对应那个 pdb(用 lsnrctl status 只能看到 service 对应的是 ...

  5. oracle停监听服务,ORACLE监听服务启动后又停止了的解决

    ORACLE监听服务启动后又停止了的解决 今天碰到的问题: 首先,连接数据库时报错:"Io 异常: The Network Adapter could not establish the c ...

  6. oracle一般监听配置文件,Oracle监听配置讲解

    本文作者:贺圣军,叩丁狼高级讲师.原创文章,转载请注明出处. 很多使用Oracle的朋友遇到最多的问题就是Oracle数据库已经安装完成, 但是在使用Oracle客户端pl/sql等工具却怎么都连接不 ...

  7. oracle重启监听12541,oracle数据 报 “ora-12541:TNS:无监听程序”错误

    PLsql登录oracle数据 报 "ora-12541:TNS:无监听程序"错误,但不输入"数据库"在默认情况下可以登录.并且D:oracleproduct1 ...

  8. oracle一般监听配置文件,oracle监听配置文件详解

    tnsnames.ora 监听配置文件详解 监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务 ...

  9. oracle 12514监听程序,oracle监听问题 ORA-12514

    连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决. 我的oracle 10g启动成功.LISTENER启动成功,可是 ...

  10. Linux7/Redhat7/Centos7 安装Oracle 12C_监听配置及DBCA安装数据库_05

    文章目录 一.监听配置 二.创建数据库 一.监听配置 # 切换到oracle用户 su - oracle# 启动监听图形化页面 netca 二.创建数据库 dbca

最新文章

  1. 3 用python进行OpenCV实战之画图(直线,矩形,圆形)
  2. HarmonyOS 实现跑马灯效果
  3. 程序人生系列谈:《程序员》带给我的启发故事
  4. re模块与正则表达式
  5. vue tag=“li“ 和event原有样式渲染不出来
  6. python 将图片转换成像素画_Canvas 实现位图转像素画
  7. chrome源代码目录结构简介
  8. 数据分析与挖掘实战-基于基站定位数据的商圈分析
  9. 【华为云技术分享】小白学YOLO:一文带你学YOLOv1 Testing
  10. 简述关系型数据库和非关系型数据库
  11. 【Linux】Linux进阶指令
  12. java map sort_Map 按值排序 (Map sort by value) – Java | 学步园
  13. win7卡在正在启动windows界面_电脑在“windows正在启动” 画面停留的时间长如何办...
  14. 给文字添加超链接,没有你想的那么难
  15. Figma常用快捷键(Mac版)
  16. 我们真的需要智能路由器?
  17. mac 不显示 外接屏幕_mac连接投影仪不显示怎么办-mac外接显示器设置教程 - 河东软件园...
  18. 安装lux:推荐一款网页视频下载工具。并简单使用。(win)
  19. LeetCode 2312. 卖木头块
  20. 本人精心收集的近80个国内最好的嵌入式技术相关网站和论坛和博客

热门文章

  1. 德国Java工程师_1886年,德国工程师。
  2. python标点符号全是英文吗_python 过滤中文、英文标点特殊符号
  3. linux怎样判断线程是否暂停_怎样寻找合适的创业项目?如何判断一个创业项目是否靠谱?...
  4. Git:拉取远程分支
  5. java-Aspose.Words的使用(Office文档转为PDF)
  6. js 关闭子页面刷新父页面
  7. 基于相位一致性的边缘检测
  8. Ubuntu18.04下安装配置darknet
  9. SPPNet算法解析
  10. 使用docker私有化部署nuget server-proget