私は、securefileバイナリxmlとして保存されたxmltypeが最大4GBのファイルサイズを処理できることを理解します。大きなxmlドキュメントの処理
4GB xml以上のファイルを処理する良い方法があれば知っていますか?
私は、securefileバイナリxmlとして保存されたxmltypeが最大4GBのファイルサイズを処理できることを理解します。大きなxmlドキュメントの処理
4GB xml以上のファイルを処理する良い方法があれば知っていますか?
Oracleデータベースには、XMLType
という大きなXMLファイルを格納しないでください。
OracleのXML機能のほとんどは、Document Object Model (DOM)をベースにしています。これは膨大な量のオーバーヘッドデータを含むXML文書全体をメモリにロードする必要があります。大きなマシンであっても、これはしばしばメモリリークや同様の問題を引き起こします。
このようなXMLをデータベースに入れるには、外部のストリームベースのサーバーを考慮する必要があります。イベントベースのXMLパーサー。SAX (Simple API for XML)とよく呼ばれます。ほぼすべてのプログラミング言語でSAXパーサを利用できます。 XMLの内容は通常のリレーショナルデータとして保存されます。このような大きなXMLをOracleデータベースから作成するには、「行単位」でCLOB
に入力します。
手続き処理のこのタイプは、Oracle XDK JavaやC成分中のSAXインタフェースを介して利用可能です。
通常、SAXパーサーを使用するときは、変更やクエリの要素を提供しないため、より多くのコードを記述する必要があります。その間、DOMベースのパーサのように強力なストリームベースのパーサ(例えば、Perl XML::Twig)が利用可能である。
XMLを解析するとOracleデータベースで特にメモリリークが発生するというご意見はありますか? – MT0
このファイルが見つかりました:[PL/SQL API for XMLType](https://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb10pls.htm#ADXDB1100):* Oracle Database 11gリリース1より前(11.1)では、Oracle XML DBによって処理される各テキスト・ノードまたは属性値のサイズは64KBに制限されていました。リリース11.1以降、この制限は適用されなくなりました。*アプリケーションを開発したのはかなり前ですが、その時点でこの制限が適用されていると仮定します。標準のDOMベースのパーサーが動作していないことを確認してください。 –
そして、この1つ:[XML Parsing for Java](https://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm#ADXDK19112)*プログラムが大きなXML文書を解析し、 DOMツリーを使用すると、パフォーマンスに影響する可能性があります。*古いリリースの場合:[よくある質問(FAQ):PL/SQL用XMLパーサー](https://docs.oracle.com/cd/A91773_01/ids902dl/web) 902/a88894/adx28ppl.htm#1004621):* 50MbのXMLファイルを解析するためにDOMParserを使用するべきではありません。あなたは、ノードのメモリ内ツリーを作成しないので、任意のサイズのファイルを解析するSAXParserを見る必要があります。 –
私はxmlに慣れていませんが、ループスルー、clobsize内のノードのチャンクを取り出し、それをチャンクに格納していると考えています。しかし、これらのファイルが潜在的に大きくなる可能性があると見ると、これには長い時間がかかります。 – Moptan