2016-04-22 16 views
0

1/FLASHBACKSELECT AS OF/ VERSION BETWEENは同じソースのフォールバック履歴にありますか?この質問は2番目の質問に関連しています。カラム前のバージョンを選択してください。

2 /私はFLASHBACKがDDL変更の前に戻ることができないことを認識しています。

私の質問はSELECT AS OFです。DDLを変更する前に何かを選択することができますか? う選択復帰2列または1例えば

CREATE TABLE T 
(col1 NUMBER, col2 NUMBER) 
INSERT INTO T(col1, col2) VALUES('1', '1') 
INSERT INTO T(col1, col2) VALUES('2', '2') 
COMMIT; 
SLEEP(15) 
ALTER TABLE T DROP COLUMN col2; 
SELECT * FROM T 
AS OF SYSTIMESTAMP - INTERVAL '10' SECOND; 

を取りますか?

私は試験のためにデータベースを持っていません。

答えて

1

テーブルの構造を変更するDDLは、テーブルの既存の元に戻すデータをすべて無効にします。 'ORA-01466'エラーが発生し、データを読み取ることができません。表の定義が変更されました。ここで

は、上記のSELECT文を実行する際に、簡単なテスト

CREATE TABLE T 
(col1 NUMBER, col2 NUMBER); 
INSERT INTO T(col1, col2) VALUES('1', '1'); 
INSERT INTO T(col1, col2) VALUES('2', '2'); 
COMMIT; 
SLEEP(15) 
ALTER TABLE T DROP COLUMN col2; 


SELECT * FROM T 
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' SECOND); 

ERRROR ORA-01466です。

ただし、表の記憶域属性を変更するDDL操作では、UNDOデータを無効化しないため、フラッシュバック問合せを引き続き使用できます。

0

1)FLASHBACK TABLESELECT .. AS OFは、同じソースUNDOを使用します。 FLASHBACK DATABASEもありますが、別のソースを使用するのと同じメカニズムを使用しますが、オプションで構成する必要があるフラッシュバックログもあります。

2)フラッシュバック表とフラッシュバックを使用すると、この機能はまた、Oracleトータルリコールと呼ばれるflashback archive.を有効にした場合バックDDLの変更の前に行くことができ照会し、それには、別途ライセンスが必要です。今、この文が返されます

CREATE FLASHBACK ARCHIVE my_flashback_archive TABLESPACE users RETENTION 10 YEAR; 
... 
ALTER TABLE t FLASHBACK ARCHIVE my_flashback_archive; 

1列:

は、サンプルコードにいくつかのステートメントを追加し、その機能を使用するには

SELECT * FROM T; 

をそして、この文は2列を返します。

SELECT * FROM T AS OF SYSTIMESTAMP - INTERVAL '10' SECOND; 
関連する問題