2012-08-03 107 views
1

嗨,我現在正在使用Oracle 11.2 XE,並嘗試在處理大型XML文件時進行一些性能測試。到目前爲止,我沒有走得太遠,希望你能幫助我一點點。Oracle XMLDB處理大文件

我的目標是從一個XML格式轉換效率大的XML文檔到另一個數據庫裏面,所以我設置針對XMLType二元我的希望和因爲Oracle說,他們鴕鳥政策需要XMLTYPE對象應當性能優化的關係數據類型在大多數情況下DOM解析評估XPath表達式。

問題1我無法獲得爲OR XMLTYPE註冊的複雜模式。在註冊一小時後,它會在內存分配大約1.3 GB時發生內存不足錯誤而中斷。模式已經在3個文件中被分解了,觸發mem錯誤的文件只有80kb大。我該如何處理?通過包含更多連接的模式文件進一步細分?

問題2是我不能讓XMLTransform工作。 I'm使用

Insert into OUTPUT_BINARY SELECT a.filename, XMLtransform(a.xml, b.stylesheet) 
FROM XMLTYPE_BINARY a, stylesheets b 
    WHERE (a.filename = 'test.xml' and b.filename = 'stylesheet.xsl'); 

凡表XMLTYPE_BINARY和OUTPUT_BINARY是

create table XMLTYPE_BINARY (filename varchar2(50), xml XMLTYPE) 
XMLTYPE Column xml store as BINARY XML 

即使它永遠改造(我在30分鐘終止不知道它是否會曾經結束了)當一個100KB的文件嘗試5MB文件,它給我一個ORA-24331:用戶緩衝區太小。有人請給我一個暗示我在這裏失蹤的東西嗎?

+0

問題太愚蠢或沒有人的想法? – chris 2012-08-06 08:13:41

回答

0

我認爲這可能是XE版本的限制,但在Oracle 11gR2上它是一樣的。我嘗試了dbms_xslprocessor而不是XMLTYPE的XMLTransform,我通過XMLINDEX索引了二進制XMLTYPE列,但它仍然花費很長時間來處理,超過10分鐘(從未看到過一次結束,總是提前終止)的100 KB文件。

我已經使用Java應用程序將數據庫外部的XDK解析器和處理器轉換爲相同的文檔,並且可以實現良好的效果。那麼爲什麼db中的解析器和變換器工作得很差呢?