国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Oracle 11g數(shù)據(jù)庫使用XML Table的BUG解決

數(shù)據(jù)庫 Oracle
本文我們主要介紹了在Oracle 11g的環(huán)境下使用XML Table出現(xiàn)了BUG現(xiàn)象,從而造成SQL編譯空間溢出的問題的解決過程,希望能夠?qū)δ兴鶐椭?/div>

Oracle 11g開發(fā)項目時,使用XML Table出現(xiàn)了BUG,現(xiàn)總結(jié)如下:問題其實很簡單,就是我們在項目中使用了很多超級長的SQL語句,之后導(dǎo)致SQL執(zhí)行效率低下,并且貌似導(dǎo)致了Oracle的SQL編譯空間溢出了。

出問題的SQL:

  1. SELECT N1,N2  
  2. FROM A1  
  3. WHERE  
  4.     (N1='1' AND N2='a1') OR  
  5.     (N1='2' AND N2='a2') OR  
  6.     (N1='3' AND N2='a3') OR  
  7.     (N1='4' AND N2='a4') OR  
  8. .... 

 

BUG解析

當(dāng)然了真實的SQL文是不可能這么簡單的,比這個要復(fù)雜的多。不過出問題的部分基本就是這樣了,其實原來沒用AND/OR這種結(jié)構(gòu),用的是IN,但IN語句的參數(shù)不能超過2000個。所以就改成這個結(jié)構(gòu)了,這個結(jié)構(gòu)傳東西到是沒有限制了,但是會導(dǎo)致SQL文變長,而且由于數(shù)據(jù)的長度不定。這些1和a1是前面產(chǎn)生的結(jié)果,所以不一定有多少組。所以都是直接拼在SQL里了。問題很明顯,后果很嚴(yán)重。

BUG解決

因為系統(tǒng)已經(jīng)開發(fā)很長時間了,不能進行太大的改動。老系統(tǒng)就這樣,改的越多,錯的越多,狂改代碼基本屬于自虐行為。所以我們引入了XMLTable來解決這個問題,這還是一個DBA給的建議呢。

  1. SELECT N1,N2  
  2. FROM A1  
  3. WHERE (N1,N2) IN (  
  4.     SELECT X1,X2 FROM  
  5.         XMLTable('for $i in /T/REC return $i' PASSING XMLType(#str:CLOB#)  
  6.         COLUMNS X1 INTEGER PATH 'X1',  
  7.         X2 CHAR(2) PATH 'X2') 

 

因為使用iBatis的緣故,所以我使用了一個叫str的參數(shù),并且聲明為CLOB類型的,但str里放什么呢?

  1. <T> 
  2.     <REC><X1>1</X1><X2>a1</X2></REC> 
  3.     <REC><X1>2</X1><X2>a2</X2></REC> 
  4.     ....  
  5. </T> 

 

這個很明白了吧,就是把需要的數(shù)據(jù)通過XML的形式變成一個表,之后再和主表進行子查詢進行關(guān)聯(lián)。這樣做的好處就是把SQL文的長度變換為參數(shù)的長度了,雖然參數(shù)變長了,但SQL文本身變短了。

總結(jié)

真正做的時候還遇到了一些問題:首先,使用這個SQL的時候必須要在一個事務(wù)里,雖然他只是查詢,但一定要在事務(wù)里否則會出錯。因為咱們程序里使用了CLOB數(shù)據(jù),所以要加載以下的Bean:

  1. <bean id="simpleExtractor"   
  2. class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"> 
  3. </bean> 
  4. <bean id="oracleLobHandler"   
  5. class="org.springframework.jdbc.support.lob.OracleLobHandler"> 
  6.     <property name="nativeJdbcExtractor" ref="simpleExtractor"/> 
  7. </bean> 

 

SQLMap里需要加一個CLOB的TypeHandler,之后在變量里聲明一下#str:CLOB#就可是了。

  1. <typeHandler javaType="java.lang.String" jdbcType="CLOB"    
  2. callback="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/> 

 

但還有一點需要注意,我查了很長時間,因為$在iBatis里是關(guān)鍵字,這個關(guān)鍵字如果需要輸出的話就需要轉(zhuǎn)義,就要使用$代表一個$當(dāng)然#也是同理的。

關(guān)于Oracle 11g數(shù)據(jù)庫出現(xiàn)使用XML Table解決問題的BUG的解決就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server 2008 MDX應(yīng)用之組裝有序集合
  2. SQL Server 2008中的代碼安全之主密鑰詳解
  3. SQL Server 2008 MDX應(yīng)用之檢索集合中的元組
  4. SQL Server 2005/2008中的CTE應(yīng)用之遞歸查詢
  5. 淺析SQL Server數(shù)據(jù)庫SSIS導(dǎo)入IIS日志的簡單步驟
責(zé)任編輯:趙鵬 來源: 博客園
相關(guān)推薦

2009-11-19 17:28:43

Oracle數(shù)據(jù)庫11

2011-06-15 10:10:17

Oracle11g

2011-08-22 14:50:20

2009-05-21 10:20:54

Oracle 11g數(shù)據(jù)衛(wèi)士備用數(shù)據(jù)庫

2011-08-22 14:37:33

2010-05-05 17:06:31

Oracle 11g

2011-08-22 14:19:31

Oracle 11g 示例用戶

2009-08-12 10:54:54

2011-03-25 11:32:46

Oracle數(shù)據(jù)庫11gTPC-H測試

2011-03-31 10:38:49

Oracle數(shù)據(jù)庫

2009-11-20 12:55:08

Oracle 11g功

2009-07-08 00:24:00

數(shù)據(jù)壓縮Oracle 11g

2010-04-07 17:27:38

Oracle 11g

2009-09-15 09:52:25

Oracle 11g分

2011-08-19 09:11:24

Oracle 11g回啟動閃回數(shù)據(jù)庫

2009-04-15 09:49:20

2012-05-07 13:45:45

Oraclen 11g虛擬列數(shù)據(jù)庫

2010-04-01 15:19:56

Oracle 11g壓

2011-04-15 09:11:21

2010-04-13 15:56:03

Oracle 11g
點贊
收藏

51CTO技術(shù)棧公眾號

欧美三级xxx| 国产日韩欧美日韩大片| 亚洲精品少妇久久久久久| 9色国产精品| 国产在线高清精品| 岛国精品一区| 色天天综合狠狠色| 特级毛片在线| 欧美区视频在线观看| 中文字幕在线免费观看| 中文字幕欧美区| 久久久精品三级| 久久久夜色精品亚洲| 久久艹国产精品| 国产精品66部| 国产制服91一区二区三区制服| 裸体素人女欧美日韩| 国产成人av一区二区三区| 欧美三级情趣内衣| 国产精品成人一区二区三区吃奶| 青青操综合网| 欧美一级视频一区二区| 久久久精品国产**网站| 1769国内精品视频在线播放| 日韩高清电影免费| 欧美一区二区三区精品电影| 蜜桃tv一区二区三区| 国产91在线播放精品91| 欧美一区二区三区高清视频| 成人a视频在线观看| 综合av在线| 久久久久欧美| 国精品**一区二区三区在线蜜桃| 麻豆一区二区三区在线观看| 成人性生交大合| 在线免费视频a| 一区二区三区四区激情| 黄色污网站在线免费观看| 欧美日韩国产在线| 丝袜美腿美女被狂躁在线观看| 日韩欧美一区二区免费| 电影一区二区| 91国产中文字幕| 欧美3p视频| 三级三级久久三级久久18| 国产成人午夜99999| 黄色免费网址大全| 欧美日韩国产精品一区二区三区四区| 黄色av免费在线观看| 精品成人一区二区三区四区| 亚洲欧洲专区| 成人国产精品免费视频| 三级欧美韩日大片在线看| 国产无限制自拍| 专区另类欧美日韩| 成人p站proumb入口| 欧美超碰在线| 成人激情直播| 久久精品国产精品亚洲综合| 97在线免费公开视频| 午夜精品福利久久久| av中文在线资源库| 国内精品久久久久| 99精品久久| 国产l精品国产亚洲区久久| 欧美日韩免费观看中文| 性国裸体高清亚洲| 国产91精品青草社区| 亚洲激情亚洲| 18岁网站在线观看| 91高清在线观看| 欧美日韩视频免费看| 成人a免费视频| 国产精品乡下勾搭老头1| 黄色直播在线| 中文字幕欧美国内| 亚洲成av人电影| 久久亚洲a v| 欧美日韩免费区域视频在线观看| 天堂中文在线播放| 91精品一区二区| 91一区二区在线观看| 大片免费播放在线视频| 欧美麻豆久久久久久中文| 国产一区二区三区的电影| 怡红院亚洲色图| 精品亚洲国产成av人片传媒| 国产乱码精品一区二区亚洲 | 欧美性生活久久| www999久久| 欧美日韩亚洲免费| 怡红院av一区二区三区| 日韩av首页| 久久国产日韩欧美| 一片黄亚洲嫩模| jizzyou欧美16| 日本不卡一区| 欧美小视频在线观看| 国产精品自在| 亚洲国产精品无码观看久久| 4438x成人网最大色成网站| 国产成人精品999在线观看| 日本www在线播放| 亚洲精品国产精品国自产在线| 久久精品一区二区不卡| 男捅女免费视频| 久久久精品网站| 免费亚洲电影在线| freemovies性欧美| 91精品久久久久久久久不口人| 久久久久久久网| 91综合国产| 国内精品国产三级国产99| 69精品人人人人| 91日韩欧美| 国外男同性恋在线看| 55夜色66夜色国产精品视频| 久久嫩草精品久久久精品| 香蕉成人av| 二级片在线观看| 亚洲成人激情在线| 久久国产精品毛片| 永久免费av在线| 懂色一区二区三区av片| 亚洲成人av福利| 天天综合一区| 欧美3p视频在线观看| 91亚洲精品一区二区| 欧美日韩亚洲成人| 久久国产亚洲精品| 日韩精品视频无播放器在线看| 国产精品91视频| 一区二区三区在线观看视频| 伊人久久大香线蕉av不卡| 制服丝袜影音先锋| 国产97在线播放| 亚洲午夜久久久久久久久电影网| 特黄特色欧美大片| 天天噜天天色| 国产精品视频午夜| 欧美性xxxx18| 91久久视频| 999福利在线视频| 国产一区二区四区| 久久视频在线视频| 国产精品传媒视频| 国产精品一区二区三区av麻| 亚洲尤物在线视频| 国产伦精品一区二区三区高清 | 中文字幕日韩av| 2021久久国产精品不只是精品| 免费欧美网站| 蜜桃视频中文字幕| 国产精品自拍首页| 精品国产伦一区二区三区观看体验| 精品在线免费视频| 欧美一级做一级爱a做片性| 免费男同深夜夜行网站| 国内精品久久久久久影视8| 午夜国产精品一区| 久久国产毛片| 日韩av超清在线观看| 91精品91久久久中77777老牛| 97在线视频精品| 在线一区二区三区四区| 日一区二区三区| 亚洲精选av| 成人精品一区二区三区免费| 奇米777四色影视在线看| 91精品国产高清久久久久久| 日韩欧美在线字幕| 狠狠色丁香婷综合久久| 国产一区二区在线视频你懂的| 免费黄色在线视频网站| 亚洲三区在线| 午夜精品一区二区三区av| 欧洲色大大久久| 成人免费视频app| 欧美日韩伦理| 国产无遮挡裸体视频在线观看| www日韩视频| 国产精品成人一区二区三区| 尤物精品国产第一福利三区| 日韩毛片一二三区| 视频一区二区国产| 欧美黑人做爰爽爽爽| 男人和女人做事情在线视频网站免费观看 | 欧美亚洲成人免费| 欧美一二三四区在线| 国产女同性恋一区二区| 亚洲福利免费| 久久一级大片| 成人ww免费完整版在线观看| 国产午夜一区二区| 国产精品视频在线看| 亚洲线精品一区二区三区八戒| 国产精品视频xxxx| 欧美第一视频| 欧洲亚洲精品在线| 清纯唯美一区二区三区|