アプリケーショントランザクション中にエラーが発生したときにテーブルの内容をダンプするPL/SQLプロシージャを開発しました。 dumpは、トランザクションのROLLBACKの前にテーブルの内容と一致する必要があります。"CREAT TABLE"を実行せずにOracle外部テーブル "ダンプファイル"を取得する方法
テーブル(TYPE ORACLE_DATAPUMP)のダンプ形式として外部表を使用することを考えました。 Oracleのドキュメントを通過した後、私はそれに唯一の方法は、実行していることがわかった。
CREATE TABLE tabtest_test (
F1 NUMBER,
F2 CHAR(10))
ORGANIZATION EXTERNAL (
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY USER_DUMP_DEST
LOCATION ('tabtest.dmp’));
問題は、「CREATE TABLE」を実行することで、Oracleは暗黙的にする必要が私たちの失敗したトランザクション内でコミットを実行していることですテーブルのダンプの後にロールバックされます。
私は "CREATE TABLE"を実行するのに "PRAGMA AUTONOMOUS_TRANSACTION;"を使用することを考えましたが、アプリケーショントランザクションの外でテーブルの内容をダンプするので、私たちの必要性に実際には合いません。
私の質問:「作成テーブル」を実行せずに 'tabtest.dmp'を取得する方法はありますか?たとえば、これを担当するOracle APIに直接アクセスすることによって実現できます。
よろしくお願いいたします。
テーブルを1回作成するだけで済みます。コンテンツをダンプするたびにこれを行う必要はありません。 –
@a_horse_with_no_name:いいえ、毎回テーブルを作成するために必要なdmpファイルを取得します。 – SamiBOB
エラーが発生するたびに内容全体をダンプする必要がありますか?あなたの要件を見直すか、そうでなければ経営陣を説得したいかもしれません。 – tbone