◼︎ 概要
Oracleのフェイルオーバーの設定について説明します
接続先が死んでいた際に自動的にフェイルオーバーさせます
Oracle勉強シリーズ
- Oracleの表領域についてまとめてみた
- Oracleのパーティションについてまとめてみた
- Oracle ダイレクトロードインサートについて
- OracleのSEQUENCEについて
- Oracleのパーティションインデックスについて
- Oracleのフェイルオーバーについて
- Oracle11gから12cへの移行の注意点
◼︎ 接続時フェイルオーバー(CTF)について
Connection Time Failover
新規に接続する際に接続先が死んでいた場合などで失敗した場合フェイルオーバーさせる
設定方法としてはtnsnames.oraファイルにFAILOVER=ONを記述
※ SCAN利用時はADDRESS_LIST句にSCANを指定すると自動的に3つのSCAN VIPを利用した接続時フェイルオーバーが行われるのでtnsnames.oraにFAILOVERの記述は不要になる
◼︎ 透過的アプリケーション・フェイルオーバー(TAF)について
Transparent Application Failover
接続中に接続先が死んだ場合などでエラーが発生した場合にフェイルオーバーする
- クライアントからSCAN経由でDBサーバにセッションを貼る
- RAC構成ノードのどれか1つのDBサーバに接続
- DBがダウン (セッション切断)
- TAFを利用している場合は自動で再接続する
TAFの設定でSELECT中の切断時でもSELECTのリトライをすることが可能になる
INSERT,UPDATE,DELETEなどは再接続しても処理を引き継げないためロールバックが行われる
設定例
test_db = (DESCRIPTION = (enable = broken) (ADDRESS = (PROTOCOL = TCP)(HOST = hoge.host)(PORT = 98765)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sn_testdb) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 10)(DELAY = 10)) ) )
設定項目 | 説明 |
TYPE |
フェイルオーバーの種類 SESSION: セッションをフェイルオーバー SELECT: SELECT中の切断でもリトライできる NONE: デフォルト、フェイルオーバー機能を使用しない |
RETRIES |
フェイルオーバー後に接続を行う回数を指定 デフィルトでは5回 |
DELAY |
次に接続を試みるまでの待機時間を秒数で指定 デフォルトは1秒 |
◼︎ SCANについて
Single Client Access Name
Oracle Databaseにアクセスする際にクライアントが(実際は複数の接続先があるが)単一の名前で使用できる
なのでクラスタにノードやデータベースを追加・削除したりしてもSCANを使用しているクライアントのtnsnames.oraの記述の変更が必要ない
◼︎ 参考サイト
- 11g R2 RAC データベースへの接続フェイルオーバーとロードバランシング
- 解説!Oracle RACへの接続ロードバランスと接続フェイルオーバー
- Oracle Single Client Access Name(SCAN)
- Oracle Database Net Services リファレンス FAILOVER_MODE
- Oracle Database Net Services管理者ガイド
コメントを書く
コメント一覧