Oracle RAC 抂芁/パヌト2

Real Application Cluster  RAC に関する蚘事の続き。 終了



蚘事の始たり







クラスタヌが䞊昇し、すべおが回転したず考えおいたす。



ノヌドの盞互䜜甚。 キャッシュ融合。



倚くのデヌタベヌスむンスタンス、倚くのディスク。 ナヌザヌのリク゚ストが泚がれた...ここに圌らは、私たちが埅っおいた顧客です。 =



デヌタベヌスのボトルネックはディスクI / Oです。 したがっお、すべおのデヌタベヌスは、遅延曞き蟌みを䜿甚しお、可胜な限りたれにディスクにアクセスしようずしたす。 RACでは、すべおが単䞀むンスタンスデヌタベヌスの堎合ず同じです。RAMの各ノヌドにはSGA  システムグロヌバル゚リア があり、その内郚にはデヌタベヌスバッファキャッシュがありたす 。 䞀床ディスクから読み取られたすべおのブロックはこのバッファヌに分類され、可胜な限り長くそこに保存されたす。 ただし、キャッシュは無限ではないため、保存されたブロックの重芁性を評䟡するために、 TCA タッチカりントアルゎリズムが䜿甚され、ブロックぞの呌び出しの数がカりントされたす。 キャッシュで最初にヒットするず、ブロックはコヌルド゚ンドに配眮されたす。 ブロックにアクセスする頻床が高いほど、ブロックはホット゚ンドに近くなりたす。 ブロックが「叀い」堎合、キャッシュ内の䜍眮が埐々に倱われ、別のレコヌドに眮き換えられる危険がありたす。 ブロックの䞊曞きは、䜿甚頻床の䜎い順に始たりたす。 ノヌドのキャッシュはノヌドのパフォヌマンスにずっお非垞に重芁です。したがっお、クラスタヌで高いパフォヌマンスを維持するには、キャッシュを共有する必芁がありたす誰が知っおいるように。 クラスタヌノヌドのキャッシュに保存されたブロックは、 ロヌカルブロックの圹割を持぀こずができたす。 圌自身の䜿甚のために、いく぀かはすでにglobalずマヌクされたす。圌は、 歯で歯を食いしばっお、クラスタヌ内の他のノヌドず共有したす。



クラスタヌ内の共有キャッシュテクノロゞヌは、 キャッシュ融合 キャッシュ合成ず呌ばれたす。 各ノヌドのCRSは同期LMSnプロセスを生成したす。 サヌビスずしおの共通名はGCS  グロヌバルキャッシュサヌビス です。 これらのプロセスは、このむンスタンスで読み取ったブロックグロヌバルをバッファヌキャッシュからネットワヌク経由でアクセスしたむンスタンスにコピヌし、未確認のトランザクションをロヌルバックする圹割も果たしたす。 1぀のコピヌには、最倧36個GCS_SERVER_PROCESSESを含めるこずができたす。 通垞、2぀のコアごずに1぀のLMSnが掚奚されたす。そうしないず、リ゜ヌスを倧量に消費したす。 LMONおよびLMDプロセスによっお各ノヌド䞊で衚されるGESサヌビス グロヌバル゚ンキュヌサヌビス は、それらの調敎を担圓したす。 LMONはクラスタヌ党䜓のグロヌバルリ゜ヌスを監芖し、隣接ノヌドにアクセスしおブロックを取埗し、GCSリカバリを管理したす。 ノヌドがクラスタヌに远加たたはクラスタヌから離脱するず、ロックずリ゜ヌスの再構成が開始されたす。 LMDはホストリ゜ヌスを管理し、共有ブロックずキュヌぞのアクセスを制埡し、GCSぞのリク゚ストをブロックし、LMSnリク゚ストキュヌのメンテナンスを管理したす。 LMDの責任には、耇数のクラスタヌノヌドでのグロヌバルデッドロックの解決も含たれたす。











ただし、クラスタヌリ゜ヌスの調敎ずキャッシュの組み合わせにおける特別な圹割はGRD  グロヌバルリ゜ヌスディレクトリ テヌブルに割り圓おられ、 GRD  グロヌバルリ゜ヌスディレクトリ テヌブルでは、どのむンスタンス、どのブロックたたはそのコピヌが利甚可胜か、むンスタンスがブロックを保持するモヌド、ブロックロヌル、SCNで垞に固定されたす 単䞀むンスタンスバヌゞョンでは、SCNはデヌタベヌスに加えられた倉曎の増分カりンタヌにすぎたせん。 クラスタでは、ノヌド間でSCNを同期する必芁がありたす。 ミリ秒単䜍で指定されたMAX_COMMIT_PROPOGATION_DELAYパラメヌタヌの倀に応じお、2぀のSCN同期方法がありたす。
  1. 100を超える堎合、SCNはむンスタンスで䞊行しお生成増分されたす。 これらのSCNは、盞互接続を介しお転送される各メッセヌゞに埋め蟌たれたす。定期的に、Oracleはアむドル時に盞互同期のために珟圚のSCN倀のむンスタンスをポヌリングしたす。 通垞、間隔は最倧700ミリ秒です。 「埌期」コミットの長いトランザクションに䜿甚できたす。
  2. = 0デフォルトの堎合、いずれかのむンスタンスでCOMMITが発生するずすぐに、珟圚の番号に関するアラヌトがすぐに他のナヌザヌに送信されたす。 亀換は非垞に頻繁に1秒未満たで発生するため、盞互接続を介しお倧量のトラフィックが生成されたす。


その結果、RACのSCNは、クラスタヌで既知の最倧のSCNに定期的に同期されたす。 ブロックに加えられた倉曎の蚘録が時系列に配眮されるようにSCNが必芁です。これは、トランザクションを埩元するずきに必芁ですロヌルフォワヌド。



GRDテヌブルはクラスタヌノヌド間で分散されたす。 各ノヌドはクラスタヌリ゜ヌスの配垃に参加し、GRDのその郚分を曎新したす。 GRDテヌブルの䞀郚はリ゜ヌスに関連しおいたす-オブゞェクトテヌブル、むンデックスなど。 ノヌド間で垞に同期曎新されたす。

ノヌドがディスクからデヌタブロックを読み取るず、ノヌドはこのリ゜ヌスのマスタヌになり、GRDテヌブルの䞀郚に察応するマヌクを䜜成したす。 ブロックはロヌカルずしおマヌクされたす、なぜなら これたでのずころ、ノヌドは単独で䜿甚しおいたす。 このブロックが別のノヌドに必芁な堎合、GCSプロセスはテヌブル内のこのブロックをグロヌバルクラスタヌに察しお「公開」ずしおマヌクし、芁求されたノヌドに枡したす。



DBA 堎所 モヌド 圹割 SCN PI / XI
500 ノヌド番号3 共有した ロヌカル 9996 0




では、すべお䞀緒にしたしょう マスタヌノヌドのGRDでは、クラスタヌむンスタンス間のブロックの分散を調敎するために、各ブロックに远加情報が蚘録されたす。

デヌタベヌスの最も重芁な原則単䞀むンスタンスのいく぀かは、RACにも圓おはたりたす。

RAC環境ず通垞の単䞀むンスタンスデヌタベヌスの違いは、ロックはすべおの芁望にもかかわらず、行レベルではなくブロックレベルで実行されるこずです 。 ぀たり むンスタンスはブロック党䜓コンテンツおよび他の誰かに必芁なデヌタをブロックできたす。



クラスタラむフの兞型的な状況をいく぀か説明したしょう。





ディスクぞの蚘録の必芁なしでは発生したせん。 ブロックのコピヌは、最も頻繁に䜿甚されるノヌドに垞に保存されたす。 特定のブロックがただグロヌバルキャッシュにない堎合、芁求時にマスタヌは察応するノヌドにディスクからブロックを読み取り、他のノヌドず共有するように芁求したす必芁に応じお。



䞊蚘に基づいお、キャッシュ融合には2぀のシナリオが含たれるこずが明らかになりたす。
  1. 関係する2぀のノヌドがありたすタヌゲットノヌドがマスタヌキャッシュに栌玍されたブロックを必芁ずしたずき。
  2. 関係する3぀のノヌドがありたす。マスタヌが䞭間ノヌドに芁求を送信し、䞭間ノヌドがブロックを必芁なノヌドに枡したす。


クラスタヌ内にノヌドがいく぀あるかは関係ありたせん。ホップブロック転送に参加しおいるノヌドの数が3を超えるこずはありたせん 。 この事実は、RACクラスタヌが倚数のノヌドに簡単に拡匵できるこずを説明しおいたす。



火を぀けお、助けが必芁です ワヌクロヌドの分散。



説明したCache-fusionデバむスは、ノヌドのロヌドに自動的に反応する機胜をクラスタヌに提䟛したす。 これが、 ワヌクロヌドの分散たたはリ゜ヌスのリマスタヌの 仕組みです。

たずえば、ノヌドNo.1を介しお1500人のナヌザヌがリ゜ヌスAにアクセスし、ほが同時に100人のナヌザヌがノヌドNo.2を介しお同じリ゜ヌスAにアクセスする堎合、最初のノヌドがより倚くのリク゚ストを持ち、より頻繁にドラむブ。 したがっお、ノヌド1はリ゜ヌスAぞのリク゚ストのマスタヌずしお定矩され、GRDはノヌド1から䜜成および調敎されたす。 ノヌド2が同じリ゜ヌスを必芁ずする堎合、ノヌド2にアクセスするには、ノヌド1のGCSおよびGRDずアクションを調敎しお、盞互接続を介しおリ゜ヌスを受け取る必芁がありたす。

リ゜ヌスの分垃がノヌド番号2を優先しお倉化する堎合、プロセス番号2ず1は盞互接続を介しおアクションを調敎し、ノヌド番号2はリ゜ヌスAのマスタヌになりたす。 圌は今、より頻繁にディスクにアクセスしたす。

これは、リ゜ヌスの芪和性ず呌ばれたす。 リ゜ヌスはそのノヌドに割り圓おられ、そのノヌドでさらに受信およびブロックするアクションが実行されたす。 リ゜ヌスアフィニティポリシヌは、ノヌドのアクティビティを調敎しお、リ゜ヌスがより必芁な堎所にアクセスできるようにしたす。 ここに、簡単に蚀えば、 ワヌクロヌドの分垃党䜓がありたす。



再配垃リマスタリングは、ノヌドがクラスタヌに远加たたはクラスタヌから離脱するずきにも発生したす。 Oracleは、遅延リマスタヌず呌ばれるアルゎリズムに埓っおリ゜ヌスを再割り圓おしたす。 Oracleは、リ゜ヌスのアクティブな再配垃をほずんど行いたせん。 ノヌドが萜ちた堎合、Oracleは、障害が発生したノヌドに属するリ゜ヌスを残りの1぀負荷が少ないに投げるだけです。 負荷を安定化させた埌、GCSずGESは、リ゜ヌスをより自動で自動的に再配分ワヌクロヌドの分散したす。 ノヌドが远加されるず、同様のアクションが発生したす。ほが等しい量のリ゜ヌスが既存のノヌドから分離され、新芏参入者に割り圓おられたす。 その埌、ワヌクロヌドの分散が再び発生したす。

原則ずしお、動的な再配垃を開始するには、特定のノヌドのワヌクロヌドが他のノヌドのワヌクロヌドを10分以䞊超える必芁がありたす。



ここで匟䞞が飛んだ、そしお え 回埩。



突然、䞀郚のノヌドがハヌトビヌトに応答したせんでした。それを怜出した最初のノヌドのCSSDプロセスは「アラヌムを鳎らし」、マスタヌノヌドに報告したすただ接続されおいる堎合は、マスタヌ自䜓の責任を匕き継ぐ必芁がありたす。 マスタヌはすべおのノヌドで「投祚」手順を開始し、クラスタヌの生き残ったノヌドは投祚ディスクでマヌクされ始めたす。 欠萜しおいるノヌドがここにトレヌスを残さない堎合、マスタヌはクラスタヌから欠萜を陀去するプロセスを開始したす。 REDOログファむルは2回読み取られたす。1回はREDOレコヌドで、2回目は再床既にUNDOレコヌドで、デヌタベヌスをできるだけ早くク゚リで䜿甚できるようにしたす。

  1. フォヌルドノヌドのリ゜ヌスを含むGRDテヌブルの䞀郚は「凍結」されおいたす。
  2. 接続されおいないノヌドは「欠萜」ずマヌクされおいるため、残りのノヌドは盞互接続を介しお無駄に接続したせん。
  3. 損倱を最初に発芋したノヌドは、消倱したノヌドで凊理された情報の埩元を開始したす。
    • 独自のトランザクションを凊理するペヌスを短瞮し、コンピュヌティングリ゜ヌスを埩旧に投入したす
    • 䞀般的なファむルストレヌゞdatastorageを指し、芋぀からないノヌドに属するオンラむンREDOログ自䜓に適甚し始めたす。 SCNブロックのシリアル番号を指定しお、それらをバッファヌに保存されおいるものずマヌゞし、キャッシュ内でロヌルロヌルフォワヌドしたす。 同時に、ノヌドは、埌のバヌゞョンがすでにディスクにフラッシュされおいる叀いブロックPIレコヌドをスキップしたす。 クラスタヌ内の読み取りブロックに察応するリ゜ヌスのマスタヌがある堎合、ノヌドは読み取りブロックのリストを報告し、マスタヌがこれらのリ゜ヌスにロックを蚭定しお、ノヌドがそれらのリ゜ヌスにアクセスしないようにしたす埩元䞭。
    • その埌、REDOログの2回目の読み取りで、すでに取り消し゚ントリを考慮しお、コミットされおいないトランザクションをロヌルバックロヌルバックしたす。 これは、高速リカバリテクノロゞヌ、぀たり トランザクションは、別のバックグラりンドプロセスによっおロヌルバックされたす。 Oracleは、これらのブロックのリク゚ストが到着するずすぐに、コミットされおいないブロックによっおロックされたブロックを䞀貫した状態に、以前の倀に戻したす。 たたは、それらは、この非垞に䞊行したバックグラりンドプロセスによっお埩元されたす。 したがっお、ロックはクラスタヌ内で既に削陀されおおり、新しいナヌザヌ芁求を実行できたす。
  4. フォヌルドノヌドに属しおいたGRDテヌブルの䞀郚は、リカバリノヌドで解凍されたす珟圚はリ゜ヌスのマスタヌです。 したがっお、クラスタヌでは、「フォヌル」の時点で、欠萜しおいるノヌドで凊理されたトランザクションの状態が埩元されたす。


しかし、これらすべおのプロセスが行われおいる間、せっかちなクラむアントは䜕かを提䟛したす。





ノヌドがお互いを保存しながら...フェヌルオヌバヌ。



フェヌルオヌバヌは、クラスタヌ内のノヌド障害状況の凊理です。

クラスタヌ環境のもう1぀の局、぀たりクラむアントがデヌタベヌスにアクセスするためのパブリックネットワヌクに぀いお説明したす。 物理サヌバヌでは、少なくずも2぀のネットワヌクカヌドが望たしい

  1. 最初のネットワヌクカヌドには静的IPが割り圓おられたす。静的IPを介しお、ノヌドはクラスタヌ内の隣接ノヌドずメッセヌゞを亀換したす盞互接続。
  2. 2番目のネットワヌクカヌドには、論理仮想IP仮想IPが割り圓おられたす。これにより、クラむアントはクラスタヌノヌドに芁求を送信したす。




仮想IP  VIP -倖郚ネットワヌクむンタヌフェむス䞊のノヌドに割り圓おられた論理ネットワヌクアドレス。 CRSがこのVIPの䜜業を静かに開始、停止、および別のノヌドに転送する機胜を提䟛したす。 各ノヌドのリスナヌ接続を受け入れるプロセスは、そのVIPをリッスンしたす。 ノヌドが䜿甚できなくなるずすぐに、そのVIPはクラスタヌ内の別のノヌドによっお取埗され、䞀時的に自身ずフォヌルドノヌドの芁求を凊理したす。



これは、トランザクションが実行されたノヌドが萜ちた堎合に、クラむアントのダりンタむムを枛らすために行われたす。 結局、クラむアントは数分間TCPタむムアりトを埅぀こずができたす。 この堎合、VIPはすぐに別のノヌドによっお「ピックアップ」され、 TAF  透過的アプリケヌションフェむルオヌバヌ テクノロゞヌを䜿甚しお、2぀のシナリオに埓っおさらにむベントを開発できたす。

  1. デヌタベヌスVIP クラむアントはVIPを介しお接続したすが、すでに別のノヌドに接続しおいたす。 䞀時的に亀換するノヌドは「ログオンに倱敗したした」ず応答したす。VIPがアクティブであるにもかかわらず、必芁なデヌタベヌスむンスタンスがその背埌にありたせん。 そしお、クラむアントはすぐに再詊行したすが、構成内のリストからクラスタヌの別のむンスタンス/ノヌドに再詊行したす。
  2. アプリケヌションVIP 以前ず同じ。 ただし、このVIPでのみ、どのノヌドでスピンしおいるかに関係なく、アプリケヌションにアクセスできたす。


デヌタベヌスVIPは、自分のサむトでのみアプリケヌションを提䟛できたす。アプリケヌションが移行した堎合、それらは拒吊したす。 移行埌もアプリケヌションVIPは、ノヌドによっお提䟛される機胜を実行したすポゞティブ。



ノヌドが埩元されおオンラむンになるず、CRSはこれを認識し、ノヌドを亀換するノヌドでオフラむンにリセットするよう芁求し、VIPアドレスを所有者に返したす。 VIPはCRSを指し、デヌタベヌスむンスタンスに障害が発生しおもスロヌされない堎合がありたす。



フェむルオヌバヌでは、遞択されたク゚リのみが、オヌプンカヌ゜ル結果を返すずずもに転送されるこずに泚意するこずが重芁です。 トランザクションは移行されたせんPL / SQL、䞀時テヌブル、挿入、曎新、削陀。垞に再起動する必芁がありたす。



TAFを構成するには2぀の方法がありたす。

クラむアント接続には再詊行ず遅延のオプションがありたす。 これらは、ノヌドが萜ちた堎合にクラむアントがサむレントに再接続を詊行する回数ず、蚭定する遅延を構成できたす。 おそらく最も興味深いのは、ノヌドがクラッシュした堎合に、OracleがONSOracle Notification Servicesの䞀郚であるFANFast Application Notificationを介しおクラむアントに通知できるこずです。 クラむアントがOracleぞの接続に「厚い」ドラむバヌを䜿甚する堎合、デヌタベヌスにアクセスする前に、TAFフェむルオヌバヌの堎合にむベントが来るコヌルバック関数コヌルバックを登録できたす。 これは、ナヌザヌの画面に「小さなヒッチ」ずしお衚瀺され、リク゚ストを手動で再開するプロセスを制埡できたす。



そこに行かないで、ここに行く...負荷分散。





操䜜を実行するず、OracleはAWR  自動ワヌクロヌド・リポゞトリ で問合せパフォヌマンス「デバッグ」などに関連する情報を収集したす。 SYSAUX衚領域に栌玍されたす。 統蚈収集は60分ごずに開始したすデフォルトI / O埅機、埅機むベント、セッションごずに䜿甚されるCPU、デヌタファむル最も頻繁にアクセスされるファむルのI / Oレヌト。



クラスタヌ内のノヌド間の負荷分散負荷分散の必芁性は、䞀連の基準、぀たりノヌドぞの物理接続の数、プロセッサヌ負荷CPU、およびトラフィックによっお決たりたす。 ノヌドでの平均ク゚リ実行時間による負荷分散が䞍可胜なのは残念ですが、原則ずしお、これは䜕らかの方法でノヌドで䜿甚されるリ゜ヌス、したがっお残りの空きリ゜ヌスに関連しおいたす。



クラむアントの負荷分散に぀いおは、䞊蚘で少し述べたした。 クラむアントは、構成内のリストからランダムに遞択されたクラスタヌノヌドに接続できたす。 サヌバヌ偎の負荷分散を実装するために、別のプロセスPMONプロセスモニタヌがクラスタヌノヌドの読み蟌みに関する情報を収集したす。 この情報を曎新する頻床は、クラスタヌの茻茳に䟝存し、玄1分から10分たでの範囲です。 この情報に基づいお、クラむアントが接続されおいるノヌドのリスナヌは、最も負荷の少ないノヌドにリダむレクトしたす。



Oracleは、負荷分散に最も関連する基準を遞択するDBAを提䟛したす。



アプリケヌションに接続プヌルがある堎合、Oracleはランタむム接続負荷分散  RCLB  オプションを提䟛したす 。 通垞のオプションの代わりに、どのノヌドの負荷が少ないかを予枬し、そこにリク゚ストを送信しようずするず、ノヌドぞのロヌドに関するアプリケヌションの通知メカニズムむベントを䜿甚したす。 そしお、このデヌタに基づいお、アプリケヌション自䜓がリク゚ストの送信先を決定したす。 通知は、ONSOracle Notification Serviceを介しお発生したす。 RCLBはクラスタヌノヌドから定期的にフィヌドバックを受け取り、接続プヌルは各むンスタンスが完了できる接続の割合を瀺す盞察的な数倀に基づいおクラむアントに接続を分散したす。 RACが転送するこれらのメトリック平均ノヌド負荷、各ノヌドはAWRで構築されたす。 それらに基づいお、必芁なロヌドアドバむザリが圢成され、AQ高床なク゚リキュヌに配眮され、そこからONSを介しおクラむアントにデヌタが送信されたす。



通知は、次のいずれかのメカニズムで䜜成されたす。



蚘事の始たり






All Articles