CSV出力とCPU処理分散について
環境:Oracle9i 9.2.0
言語:VisualBasic6.0
バッチ処理(VB)で各テーブルをCSVに出力していますが、あるテーブルがメモリオーバーによりエラーになりました。
原因はVB内で持てる最大の容量2GBを超えてしまった為です。
(VBでは1つのテーブルを全件取得してCSV出力していますが、1つのテーブルを全件取得したときに2G超になってしまったようです)
対応策としてVBではなく、SQLPlusでCSV出力対応することにしたのですが、処理速度が遅いと言われてしまいました。
上記原因はサーバの構成が「CPUを2つ、各CPU内のセグメントが2つずつ存在する為、理論上4つのCPUに分散されている」ことになっているようで、VBでは処理が各CPUに分散されているのですが、SQLPlusで実行したバッチでは処理が1つのCPUで実行されている為、遅いみたいです。
なぜVBでは処理が分散されているのにSQLPlusでは処理が分散されていないのでしょうか?
OSの問題のような気もしますがなにぶん知識が浅い為、原因がつかめない状況です。
SQLPlusでも処理が分散されれば一番よいのですが、現状では対象テーブルを分割(年月など)して対応するしかなさそうです。
どなたかアドバイスお願い致します。
お礼
https://updates.oracle.com/Orion/Services/download?type=readme&aru=10911097 のパッチを当たると、問題は解決しました。どうも貴重なご意見ありがとうございました。
補足
ご回答ありがとうございます。 色々調査したところ、64bit Windows2003上でsqlを流すとCPU使用率が100%になり、完了に数時間掛かりますが、32bitですと同じsqlが30分で完了します。但しset linzesizeを小さい値にすると100%にならず、32bitと同じ時間内で完了するようになります。このような現象になるのは、64bit版windows or Oracleに何か問題があるのでしょうか?