Maison  >  Article  >  Tutoriel système  >  Ensemble de paramètres Oracle et paramètres de réinitialisation

Ensemble de paramètres Oracle et paramètres de réinitialisation

WBOY
WBOYavant
2024-03-20 19:10:141147parcourir

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

  • 1. Créez un environnement de test
  • 2. Plan de test
  • 3.Résumé

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.

.

Ensemble de paramètres Oracle et paramètres de réinitialisation

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é.

1. Créez un environnement de test

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.

2. Plan de test

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.

2.1 Essayer de réinitialiser directement le paramètre pour spécifier le nœud 1, puis relancer la vérification ?
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.

2.2 Expérimentez de la bonne manière

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.

3.Résumé

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer