こしぞーのひとり情シス

Windows/仮想化の小規模環境を運用するリーマンの日々を綴っています。

全員に見てほしい Oracle アプリケーション・コンティニュイティ(Application Continuity)

f:id:bfx62324:20191207120137p:plain

Oracle Databaseを運用していて「ノード障害が起こったらどうする?」に対応する答えが、アプリケーション・コンティニュイティ(Application Continuity)です

簡単に述べると

  • Database 12.1 できれば19c以降のバージョンであれば対応している
  • RACノード障害時にOLTP系処理は全て再実行して救うことができる
    しかも、アプリケーションの改変はほぼなし
  • バッチジョブは救えない。別の仕組みでリトライする仕組みが必要(従来どおり)

ですが、実装が非常に簡単なのでDBAとしては知っておきたい機能です
では、見ていきましょう

情報ソース(本家Oracleの解説動画)

情報ソースは本家本元からです。

youtu.be

なんでこの素晴らしい動画が数十回しか視聴されていないのか。。。不思議ですね。

 

その説明スライドはこちら

speakerdeck.com

 

必要なライセンス

 Application Continuityには、個別のライセンスは必要としません

  • Oracle Enterprise Editionであること
  • 加えて、以下のどちらかのライセンスを保有していること

    Real Application Clusters (RAC)
    または
    Active Data Guard

情報ソースは以下の通り

f:id:bfx62324:20210112195204p:plain

"Requires the Oracle Active Data Guard option or the Oracle Real Application Clusters option"

  • 「Y」になっているものは、利用可能と定義されている。以下はすべてOK
    EE: オンプレEnterprise Edition環境
    EE-ES: オンプレEngineered Systems(Exadata)環境
    DBCS EE-EP: Oracle Cloud のDatabase Cloud Service環境
    ExaCS: Oracle CloudのExadata Cloud Service

Oracle database Enterprise Editionであって、更にADGまたはRACのライセンス追加購入が必要です
アプリケーションコンティニュイティを使うようなデータベースであれば最低限RACは購入しているでしょう 

AWSでアプリケーション・コンティニュイティ

AWSではEC2での手組のRACがサポートされていません。RDS for OracleRACをサポートしています。AWSでApplication Continuityを使用したい場合は、RDS for Oracleで利用可否を確認する必要があります

Azureでアプリケーション・コンティニュイティ

AzureではOracle RACを動作させる方法が提供されていません。残念ながらAzureではApplication Continuityは使用できないと考えたほうが良さそうです
AzureならSQL Serverを利用することになるでしょう

必要なデータベースバージョン

 11gでは利用できません、12c以降と考えてください 

https://speakerdeck.com/oracle4engineer/apurikesiyonkonteiniyuitei?slide=22

より高機能・最新機能の透過的アプリケーション・コンティニュイティ(TAC)が本命です。これから利用を始めるのであればDatabase 19cでの利用が中心になってくるでしょう

透過的アプリケーション・コンティニュイティ / Transparent Application Continuity (18c~)

TACと略して記載されます

アプリケーション・コンティニュイティで制御可能だったいくつかの動作を決め打ち
ほとんどのアプリケーションで適用可能な動作
リプレイ境界(トランザクションの境界)を自動挿入
サード・パーティ製Javaアプリケーション・サーバーでもコード修正なしに使用可能(19c~)
https://speakerdeck.com/oracle4engineer/apurikesiyonkonteiniyuitei から引用

アプリケーション・コンティニュイティ / Application Continuity (12c Release 1~)

ACと略して記載されます
これはTACが利用できない18c未満のバージョンで利用を検討してください

Oracleサーバー障害を検出すると自動再接続しトランザクションを自動再実行
DBMS外部に副作用のあるプロシージャの再実行を制御可能

https://speakerdeck.com/oracle4engineer/apurikesiyonkonteiniyuitei から引用

アプリケーションコンティニュイティの動作

 簡単にまとめると、アプリケーション・コンティニュイティは、以下のとおりです

  • TAC/ACともに、DB側はとっても簡単に実装可能
    データベース接続サービスを設定するだけ
  • TAC/ACともに、Oracle Client側の考慮事項が数点あるので注意
    Oracle Client 対応がある(JDBC Thin Driver / OCI Session Pool / DOP.Net Unmanaged Driver)
    コネクションプール使っているか
  • TAC/ACともに、アプリケーションの回収はほぼ不要
    アプリケーション・コンティニュイティで再実行できないコードになっていないか確認をして、対応できなければ諦めればいい
  • Application Continuityを使える点を19cアップグレードの理由にしてもいいくらい素晴らしい機能
  • 短いトランザクションに向いている。長いトランザクションには向かない
    OLTP処理には使える(OLTP向けに実装されている)
    バッチジョブには向かない(複数回コミットが必要なバッチには向かない)

詳しくは、本家のYoutube画像とスライド(Speakerdeck)を御覧ください
めちゃめちゃわかりやすく、丁寧に説明されています

関連記事です

 なんとなくPartitionを使うのではなく、理由を持ってPartitionを使うべきかなとは思っています。せっかく購入するのでちゃんと理由が必要ですよね。

www.hitoriit.com

 

最新は Oracle Database 21c です。19c のほうが長く利用できますが新しい機能は21cに詰まっているようです

www.hitoriit.com

以上です