ホームページ > 記事 > システムチュートリアル > Oracle パラメータのセットおよびリセット設定
Oracleパラメータ設定におけるセットとリセットの実際のケース
環境: Oracle 10.2.0.5 RAC
要件: ノード 1 の aq_tm_processes はデフォルトに復元する必要があり、ノード 2 の設定は変更しないままにする必要があります
背景の紹介:
10.2 公式ファイルから aq_tm_processes パラメータを見つけることができます。このパラメータのデフォルト値が 0 であることがわかります。デフォルトの 0.
そして、実際に、このデフォルトの 0 の効果は、手動で SET を 0 に設定した場合の効果とは完全に異なることがわかりました。
この件について同僚と話し合って、最終的に技術的な詳細を学びました:
Oracle では、SET を使用してパラメータ値を設定すると、実際に多くの作業が節約されます。Oracle のデフォルト値を復元する場合、最も効果的な方法は、すべてが Oracle のデフォルト設計に従うように、値を RESET することです。
現在のシナリオを具体的に見ると、パラメーター aq_tm_processes を 0 に設定すると、元のデフォルトの 0 とはまったく異なります。
0 に設定すると、すべての q00 ワーカー プロセスがシャットダウンされ、再起動されません。デフォルトで 0 の場合、q00 ワーカー プロセスを開始できます。
現在生成されているパラメータの内容はこれに似ており、次のようなグローバル設定とインスタンス 1 の設定が含まれています。
*.aq_tm_processes=1 jy1.aq_tm_processes=0インスタンスの設定の優先順位が高いことはわかっています。つまり、この設定の影響は、インスタンス 1 のパラメータが 0、インスタンス 2 のパラメータが 1 であることを意味します。 つまり、インスタンス 1 は q00 ワーカー プロセスを開始できませんが、インスタンス 2 は q00 ワーカー プロセスを開始できます。
本番環境をシミュレートするためのテスト環境を構築します:
最初に aq_tm_processes を 1:
に設定しますalter system set aq_tm_processes = 1scope=both sid='*'; --spfile から pfile='/tmp/pfile11.ora' を作成します。
このとき、パラメータファイルには次のような設定が存在します:
*.aq_tm_processes=1
インスタンス 1 の aq_tm_processes を 0 に設定します
システム設定を変更します aq_tm_processes = 0 スコープ=両方 sid='jy1'; --spfile から pfile='/tmp/pfile12.ora' を作成します。
このとき、パラメータファイルには次のような設定が存在します:
*.aq_tm_processes=1 jy1.aq_tm_processes=0
この時点で、本番環境の現在の状況がシミュレーションされます。実際の操作プロセスを見てみましょう:
SQL> SQL> alter system set aq_tm_processes = 1scope=both sid='*'; システムが変更されました。 SQL> spfile から pfile='/tmp/pfile11.ora' を作成します。 ファイルが作成されました。 SQL> パラメータ aq を表示
名前の種類の値 ------------------------------------ ---------- --- - ------------------------- aq_tm_processes 整数 1 SQL> !ps -ef|grep q00 oracle 1462 27385 0 15:27 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 オラクル 1464 1462 0 15:27 ポイント/1 00:00:00 grep q00 オラクル 26534 1 0 15:08 ? 00:00:00 ora_q002_jy1 オラクル 31538 1 0 15:21 ? 00:00:00 ora_q000_jy1
SQL> SQL> alter system set aq_tm_processes = 0scope=both sid='jy1'; システムが変更されました。 SQL> spfile から pfile='/tmp/pfile12.ora' を作成します。 ファイルが作成されました。 SQL> パラメータ aq を表示
名前の種類の値 ------------------------------------ ---------- --- - ------------------------- aq_tm_processes 整数 0 SQL> !ps -ef|grep q00 oracle 2044 27385 0 15:28 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 オラクル 2046 2044 0 15:28 ポイント/1 00:00:00 grep q00
SQL>
ご覧のとおり、q00 プロセスは確かに 0 に設定された後消えます。インスタンスを再起動しても同様で、q00 プロセスは起動しなくなります。2. テスト計画
システム リセットを変更します aq_tm_processes スコープ = spfile sid = 'jy1'; spfile から pfile='/tmp/pfile13.ora' を作成します。
ノード 1 の検証を再開しますか?要件が達成できるかどうかを確認しますか?
具体的な実際の操作は以下のとおりです。
名前の種類の値 ------------------------------------ ---------- --- - ------------------------- aq_tm_processes 整数 0 SQL> !ps -ef|grep q00 oracle 3801 27385 0 15:32 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 oracle 3803 3801 0 15:32 ポイント/1 00:00:00 grep q00
SQL> 起動強制 ORACLE インスタンスが開始されました。 システムグローバル領域の合計 599785472 バイト 固定サイズ 2098112 バイト 可変サイズ 301993024 バイト データベースバッファ 289406976 バイト やり直しバッファ 6287360 バイト データベースがマウントされました。 データベースが開きました。 SQL> パラメータ aq を表示
名前の種類の値 ------------------------------------ ---------- --- - ------------------------- aq_tm_processes 整数 1 SQL> !ps -ef|grep q00 オラクル 4228 1 0 15:33 ? 00:00:00 ora_q000_jy1 オラクル 4232 1 0 15:33 ? 00:00:00 ora_q002_jy1 oracle 5021 27385 0 15:35 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 oracle 5023 5021 0 15:35 ポイント/1 00:00:00 grep q00
SQL>
ご覧のとおり、答えは明らかに「いいえ」です。
これはインスタンス 1 のパラメータのみをリセットしますが、以前にグローバル パラメータ *�� があったため、インスタンス 1 を再起動すると aq_tm_processes パラメータが 1 になることがわかります。
つまり、インスタンス 1 の設定を削除すれば、全体の設定は自然に踏襲されます。
上記の基盤をもとに、要件を実装するという考えがあります:
考えてみましょう。グローバル パラメータをリセットすると、ノード 2 の以前の設定に影響します。この方法では、ノード 2 の値を個別に設定してから、グローバル パラメータをリセットするしかありません。
システム設定を変更します aq_tm_processes = 1 スコープ=両方 sid='jy2'; --spfile から pfile='/tmp/pfile14.ora' を作成します。 システム リセットを変更します aq_tm_processes スコープ = spfile sid = '*'; --spfile から pfile='/tmp/pfile15.ora' を作成します。
ノード 1 の検証を再開しますか? ?要件が達成できるかどうかを確認しますか?
具体的な実際の操作は以下のとおりです。
SQL> alter system set aq_tm_processes = 1scope=both sid='jy2'; システムが変更されました。 SQL> spfile から pfile='/tmp/pfile14.ora' を作成します。 ファイルが作成されました。 SQL> alter system restart aq_tm_processesscope=spfile sid='*'; システムが変更されました。 SQL> spfile から pfile='/tmp/pfile15.ora' を作成します。 ファイルが作成されました。 SQL> 起動強制 ORACLE インスタンスが開始されました。
システム グローバル領域の合計 599785472 バイト 固定サイズ 2098112 バイト 可変サイズ 301993024 バイト データベースバッファ 289406976 バイト やり直しバッファ 6287360 バイト データベースがマウントされました。 データベースが開きました。
SQL> パラメータ aq を表示 名前 タイプ 値 ------------------------------------ ---------- --- - ------------------------- aq_tm_processes 整数 0 SQL> !ps -ef|grep q00 オラクル 7446 1 1 15:40 ? 00:00:00 ora_q000_jy1 オラクル 7448 1 0 15:40 ? 00:00:00 ora_q001_jy1 オラクル 7450 1 0 15:40 ? 00:00:00 ora_q002_jy1 オラクル 7452 1 0 15:40 ? 00:00:00 ora_q003_jy1 oracle 7480 27385 0 15:41 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 oracle 7482 7480 0 15:41 ポイント/1 00:00:00 grep q00 SQL>
ご覧のとおり、実際の動作テストの検証に対する答えは期待どおりです。「はい」です。
注: pfile を作成する手順はすべて削除できます。その際、各ステップの後にこの操作を追加したのは、理論が正しいかどうかを確認したかったからです。
つまり、実際の顧客環境では、要件を満たすために次の 3 つの手順を実行する必要があります。
--ノード 2 の設定が変更されていないことを確認します。 システムセットを変更します aq_tm_processes=1 スコープ=spfile sid='jy2'; --ノード 1 の設定をリセット システム リセットを変更します aq_tm_processes スコープ = spfile sid = 'jy1'; --グローバル設定をリセット システム リセットを変更します aq_tm_processes スコープ = spfile sid = '*';この記事の知識ポイントの要約: 実際には、次の 3 つの知識ポイントを理解するだけで済みます。
リセット操作では、実際にはこの値が spfile から削除されるだけです;
特定のインスタンス レベルの設定は全体の設定よりも優先されます;
Oracle は実際には SET パラメータ値に対してはるかに少ない処理を行うことに注意してください。簡単に理解すると、デフォルトの 0 は設定の 0 とは異なるということになります。
以上がOracle パラメータのセットおよびリセット設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。