Maison  >  Article  >  base de données  >  Cas du didacticiel d'utilisation de définition et de réinitialisation d'Oracle

Cas du didacticiel d'utilisation de définition et de réinitialisation d'Oracle

小云云
小云云original
2017-12-11 15:03:371488parcourir

Cet article vous présente principalement les informations pertinentes sur les cas pratiques de définition et de réinitialisation dans le didacticiel de configuration des paramètres Oracle. L'article le présente en détail à travers un exemple de code. J'espère qu'il pourra s'y référer. aider tout le monde.

Avant-propos

Cet article vous présente principalement le contenu associé à la définition et à la réinitialisation des paramètres Oracle, et le partage pour votre référence et votre étude. Je ne dirai pas grand-chose ci-dessous, prenons. un regard sur les détails.

Environnement : Oracle 10.2.0.5 RAC

Exigences : Les aq_tm_processes du nœud 1 doivent être restaurés 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, en pratique, nous avons constaté que l'effet de ce 0 par défaut est complètement différent de celui de la mise manuelle de son SET à 0.

J'ai discuté de cette question avec des collègues et j'ai finalement appris un détail technique :

Dans Oracle, utiliser SET pour définir les valeurs des paramètres vous fait en fait économiser 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 spécifiquement le scénario actuel, si vous définissez le paramètre aq_tm_processes sur 0, il est complètement différent de la valeur par défaut d'origine de 0.

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. Construisez l'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 paramétrage des instances est élevée, ce qui signifie que l'effet de ce paramétrage est que le paramètre pour l'instance 1 est 0 et le paramètre pour l'instance 2 est 1.

C'est-à-dire : l'instance 1 ne peut pas démarrer le processus de travail q00, et l'instance 2 peut démarrer le processus de travail q00.

Créez un environnement de test pour simuler la production :

Définissez 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 dans le fichier de paramètres Il y aura un tel réglage :

*.aq_tm_processes=1

Ensuite, 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;

A ce moment, il y aura les réglages suivants dans le fichier de paramètres :

*.aq_tm_processes=1
jy1.aq_tm_processes=0

Cela simule le courant situation de l’environnement de production. Jetons un coup d'œil au processus de fonctionnement 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 mis à 0, le processus q00 disparaît, même si l'instance est redémarré. De même, 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 ?

Le fonctionnement spécifique réel est le suivant :

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 des paramètres globaux * 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 La bonne façon d'expérimenter

Avec la fondation ci-dessus, nous avons l'idée de mettre en œuvre les exigences :

Pensons à ce sujet, si l'on considère la situation globale, les paramètres sont également réinitialisés, ce qui affectera les paramètres précédents du nœud 2. Dans ce cas, la valeur du nœud 2 ne peut être définie que séparément, puis les paramètres globaux sont réinitialisés.

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>

Comme vous pouvez le constater, la réponse à la vérification du test de fonctionnement réel est conforme aux attentes : 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 effectuées 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='*';

Recommandations associées :


Explication détaillée de la fonction de traduction et de la fonction de remplacement dans Oracle

À propos de l'utilisation de Contient fonction dans Oracle Résumé

Une brève analyse de l'application des fonctions de table dans Oracle

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn