0

かなり大きなテーブルを誤って落としてしまいました -- ごみ箱が有効になっていません。データが UNDO テーブルスペースにまだ存在していることは確かですが、それを取り出す方法がわかりません。ドロップされる前とまったく同じようにテーブルを再作成しました。構造はまったく同じです。ただし、テーブルをフラッシュバックしようとすると、次のエラーが発生します。

flashback table tablex to timestamp (systimestamp - interval '120' minute);
Error: 01466
DBD::Oracle::db do failed: ORA-01466: unable to read data - table definition has changed

このエラーを克服する方法はありますか? 私が行ったすべての検索から、テーブルがドロップされたときと構造的に同じではないと信じているようです。

4

1 に答える 1

2

自分でテーブルを再作成するべきではないと思います.フラッシュバックするとOracleによって再作成されます.次の記事をお勧めします: http://www.oracle-base.com/articles/10g/flashback-10g. php#flashback_table

例:

CREATE TABLE flashback_table_test (
  id NUMBER CONSTRAINT pk_flashback_table_test PRIMARY KEY
);

DROP TABLE flashback_table_test;
FLASHBACK TABLE flashback_table_test TO BEFORE DROP;

テーブルを手動で再作成するときは、番号の前に SCN 番号を使用してフラッシュバックする必要があると思います。

于 2013-10-01T20:52:19.557 に答える