私は、Oracle 10g DB にリンクされたテーブルを備えた Access 2007 DB フロントエンドを使用するこのフランケンシュタイン アプリケーションを職場で継承しました。
多くのクエリがエラー 3183 で失敗し、一時領域が不足しているとの報告がユーザーから寄せられています。これらの同じクエリは、数週間前に正常に実行されました。
Access が 2 GB の一時ファイルを作成していることを確認しました。これは、システムの一時ディレクトリで許可されている最大容量です。
データを返さないパラメーターを使用してクエリを実行しても、エラーが発生します。SQL トレースを実行すると、一部のクエリが約 1,400 万行を返すクエリセットを実行しようとしていることがわかります。一部のクエリの設計が不十分であることは知っていますが、それを変更するのは簡単なことではありません。
Oracle DBA に一時スペースを 2 倍にしてもらいましたが、それでも問題は解決しませんでした。
私の質問は、Access DB が最初にリンクされた ODBC データベースで利用可能な一時スペースを使用し、次に Oracle 一時テーブルスペースが利用できない場合に一時ファイルを使用することだと思いますか? なぜこれが起こり始めたのか、それとも単に Oracle データベースのデータ量が Access の能力を超えたのか、何か考えはありますか? アプリケーションの作成方法は、数週間ほど前まで機能していました。
このアプリの再設計は簡単なオプションではないことを理解してください。なぜこれが以前に機能し、最近発生し始めたのかについてのアイデアをもっと探しています。
これは Access の RAW SQL です。これは私が書いたものではないことを理解してください。少なくとも、Oracle テーブルにはスペースとアンパサンドがありませんでした。:)
SELECT DISTINCT [Event: Overhaul & Repair].BASE_PART_NUMBER,
[Event: Overhaul & Repair].PERIOD,
[Event: Overhaul & Repair].RECEIVED_BY_FACILITY_DATE,
[Event: Overhaul & Repair].PART_NUMBER,
[Event: Overhaul & Repair].CONFIGURATION_RECEIVED,
[Event: Overhaul & Repair].PART_SERIAL_NBR,
[Findings: Feature Findings Detail].SUBASSEMBLY_NAME,
[Findings: Feature Findings Detail].COMPONENT_NAME,
[Findings: Feature Findings Detail].FEATURE_NAME,
[Findings: Feature Findings Detail].FAILURE_DESCRIPTION,
[Findings: Feature Findings Detail].PRIMARY_FAILURE_IND,
[Event: Overhaul & Repair].REMOVAL_JUSTIFIED_FLAG_ON_OR,
[Event: Overhaul & Repair].CUSTOMER_NAME_SUBMITTING,
[Findings: Feature Findings Detail].AIRCRAFT_TYPE,
[Event: Overhaul & Repair].AIRCRAFT_REG_NUMBER,
[Event: Overhaul & Repair Text].NOTE_TEXT,
[Event: Overhaul & Repair].TIME_SINCE_NEW_ON_OR,
[Event: Overhaul & Repair].TIME_SINCE_INSTALL,
[Event: Overhaul & Repair].TIME_SINCE_OVERHAUL_ON_OR,
[Event: Overhaul & Repair].FACILITY_NAME,
[Event: Overhaul & Repair].EVENT_SEQNO
FROM ([Event: Overhaul & REPAIR]
LEFT JOIN [Event: Overhaul & REPAIR Text]
ON [Event: Overhaul & REPAIR].EVENT_SEQNO=[Event: Overhaul & REPAIR Text].EVENT_SEQNO)
LEFT JOIN [Findings: Feature Findings Detail]
ON [Event: Overhaul & REPAIR].EVENT_SEQNO=[Findings: Feature Findings Detail].EVENT_SEQUENCE_NUMBER
WHERE ((([Event: Overhaul & Repair].BASE_PART_NUMBER)=[PART NUMBER])
AND (([Event: Overhaul & Repair].PERIOD) BETWEEN [START DATE YYYYMM] AND [END DATE YYYYMM])
AND (([Findings: Feature Findings Detail].PRIMARY_FAILURE_IND)="PF"
OR ([Findings: Feature Findings Detail].PRIMARY_FAILURE_IND) IS NULL)
AND (([Event: Overhaul & Repair Text].NOTE_TEXT)="R"));