oracle 11g 监听bug,oracle 11g数据库使用XML Table的BUG解决
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解决相关推荐
- oracle+重启+监听,重启oracle数据库监听
oracle10偶然性卡住登陆 连接数据库异常:登陆数据库后以"conn /as sysdba"方式登陆正常,数据库轻载,无压力:于是检查数据库的监听器,输入"lsntc ...
- oracle 动态监听例子,ORACLE动态监听总结
1 动态监听 本文档介绍ORACLE动态监听服务的配置及原理: 1.1 监听文件 $ORACLE_HOME/network/admin/listener.ora 1.2 动态监听 ORACLE实例在启 ...
- oracle 添加监听地址,oracle批改监听地址为localhost
oracle修改监听地址为localhost 修改listener.ora,在11.1.0\db_1\NETWORK\ADMIN # listener.ora Network Configuratio ...
- oracle pdb监听配置,oracle 12c 监听
########################################## 查看 每个 service 对应那个 pdb(用 lsnrctl status 只能看到 service 对应的是 ...
- oracle停监听服务,ORACLE监听服务启动后又停止了的解决
ORACLE监听服务启动后又停止了的解决 今天碰到的问题: 首先,连接数据库时报错:"Io 异常: The Network Adapter could not establish the c ...
- oracle一般监听配置文件,Oracle监听配置讲解
本文作者:贺圣军,叩丁狼高级讲师.原创文章,转载请注明出处. 很多使用Oracle的朋友遇到最多的问题就是Oracle数据库已经安装完成, 但是在使用Oracle客户端pl/sql等工具却怎么都连接不 ...
- oracle重启监听12541,oracle数据 报 “ora-12541:TNS:无监听程序”错误
PLsql登录oracle数据 报 "ora-12541:TNS:无监听程序"错误,但不输入"数据库"在默认情况下可以登录.并且D:oracleproduct1 ...
- oracle一般监听配置文件,oracle监听配置文件详解
tnsnames.ora 监听配置文件详解 监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务 ...
- oracle 12514监听程序,oracle监听问题 ORA-12514
连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决. 我的oracle 10g启动成功.LISTENER启动成功,可是 ...
- Linux7/Redhat7/Centos7 安装Oracle 12C_监听配置及DBCA安装数据库_05
文章目录 一.监听配置 二.创建数据库 一.监听配置 # 切换到oracle用户 su - oracle# 启动监听图形化页面 netca 二.创建数据库 dbca
最新文章
- 3 用python进行OpenCV实战之画图(直线,矩形,圆形)
- HarmonyOS 实现跑马灯效果
- 程序人生系列谈:《程序员》带给我的启发故事
- re模块与正则表达式
- vue tag=“li“ 和event原有样式渲染不出来
- python 将图片转换成像素画_Canvas 实现位图转像素画
- chrome源代码目录结构简介
- 数据分析与挖掘实战-基于基站定位数据的商圈分析
- 【华为云技术分享】小白学YOLO:一文带你学YOLOv1 Testing
- 简述关系型数据库和非关系型数据库
- 【Linux】Linux进阶指令
- java map sort_Map 按值排序 (Map sort by value) – Java | 学步园
- win7卡在正在启动windows界面_电脑在“windows正在启动” 画面停留的时间长如何办...
- 给文字添加超链接,没有你想的那么难
- Figma常用快捷键(Mac版)
- 我们真的需要智能路由器?
- mac 不显示 外接屏幕_mac连接投影仪不显示怎么办-mac外接显示器设置教程 - 河东软件园...
- 安装lux:推荐一款网页视频下载工具。并简单使用。(win)
- LeetCode 2312. 卖木头块
- 本人精心收集的近80个国内最好的嵌入式技术相关网站和论坛和博客
热门文章
- 德国Java工程师_1886年,德国工程师。
- python标点符号全是英文吗_python 过滤中文、英文标点特殊符号
- linux怎样判断线程是否暂停_怎样寻找合适的创业项目?如何判断一个创业项目是否靠谱?...
- Git:拉取远程分支
- java-Aspose.Words的使用(Office文档转为PDF)
- js 关闭子页面刷新父页面
- 基于相位一致性的边缘检测
- Ubuntu18.04下安装配置darknet
- SPPNet算法解析
- 使用docker私有化部署nuget server-proget