Oracle Database 12c (12.1.0.1.0 64Bit)를 사용하고 있습니다. 얼마 전 필자는 pl/sql에 여러 개의 XML 파일을 가져 오기위한 소프트웨어를 작성했습니다. 이것은 아주 잘 작동하는 것처럼 보였지만 몇 가지 문제가 발생했습니다. 일부 파일의 크기는 5 ~ 25MB이므로 가져 오는 데 1 ~ 2 분이 걸립니다. 그러나 일부 파일의 경우 가져 오기가 끝나지 않고 가져 오기 프로세스를 중지 할 수도 없으므로 서버를 다시 시작해야합니다.xmltable에 삽입 할 때 매달린 프로세스
INSERT INTO SB_BUFFER_XML VALUES (XMLType(bfilename('XMLDATA', '840.xml'), nls_charset_id('AL32UTF8')));
테이블 SB_BUFFER_XML 로컬 directoy에 형 XMLTABLE 및 XMLDATA 점이다 :
나는 다음 행으로 문제를 추적. 명령은 840.xml 파일로 끝나지 않습니다. 그러나 파일 613.xml로 끝납니다. 모두 크기가 비슷의 613.xml이 더 큰 것입니다 :- 840.xml : 6.905 KB
그래서 내가 찾고 두 파일을 비교하기 시작 :
- 두 파일은 BOM 모두 동일한 구조를 포함
- 없이 UTF-8이지만, 다른 데이터 ,
- 는 XML 구문 검사가 완료 성공
- 도 두 파일이 시작
- 두 파일이 동일한 버전에서 동일한 시스템에서 만든 같은 문자 (그래서 프로그래머 숨겨진 BOM 또는 무언가) 마무리 16 진수 편집기에서
그래서 나는 복잡성을 줄이기 위해 840.xml에서 콘텐츠를 삭제하기 시작했으며 삭제 한 내용이 중요하지 않음을 알았습니다. 특정 양의 데이터를 삭제하자마자 주석이더라도이 파일의 임포트는 완벽하게 작동합니다.
이상한 점은 동일한 시스템에서 동일한 구조의 xml 파일을 이미 가져온 파일 크기가 20MB 이상이라는 것입니다.
이 문제가 발생할 수있는 원인이나 다음에 확인할 수있는 것에 대해 알고 있습니까?
이것은 하나의 수수께끼입니다. 파일을 삭제하고 다시 만들려고 했습니까? 파일을 가져올 수있을 때 파일의 크기는 얼마입니까? –
불행히도 소스 시스템에서는 xml 파일의 재생성을 허용하지 않으므로이를 시도 할 수 없습니다. 많은 사람들이 파일 크기의 하한값이 6.480.000 바이트라는 것을 알았습니다. 1 바이트 이상 가져 오기가 작동하지 않습니다. 예를 들어 6.506.276 바이트와 같이 파일을 훨씬 더 크게 만들면 잘 가져옵니다. – Timo
두 파일이 같은 파일 시스템에 있습니까? 오라클이 새 파일 서버의 기본 프로토콜을 지원하지 않아 백업이 실패했다는 것을 알기 위해 오라클 지원을 통해 2 개월이 걸렸습니다.Windows에서 Oracle을 사용하고 UNC에서 로컬로 매핑 된 드라이브로 이동해야했습니다. 구체적인 답을 얻길 바랍니다. 그러나 도움을 줄 수 없다고 생각합니다. –