#odc16 DB障害解決の極意:しばちょう先生の特別講義!! 実体験に基づくトラブル対応と対策案 @Oracle Database Connect 2016まとめ

公開日: 

「Oracle Database」のエンジニアを対象にデータベース運用のためのテクニックなどに関するノウハウを紹介するイベントOracle Database Connect 2016に参加してきました。

その時のリカバリテクニックについてのセッションのまとめです。

日本オラクル株式会社

柴田 長様

表データが消えた

  • 検証DBをメンテナンス中に本番側でアラート報告
    • ORA-942(表やビューが存在しない)が発生
    • →DBAが誤って消してしまっていた
  • この場合はFlashbackドロップで戻せる
  • demo

  • 索引も回復するが、参照性整合性役は消えているので再設定をしましょう
  • ちなみにゴミが貯まると性能問題が起こるので注意

データの論理破壊

  • DB用のDML文の実行順序を誤っていたことが発覚
    • バックアップからのリカバリ!と思ったが、4TBのリストアや1日分のredoでリカバリとなると間に合わない
  • →Flashbackデータベースで戻せる
  • 予めバッチ処理の前にrestore pointを作っておく

  • 戻っているかどうか確認する場合はREAD ONLYでopenして確認する
    • 巻き戻しが不十分ならflashbac database
    • 巻き戻しすぎならrecover database
    • 期待通りならopen reset logs

データファイルを消してしまった

  • オペミスで開発環境のデータを削除してしまった
    • flashback dropで戻せると思ったが、rmコマンドでデータファイルのディレクトリを削除してしまった
  • →rmanのswitchコマンドで短時間で戻せる

  • バックアップファイルをみるように変えている

データブロックが破損

  • 商品XYZの検索時のみ、ORA-1578が発生
    • BlockMediaRecoveryで修復できる
    • 環境のバックアップはストレージ側のミラーコピー機能で取得している
    • データファイルのリストア+リカバリは時間がかかりすぎる
  • →ActiveDataGuardの自動ブロック修復を使えば直せる

  • rmanはスタンバイdatabase→flashback log→rman次の順序で正常ブロックを検索する

Active Data Guardによる透過的なブロック修復

  • SQL発行してプライマリDBでblock破損を検知したらスタンバイに正常blockを要求して自動転送し、自動的にリカバリされる。
  • ASM mirrorで修復施行も可能

原因不明の障害が発生

  • 業務処理が戻ってこないと現場からアラートが上がっている
    • しかしなかなか原因がわからない
  • →まずはDataGuardでフェイルオーバーして業務継続を確保した上で原因を特定する

  • 何分間か原因調査してだめだったらフェイルオーバーするといった指針にするといい

再び、表データが消えた

  • 日中の業務開始後に、昨晩のバッチ処理でtruncateされていたことがあとから判明した
    • dataguardのstandbyは使えない
    • リストア+リカバリやfalshback databaseだと他の表も全て戻る
  • →12cだと表単位のリカバリもできる
    • 11gR2以前の場合はDataGuardとFlashbackを使う

  • DBの部分バックアップを代替の場所にリストアしてrecoverする方法
  • しばちょうさんの場合は以下のようにやる
    • Flashback databaseでスタンバイDBをtruncate前まで戻す
    • standby databaseをsnapshot standbyモードで起動する
    • standby databaseからdatapumpで対照表をエクスポートする
    • primary databaseへdatapumpで追記型インポートする

最後に

  • OracleMAA構成は業務影響を極小化
  • MAA構成を組むことがゴールではない
    • 万が一の際に迅速に復旧オペレーションができるのかが大事
    • 障害を想定した運用設計/実装を充実させる
    • 日頃から復旧手順を確認する
  • ORAChkで今回紹介した機能が使えるかどうかが判断できます

@mogmetの所感

実践で使える目から鱗な技術でとても参考になるセッションでした。

表データが消えた時はrecover tableまではすぐにおもいついたのですが、スタンバイDBから戻すという方法もいい方法だとおもいました。

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑