Exemples réels de définition et de réinitialisation dans le paramétrage Oracle
Environnement : Oracle 10.2.0.5 RAC
Exigences : le aq_tm_processes du nœud 1 doit être restauré à sa valeur par défaut et les paramètres du nœud 2 doivent rester inchangés
Introduction au contexte :
Vous pouvez trouver le paramètre aq_tm_processes dans le fichier officiel 10.2. Vous pouvez voir que la valeur par défaut de ce paramètre est 0. Appelons-le 0 par défaut.
Ensuite, nous avons en fait constaté que l'effet de ce 0 par défaut est complètement différent de celui du réglage manuel de son SET sur 0.
En communiquant à ce sujet avec des collègues, j'ai finalement appris un détail technique :
Dans Oracle, utiliser SET pour définir les valeurs des paramètres vous évite en fait beaucoup de travail. Si vous souhaitez restaurer la valeur par défaut d'Oracle, le moyen le plus efficace consiste à RÉINITIALISER la valeur, afin que tout suive la conception par défaut d'Oracle.
En regardant le scénario actuel en particulier, si vous définissez le paramètre aq_tm_processes sur 0, il est complètement différent du 0 par défaut d'origine.
S'il est défini sur 0, tous les processus de travail q00 seront arrêtés et ne seront pas redémarrés. S'il est 0 par défaut, le processus de travail q00 peut être démarré.
Le contenu des paramètres actuellement produits est similaire à celui-ci, avec les paramètres globaux et les paramètres de l'instance 1, comme suit :
*.aq_tm_processes=1 jy1.aq_tm_processes=0
Nous savons que la priorité de définition des instances est élevée, ce qui signifie que l'effet de ce paramètre est que le paramètre de l'instance 1 est 0 et le paramètre de l'instance 2 est 1.
Autrement dit : l'instance 1 ne peut pas démarrer le processus de travail q00, mais l'instance 2 peut démarrer le processus de travail q00.
Construire un environnement de test pour simuler la production :
Réglez d'abord aq_tm_processes sur 1 :
alter system set aq_tm_processes = 1 scope=both sid='*'; --create pfile='/tmp/pfile11.ora' from spfile;
À ce stade, il y aura les paramètres suivants dans le fichier de paramètres :
*.aq_tm_processes=1
Définissez aq_tm_processes de l'instance 1 sur 0
alter system set aq_tm_processes = 0 scope=both sid='jy1'; --create pfile='/tmp/pfile12.ora' from spfile;
À ce stade, il y aura les paramètres suivants dans le fichier de paramètres :
*.aq_tm_processes=1 jy1.aq_tm_processes=0
À ce stade, la situation actuelle de l'environnement de production est simulée. Jetons un coup d'œil au processus opérationnel réel :
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>
Vous pouvez voir qu'après l'avoir défini sur 0, le processus q00 disparaît Même si l'instance est redémarrée, le processus q00 ne démarrera plus.
Ce que nous devons faire maintenant est de restaurer les aq_tm_processes du nœud 1 par défaut sans modifier les paramètres du nœud 2.
alter system reset aq_tm_processes scope=spfile sid='jy1'; create pfile='/tmp/pfile13.ora' from spfile;
Redémarrer la vérification du nœud 1 ? Confirmer si les exigences peuvent être respectées ?
Les opérations spécifiques réelles sont les suivantes :
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>
Comme vous pouvez le constater, la réponse est évidemment : non.
Parce que cela ne réinitialisera que les paramètres de l'instance 1, mais comme il y avait un paramètre global *�� auparavant, vous constaterez que le paramètre aq_tm_processes sera 1 après le redémarrage de l'instance 1.
En d'autres termes, si les paramètres de l'instance 1 sont supprimés, les paramètres globaux seront naturellement suivis.
Avec la base ci-dessus, nous avons l'idée de mettre en œuvre les exigences :
Pensons-y : si nous réinitialisons les paramètres globaux, cela affectera les paramètres précédents du nœud 2. De cette façon, nous ne pouvons définir la valeur du nœud 2 que séparément, puis réinitialiser les paramètres globaux.
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;
Redémarrer la vérification du nœud 1 ? ? Confirmer si les exigences peuvent être respectées ?
Les opérations spécifiques réelles sont les suivantes :
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>
On constate que la réponse vérifiée par le test de fonctionnement réel est conforme à l'attente : oui.
Remarque : toutes les étapes permettant de créer un fichier pfile peuvent être supprimées. A cette époque, j'ajoutais cette opération après chaque étape car je voulais confirmer si la théorie était correcte.
Pour résumer, dans l'environnement client réel, les trois étapes suivantes doivent être suivies pour répondre aux exigences :
--保障节点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='*';
Résumé des points de connaissances dans cet article : En fait, il vous suffit de comprendre les 3 points de connaissances suivants :
L'opération de réinitialisation supprime simplement cette valeur du fichier spfile ;
Les paramètres d'un certain niveau d'instance ont une priorité plus élevée que les paramètres globaux ;
Notez qu'Oracle fait en réalité beaucoup moins pour les valeurs des paramètres SET. Une compréhension simple est que la valeur par défaut 0 est différente du paramètre 0.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!