ボス級社内SE 資格取得頑張る

ボス級社内SEの立場を確固たるものにするために資格を取得していく

Oracle 12c Silver (1Z0-062)対策1 「フラッシュバックテクノロジ」

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

この記事は以下参考書(通称黒本)をもとに情報を肉付けして作成しています。

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆



Oracle 12c Silver (12c: Installation and Administration 1Z0-062)対策 としてフラッシュバックテクノロジについてまとめました。

 

参照系

 

1. フラッシュバック問合せ

   ・SELECT文でAS OF句を使用してある時点の指定テーブルを参照できる

   ・UNDOデータ使用

   ・SQL

 

SELECT * FROM employees AS OF TIMESTAMP 
 TO_TIMESTAMP('2017-06-01 12:00:00', 'YYYY-MM-DD HH:MI:SS')

 

2. フラッシュバックバージョン問合せ

   ・ある時点からある時点までの変更された行の履歴を参照できる

   ・UNDOデータ使用

   ・SQL

 

SELECT employee_id, versions_startscn, versions_operation FROM employees 
 VERSIONS BETWEEN scn MINVALUE AND MAXVALUE WHERE employee_id = 2

 

3. フラッシュバックトランザクション問合せ

   ・トランザクションを元に戻すためのSQLが参照できる

   ・UNDOデータ使用

   ・SQL

    フラッシュバックバージョン問合せより該当SCNのXIDを求める

    そのXIDを使用してフラッシュバックトランザクション問合せを行う

 

SELECT OPERATION, UNDO_SQL
FROM flashback_transaction_query
WHERE XID IN 
(SELECT employee_id, versions_startscn, versions_operation FROM employees 
 VERSIONS BETWEEN scn MINVALUE AND MAXVALUE WHERE employee_id = 2)
AND OPERATION IN ('INSERT','UPDATE','DELETE')

 

 

 

1. フラッシュバックテーブル

   ・テーブルデータをある時点まで戻すことが可能

   ・UNDOデータ使用

   ・対象テーブルの行移動を有効にする必要がある

 

ALTER TABLE scott.emploees ENABLE ROW MOVEMENT

 

2. フラッシュバックトランザクションバックアウト

   ・特定トランザクションおよび依存トランザクションロールバック

   ・REDOデータ使用

3. フラッシュバックドロップ

   ・ゴミ箱使用

   ・削除した表を元に戻す

 

'削除したテーブルのオブジェクト名を調べる
SELECT owner, object_name, ts_name, droptime FROM dba_recyclebin WHERE original_name = employees

'複数見つかった場合、オブジェクト名を指定して戻す
FLASHBACK TABLE scott."object_name" TO BEFORE DROP

 

4. フラッシュバックデータベース

   ・フラッシュバックログ(高速リカバリ領域に保存されている)を使用してデータベース全体を特定の時点を戻す

   ・アーカイブログモードにする必要がある(マウント状態で変更する)

 

'変更
ALTER DATABASE ARCHIVELOG
'確認
SELECT LOG_MODE FROM V$DATABASE

 

   ・フラッシュバックロギングをONにする

 

'変更
ALTER DATABASE FLASHBACK ON
'確認
SELECT FLASHBACK_ON FROM V$DATABASE

 

   ・フラッシュバックログ(高速リカバリ領域に保存されている)使用する

 

'確認
SELECT * FROM V$FLASHBACK_DATABASE_LOG
SELECT * FROM V$FLASHBACK_DATABASE_LOGFILE

 

   ・フラッシュバック実行(データベースをマウント状態にしてから行う)

 

'指定SCNまで戻す場合
FLASHBACK DATABASE TO SCN SCN番号
'30分前に戻す場合
FLASHBACK DATABASE TO TIMESTAMP(SYSDATE - 30/(24*60) )
'5時間前に戻す場合
FLASHBACK DATABASE TO TIMESTAMP(SYSDATE - 5/24 )
'1日戻す場合
FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1

 

   ・フラッシュバック確定

 

ALTER DATABASE OPEN RESETLOGS

 

 

SCNの求め方

 

フラッシュバックテクノロジで使用されるSCNの確認方法をまとめてみた。

SCNはシステム変更番号と呼ばれる。

1. 現時点のSCNを求める

 

SELECT current_scn FROM V$DATABASE

 

2. 指定テーブルの最後に操作したSCNを表示する

 

SCN

SELECT ORA_ROWSCN FROM employees
WHERE employee_id = 1001

 

 

上記SCNからタイムスタンプ取得

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
WHERE employee_id = 1001

 



以上、フラッシュバックテクノロジ回りの技術をピックアップしてみました。



【もしOracle 12c Silver (12c: Installation and Administration 1Z0-062)受検するならば】

公式から受検申し込みするより楽天で購入したほうが安くなりお得です!↓