SYS_FBA_HIST_73068TEST1の履歴表を確認するとSYS_FBA_HIST_73068として作成されています。それではFDA1に対して10万件のレコードを挿入して記憶領域の障害を故意に発生してみましょう。行1でエラーが発生しました。行3□原因確認それでは、障害原因を確認してみたいと思います。ORACLEのマニュアルを確認するとORA-55623はフラッシュバック・アーカイブ表領域の領域が不足が原因で発生しているようです。フラッシュバック・アーカイブ表領域の領域が不足しています。領域を増やしてください。E05746-01この原因を考察するとテストケースとおりにFDAの確保する領域を超えたため、データを履歴表に格納すると障害を検知して処理が停止したようです。この障害の特徴として、FDAはINSERTの実行では履歴レコードが作成されないにもかかわらず、Oracleは障害として検知していることが上げられます。この動作から、Oracleは履歴表への過去レコードの蓄積容量を監視するだけではなく履歴管理対象の表に対しても同様に監視をしているようです。□FDAの領域障害の復旧マニュアルにはFDAの表領域の割り当てを増やすように記載があるので、早速FDAの表領域の割り当てをしたいと思います。時のFDAの容量は1Mであることが確認できます。FDA1_TS1せっかくなのでFDA1には表領域FDA1_TS1を利用してFDAの容量を無制限で割り当ててみましょう。[サイズ]になります。行1でエラーが発生しました。怒られてしまいました。実はQUOTAの指定のデフォルト値はUNLIMITEDですので、QUOTAを指定しない形で再設定してみます。フラッシュバック・アーカイブが変更されました。FDA1_TS1QUOTA_IN_MカラムがNULL値になりFDA1の容量がUNLIMITEDになりました。先ほどの障害時に発生したデータを削除後、再度FDAにデータを投入すると以下のように障害無くデータがTEST1表へ格納できました。3672行が削除されました。フラッシュバック・アーカイブが変更されました。PL/SQLプロシージャが正常に完了しました。内容を確認して見ましょう。100000それではDELETEを実行して履歴表に過去レコードを正常に格納されるのか確認してみましょう。100000行が削除されました。コミットが完了しました。TEST1の履歴表(SYS_FBA_HIST_73068)を確認すると、5分後に10万件のレコードが作成されました。100000履歴表も10万件作成されており正常に動作ができるようになりました。以上の様に、FDAの領域不足による障害はFDAの容量を1MBからUNLIMITED(無制限)に再設定をすることで復旧することができました。実際にFDAの領域障害に対して復旧操作をしてみると、FDAの容量制限をした場合では、FDAの容量制限と表領域容量制限の二つで管理することとなり管理が複雑になりがちであることがわかりました。TABLESPACE文のQUOTA句で指定することが可能であることから、FDAはデフォルトのUNLIMITEDに設定して表領域で領域容量を管理する方が非常にシンプルであり管理が容易になると考えられます。■まとめ以上の6回の検証にわたりFDAの検証を行ってきました。「特定の表に対して操作履歴を長期的に取りたい!!」というシーンでは設定が比較的容易である点、フロントサイドで動作するSQLと非同期で操作している点を見るとFDAは有効な手段であることがわかりました。賢く運用するにはFDAは過去レコードの蓄積により記憶容量を多く消費することから表領域の管理の工夫がポイントになりそうです。[FDA利用のポイント例]・FDAの履歴表は通常では頻繁に参照するシーンが少ないことが想定されるため、特定の参照する時にだけINDEXを作成する。抑える必要がある場合は、高性能で高価なストレージシステムだけではなく、市場に流通しているSATAなどの様な安価なものも、データの保護レベルに応じて検討する。以上の様に、システム運用の工夫のポイントを考えるとシステム構築・運用ではプロダクトの機能/性能だけが向上するだけではなく、使う我々も賢く工夫していくことが勿論重要であると改めて感じました。今回でフラッシュバック・データ・アーカイブの検証は終わりです。次の連載でまたお会いしましょう。次回からは新しいシリーズとしてASMLIBの検証が始まります。reserved.トップページ企業概要プライバシーポリシ。