Heim  >  Artikel  >  System-Tutorial  >  Oracle-Parametersatz und Reset-Einstellungen

Oracle-Parametersatz und Reset-Einstellungen

WBOY
WBOYnach vorne
2024-03-20 19:10:141185Durchsuche

Tatsächliche Beispiele für das Setzen und Zurücksetzen in der Oracle-Parametereinstellung

Umgebung: Oracle 10.2.0.5 RAC

Anforderungen: Die aq_tm_processes von Knoten 1 müssen auf die Standardeinstellungen zurückgesetzt werden und die Einstellungen von Knoten 2 müssen unverändert bleiben

  • 1. Erstellen Sie eine Testumgebung
  • 2. Testplan
  • 3. Zusammenfassung

Hintergrundeinführung:
Sie finden den Parameter aq_tm_processes in der offiziellen Datei 10.2. Sie können sehen, dass der Standardwert dieses Parameters 0 ist. Nennen wir ihn Standard 0.

Oracle-Parametersatz und Reset-Einstellungen

Dann haben wir tatsächlich herausgefunden, dass die Wirkung dieser Standardeinstellung 0 völlig anders ist als die, wenn man SET manuell auf 0 setzt.
Als ich diese Angelegenheit mit Kollegen kommunizierte, erfuhr ich endlich ein technisches Detail:
In Oracle erspart Ihnen die Verwendung von SET zum Festlegen von Parameterwerten tatsächlich viel Arbeit. Wenn Sie den Standardwert von Oracle wiederherstellen möchten, ist es am effektivsten, den Wert zurückzusetzen, damit alles dem Standarddesign von Oracle folgt.

Wenn Sie sich speziell das aktuelle Szenario ansehen, unterscheidet sich der Parameter aq_tm_processes vollständig vom ursprünglichen Standardwert 0, wenn Sie ihn auf 0 setzen.
Wenn es auf 0 gesetzt ist, werden alle q00-Arbeitsprozesse heruntergefahren und nicht neu gestartet. Wenn es standardmäßig 0 ist, kann der q00-Workerprozess gestartet werden.

1. Erstellen Sie eine Testumgebung

Der aktuell erzeugte Parameterinhalt ähnelt diesem, mit globalen Einstellungen und Instanz-1-Einstellungen, wie folgt:

*.aq_tm_processes=1
jy1.aq_tm_processes=0

Wir wissen, dass die Einstellungspriorität für Instanzen hoch ist, was bedeutet, dass diese Einstellung bewirkt, dass der Parameter für Instanz 1 0 und der Parameter für Instanz 2 1 ist.
Das heißt: Instanz 1 kann den q00-Workerprozess nicht starten, aber Instanz 2 kann den q00-Workerprozess starten.

Erstellen Sie eine Testumgebung, um die Produktion zu simulieren:

Setzen Sie zunächst aq_tm_processes auf 1:

alter system set aq_tm_processes = 1 scope=both sid='*';
--create pfile='/tmp/pfile11.ora' from spfile;

Zu diesem Zeitpunkt gibt es folgende Einstellungen in der Parameterdatei:

*.aq_tm_processes=1

Setzen Sie aq_tm_processes von Instanz 1 auf 0

alter system set aq_tm_processes = 0 scope=both sid='jy1';
--create pfile='/tmp/pfile12.ora' from spfile;

Zu diesem Zeitpunkt gibt es folgende Einstellungen in der Parameterdatei:

*.aq_tm_processes=1
jy1.aq_tm_processes=0

An dieser Stelle wird die aktuelle Situation der Produktionsumgebung simuliert. Werfen wir einen Blick auf den tatsächlichen Betriebsablauf:

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> 

Sie können sehen, dass der q00-Prozess verschwindet, nachdem er auf 0 gesetzt wurde. Auch wenn die Instanz neu gestartet wird, wird der q00-Prozess nicht mehr gestartet.

2. Testplan

Was wir jetzt tun müssen, ist, die aq_tm_processes von Knoten 1 auf die Standardeinstellungen zurückzusetzen, ohne die Einstellungen von Knoten 2 zu ändern.

2.1 Versuchen Sie, den Parameter direkt zurückzusetzen, um Knoten 1 anzugeben, und starten Sie dann die Überprüfung neu?
alter system reset aq_tm_processes scope=spfile sid='jy1';
create pfile='/tmp/pfile13.ora' from spfile;

Überprüfung von Knoten 1 neu starten? Bestätigen Sie, ob die Anforderungen erreicht werden können?
Die spezifischen tatsächlichen Vorgänge sind wie folgt:

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> 

Wie Sie sehen, lautet die Antwort offensichtlich: Nein.
Da dadurch nur die Parameter von Instanz 1 zurückgesetzt werden, es aber zuvor einen globalen Parameter *�� gab, werden Sie feststellen, dass der Parameter aq_tm_processes nach dem Neustart von Instanz 1 1 ist.
Mit anderen Worten: Wenn die Einstellungen für Instanz 1 entfernt werden, werden die Gesamteinstellungen natürlich übernommen.

2.2 Experimentieren Sie richtig

Auf der oben genannten Grundlage haben wir die Idee, die Anforderungen umzusetzen:
Lassen Sie uns darüber nachdenken. Wenn wir die globalen Parameter zurücksetzen, wirkt sich dies auf die vorherigen Einstellungen von Knoten 2 aus. Auf diese Weise können wir den Wert von Knoten 2 nur separat festlegen und dann die globalen Parameter zurücksetzen.

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;

Überprüfung von Knoten 1 neu starten? ? Bestätigen Sie, ob die Anforderungen erreicht werden können?

Die spezifischen tatsächlichen Vorgänge sind wie folgt:

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> 

Es ist ersichtlich, dass die durch den realen Betriebstest verifizierte Antwort mit der Erwartung übereinstimmt: Ja.

Hinweis: Alle Schritte zum Erstellen einer P-Datei können entfernt werden. Damals habe ich diesen Vorgang nach jedem Schritt hinzugefügt, weil ich bestätigen wollte, ob die Theorie richtig war.

3. Zusammenfassung

Zusammenfassend lässt sich sagen, dass in der tatsächlichen Kundenumgebung die folgenden drei Schritte unternommen werden sollten, um die Anforderungen zu erfüllen:

--保障节点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='*';

Zusammenfassung der Wissenspunkte in diesem Artikel: Tatsächlich müssen Sie nur die folgenden 3 Wissenspunkte verstehen:

Der Reset-Vorgang entfernt eigentlich nur diesen Wert aus der SP-Datei;

Einstellungen für eine bestimmte Instanzebene haben eine höhere Priorität als Gesamteinstellungen;

Beachten Sie, dass Oracle für SET-Parameterwerte tatsächlich viel weniger tut. Ein einfaches Verständnis ist, dass sich der Standardwert 0 von der Einstellung 0 unterscheidet.

Das obige ist der detaillierte Inhalt vonOracle-Parametersatz und Reset-Einstellungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen