2012-08-03 2 views
1

안녕하세요. 저는 Oracle 11.2 XE로 현재 작업 중이며 큰 xml 파일로 작업 할 때 성능 테스트를하려고합니다. 지금까지 나는 아주 멀리하지 않았다. 당신이 나를 조금 도와 줄 수 있기를 바란다.큰 파일로 작업하는 Oracle XMLDB

내 목표는 큰 XML 문서를 하나의 XML 형식에서 다른 데이터베이스 형식으로 효율적으로 변환하는 것이므로 XML 형식 바이너리 및 XMLType 객체 관계형 데이터 형식에 희망을 두었습니다. 오라클은 필요하지 않기 때문에 성능을 최적화해야합니다. 대부분의 경우 XPath 표현을 평가하기위한 DOM 구문 분석.

문제 1 번 OR XMLTYPE에 등록 된 복잡한 스키마를 가져올 수 없습니다. 시간을 등록한 후 약 1.3GB 메모리 할당에서 메모리 부족 오류로 인터럽트됩니다. 스키마는 이미 3 개의 파일로 분류되어 있으며, 메모리 부족 오류를 유발하는 파일은 80kb에 불과합니다. 어떻게해야합니까? 더 많은 연결 스키마 파일을 포함하여 더 많은 분석이 포함됩니까?

문제점 2 번 문제는 XMLTransform을 작동시키지 못합니다. 사용 미안

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 그것이 (내가 이제까지 끝난 것 알고 30 분에서 그나마 종료) 할 때 변환 영원히 소요 100킬로바이트 문서에 대한

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

심지어입니다

5MB의 문서로 시도하면 ORA-24331 : 사용자 버퍼가 너무 작습니다. 누군가 내가 여기서 뭘 놓치고 있는지 힌트를 주시겠습니까?

+0

질문이 너무 어리 석거나 전혀 아이디어가 없습니까? – chris

답변

0

아마도 이것이 XE 버전의 제한 일 수 있다고 생각했지만 Oracle 11gR2에서는 동일합니다. 나는 XMLTYPE의 XMLTransform 대신 dbms_xslprocessor를 시도했다. XMLINDEX를 통해 이진 XMLTYPE Column을 인덱싱했으나 10 분에 걸쳐 100KB의 파일을 처리하는 데 너무 오래 걸렸다. (한 번도 끝내지 못했고, 항상 조기에 종료되었다.)

이미 자바 응용 프로그램을 사용하여 데이터베이스 외부의 XDK 파서 및 프로세서로 동일한 문서를 변환하여 좋은 결과를 얻을 수있었습니다. 그렇다면 왜 DB 내부의 파서와 변압기가 제대로 작동하지 않습니까?

관련 문제