ホームページ  >  記事  >  システムチュートリアル  >  Oracle パラメータのセットおよびリセット設定

Oracle パラメータのセットおよびリセット設定

WBOY
WBOY転載
2024-03-20 19:10:141173ブラウズ

Oracleパラメータ設定におけるセットとリセットの実際のケース

環境: Oracle 10.2.0.5 RAC

要件: ノード 1 の aq_tm_processes はデフォルトに復元する必要があり、ノード 2 の設定は変更しないままにする必要があります

  • 1. テスト環境の構築
  • 2.テスト計画
  • 3. 概要

背景の紹介:
10.2 公式ファイルから aq_tm_processes パラメータを見つけることができます。このパラメータのデフォルト値が 0 であることがわかります。デフォルトの 0.

と呼びましょう。

Oracle パラメータのセットおよびリセット設定

そして、実際に、このデフォルトの 0 の効果は、手動で SET を 0 に設定した場合の効果とは完全に異なることがわかりました。
この件について同僚と話し合って、最終的に技術的な詳細を学びました:
Oracle では、SET を使用してパラメータ値を設定すると、実際に多くの作業が節約されます。Oracle のデフォルト値を復元する場合、最も効果的な方法は、すべてが Oracle のデフォルト設計に従うように、値を RESET することです。

現在のシナリオを具体的に見ると、パラメーター aq_tm_processes を 0 に設定すると、元のデフォルトの 0 とはまったく異なります。
0 に設定すると、すべての q00 ワーカー プロセスがシャットダウンされ、再起動されません。デフォルトで 0 の場合、q00 ワーカー プロセスを開始できます。

1. テスト環境を構築する

現在生成されているパラメータの内容はこれに似ており、次のようなグローバル設定とインスタンス 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. テスト計画
ここでしなければならないことは、ノード 2 の設定を変更せずに、ノード 1 の aq_tm_processes をデフォルトに戻すことです。

2.1 パラメータを直接リセットしてノード 1 を指定し、検証を再開してみますか?
システム リセットを変更します aq_tm_processes スコープ = spfile sid = 'jy1';
spfile から pfile='/tmp/pfile13.ora' を作成します。

ノード 1 の検証を再開しますか?要件が達成できるかどうかを確認しますか?
具体的な実際の操作は以下のとおりです。

SQL>システム リセットを変更します aq_tm_processes スコープ=spfile sid='jy1'; システムが変更されました。 SQL> spfile から pfile='/tmp/pfile13.ora' を作成します。 ファイルが作成されました。 SQL> パラメータ aq を表示
名前の種類の値
------------------------------------ ---------- --- - -------------------------
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 正しい方法で実験する

上記の基盤をもとに、要件を実装するという考えがあります:
考えてみましょう。グローバル パラメータをリセットすると、ノード 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. 概要

つまり、実際の顧客環境では、要件を満たすために次の 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 サイトの他の関連記事を参照してください。

声明:
この記事はlinuxprobe.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。