この記事では、Oracle パラメータ設定チュートリアルの実際の設定とリセットに関する関連情報を中心に、サンプル コードを通じて詳細に紹介していますので、必要な方は参考にしていただければ幸いです。みんな。
はじめに
この記事では、主に Oracle パラメータの設定とリセットに関する関連内容を紹介し、参考と学習のために共有します。以下では多くを説明しません。
環境: Oracle 10.2.0.5 RAC
要件: ノード 1 の aq_tm_processes をデフォルトに復元する必要があり、ノード 2 の設定を変更しない必要があります
背景の紹介:
10.2 公式ファイルの aq_tm_processes パラメーター。これを参照してください。パラメーターのデフォルト値は 0 です。デフォルト 0 と呼びましょう。
そして、実際、このデフォルト 0 の効果は、それとはまったく異なることがわかりました。 SET を手動で 0 に設定します。
この問題について同僚と議論し、最終的に技術的な詳細を学びました:
Oracle では、Oracle のデフォルト値を復元したい場合、SET を使用してパラメータ値を設定するのが実際にははるかに少ない作業で済みます。この値をリセットすると、すべてが Oracle のデフォルト設計に従います。
現在のシナリオを具体的に見ると、パラメーター aq_tm_processes を 0 に設定すると、元のデフォルトの 0 とはまったく異なります。
0 に設定すると、すべての q00 ワーカー プロセスがシャットダウンされ、再起動されません。デフォルトで 0 の場合、q00 ワーカー プロセスを開始できます。
1. テスト環境を構築します
現在作成されているパラメータの内容は次のようになります:
*.aq_tm_processes=1 jy1.aq_tm_processes=0
インスタンスの設定優先度がわかります。は high です。つまり、この設定の影響は、インスタンス 1 のパラメーターが 0 で、インスタンス 2 のパラメーターが 1 であることです。
つまり、インスタンス 1 は q00 ワーカー プロセスを開始できず、インスタンス 2 はインスタンス 2 です。 q00ワーカープロセスを開始できます。
本番環境をシミュレートするテスト環境を構築します:
最初に aq_tm_processes を 1 に設定します:
alter system set aq_tm_processes = 1 scope=both sid='*'; --create pfile='/tmp/pfile11.ora' from spfile;
この時点で、パラメーター ファイルに次のような設定があります:
*.aq_tm_processes=1
次に aq_tm_processes を設定しますインスタンス 1 から 0 まで
alter system set aq_tm_processes = 0 scope=both sid='jy1'; --create pfile='/tmp/pfile12.ora' from spfile;
このとき、パラメータ ファイルには次のような設定が存在します:
*.aq_tm_processes=1 jy1.aq_tm_processes=0
これは、本番環境の現在の状況をシミュレートします。実際の動作プロセスを見てみましょう:
SQL> SQL> alter system set aq_tm_processes = 1 scope=both sid='*'; System altered. SQL> create pfile='/tmp/pfile11.ora' from spfile; File created. SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 SQL> !ps -ef|grep q00 oracle 1462 27385 0 15:27 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 oracle 1464 1462 0 15:27 pts/1 00:00:00 grep q00 oracle 26534 1 0 15:08 ? 00:00:00 ora_q002_jy1 oracle 31538 1 0 15:21 ? 00:00:00 ora_q000_jy1 SQL> SQL> alter system set aq_tm_processes = 0 scope=both sid='jy1'; System altered. SQL> create pfile='/tmp/pfile12.ora' from spfile; File created. SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 0 SQL> !ps -ef|grep q00 oracle 2044 27385 0 15:28 pts/1 00:00:00 /bin/bash -c ps -ef|grep q00 oracle 2046 2044 0 15:28 pts/1 00:00:00 grep q00 SQL>
0に設定すると、q00プロセスが消え、インスタンスを再起動してもq00プロセスが起動しなくなることがわかります。
2. テスト計画
ここでしなければならないことは、ノード 2 の設定を変更せずに、ノード 1 の aq_tm_processes をデフォルトに戻すことです。
2.1 パラメータを直接リセットしてノード 1 を指定し、検証を再開してみてはいかがでしょうか?
alter system reset aq_tm_processes scope=spfile sid='jy1'; create pfile='/tmp/pfile13.ora' from spfile;
ノード 1 の検証を再開しますか?要件が達成できるかどうかを確認しますか?
具体的な実際の操作は次のとおりです:
SQL> alter system reset aq_tm_processes scope=spfile sid='jy1'; System altered. SQL> create pfile='/tmp/pfile13.ora' from spfile; File created. SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 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 pts/1 00:00:00 grep q00 SQL> startup force ORACLE instance started. Total System Global Area 599785472 bytes Fixed Size 2098112 bytes Variable Size 301993024 bytes Database Buffers 289406976 bytes Redo Buffers 6287360 bytes Database mounted. Database opened. SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 SQL> !ps -ef|grep q00 oracle 4228 1 0 15:33 ? 00:00:00 ora_q000_jy1 oracle 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 pts/1 00:00:00 grep q00 SQL>
ご覧のとおり、答えは明らかに「いいえ」です。
これはインスタンス 1 のパラメータのみをリセットするためですが、以前にグローバル パラメータ * があったため、インスタンス 1 を再起動すると aq_tm_processes パラメータが 1 になることがわかります。
つまり、インスタンス 1 の設定を削除すると、全体の設定は自然に従うことになります。
2.2 実験の正しい方法
上記の基盤を使用して、要件を実装するというアイデアがあります:
それについて考えてみましょう。グローバルパラメータもリセットされると、以前のパラメータに影響しますノード 2 の設定を行うと、次のようになります。ノード 2 の値を個別に設定してから、グローバル パラメータをリセットすることのみが可能です。
alter system set aq_tm_processes = 1 scope=both sid='jy2'; --create pfile='/tmp/pfile14.ora' from spfile; alter system reset aq_tm_processes scope=spfile sid='*'; --create pfile='/tmp/pfile15.ora' from spfile; 重启节点1验证??确认是否可以实现需求? 具体实际操作如下: SQL> alter system set aq_tm_processes = 1 scope=both sid='jy2'; System altered. SQL> create pfile='/tmp/pfile14.ora' from spfile; File created. SQL> alter system reset aq_tm_processes scope=spfile sid='*'; System altered. SQL> create pfile='/tmp/pfile15.ora' from spfile; File created. SQL> startup force ORACLE instance started. Total System Global Area 599785472 bytes Fixed Size 2098112 bytes Variable Size 301993024 bytes Database Buffers 289406976 bytes Redo Buffers 6287360 bytes Database mounted. Database opened. SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 0 SQL> !ps -ef|grep q00 oracle 7446 1 1 15:40 ? 00:00:00 ora_q000_jy1 oracle 7448 1 0 15:40 ? 00:00:00 ora_q001_jy1 oracle 7450 1 0 15:40 ? 00:00:00 ora_q002_jy1 oracle 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 pts/1 00:00:00 grep q00 SQL>
実際の動作テストで検証された答えは、期待値と一致していることがわかります。「はい」です。
注: pfile を作成する手順はすべて削除できます。その際、各ステップの後にこの操作を追加したのは、理論が正しいかどうかを確認したかったからです。
3. 概要
つまり、実際の顧客環境では、要件を満たすために次の 3 つの手順を実行する必要があります:
--保障节点2的设置不变 alter system set aq_tm_processes=1 scope=spfile sid='jy2'; --reset节点1的设置 alter system reset aq_tm_processes scope=spfile sid='jy1'; --reset全局的设置 alter system reset aq_tm_processes scope=spfile sid='*';
関連する推奨事項:
Oracle でのテーブル関数のアプリケーションの簡単な分析
以上がOracle のセットとリセットの使用方法のチュートリアルのケースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。