Rumah  >  Artikel  >  Tutorial sistem  >  Set parameter Oracle dan tetapan semula tetapan

Set parameter Oracle dan tetapan semula tetapan

WBOY
WBOYke hadapan
2024-03-20 19:10:141184semak imbas

Contoh sebenar set dan set semula dalam tetapan parameter Oracle

Persekitaran: Oracle 10.2.0.5 RAC

Keperluan: Proses aq_tm_nod 1 diperlukan untuk dipulihkan kepada lalai, dan tetapan nod 2 dikehendaki kekal tidak berubah

  • 1. Bina persekitaran ujian
  • 2. Pelan ujian
  • 3
Pengenalan latar belakang:

Anda boleh mencari parameter aq_tm_processes daripada fail rasmi 10.2 Anda boleh melihat bahawa nilai lalai parameter ini ialah 0. Mari kita panggil ia lalai 0.

Set parameter Oracle dan tetapan semula tetapan

Kemudian, dalam amalan, kami mendapati bahawa kesan lalai 0 ini berbeza sama sekali daripada kesan menetapkan SETnya secara manual kepada 0.

Menyampaikan perkara ini dengan rakan sekerja, akhirnya saya mempelajari butiran teknikal:
Dalam Oracle, menggunakan SET untuk menetapkan nilai parameter sebenarnya menjimatkan banyak kerja Jika anda ingin memulihkan nilai lalai Oracle, cara yang paling berkesan ialah MENETAPKAN semula nilai, supaya semuanya mengikut reka bentuk lalai Oracle.

Melihat senario semasa secara khusus, jika anda menetapkan parameter aq_tm_processes kepada 0, ia sama sekali berbeza daripada lalai asal 0.

Jika ia ditetapkan kepada 0, semua proses pekerja q00 akan ditutup dan tidak akan dimulakan semula. Jika ia adalah 0 secara lalai, proses pekerja q00 boleh dimulakan.

1. Bina persekitaran ujian
Kandungan parameter yang dihasilkan pada masa ini adalah serupa dengan ini, dengan tetapan global dan tetapan contoh 1, seperti berikut:

*.aq_tm_processes=1
jy1.aq_tm_processes=0
Kami tahu bahawa keutamaan tetapan untuk contoh adalah tinggi, yang bermaksud bahawa kesan tetapan ini ialah parameter contohnya 1 ialah 0, dan parameter contohnya 2 ialah 1.

Iaitu: contoh 1 tidak boleh memulakan proses pekerja q00, tetapi contoh 2 boleh memulakan proses pekerja q00.

Bina persekitaran ujian untuk mensimulasikan pengeluaran:

Set pertama aq_tm_processes kepada 1:

alter system set aq_tm_processes = 1 scope=both sid='*';
--create pfile='/tmp/pfile11.ora' from spfile;
Pada masa ini, akan ada tetapan sedemikian dalam fail parameter:

*.aq_tm_processes=1
Tetapkan proses aq_tm_contoh 1 hingga 0

alter system set aq_tm_processes = 0 scope=both sid='jy1';
--create pfile='/tmp/pfile12.ora' from spfile;
Pada masa ini, akan ada tetapan sedemikian dalam fail parameter:

*.aq_tm_processes=1
jy1.aq_tm_processes=0
Pada ketika ini, situasi semasa persekitaran pengeluaran disimulasikan. Mari kita lihat proses operasi sebenar:

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> 
Anda dapat melihat bahawa selepas menetapkannya kepada 0, proses q00 hilang Walaupun kejadian dimulakan semula, ia adalah sama, dan proses q00 tidak akan bermula lagi.

2. Pelan ujian
Apa yang perlu kita lakukan sekarang ialah memulihkan aq_tm_processes nod 1 kepada lalai tanpa mengubah tetapan nod 2.

2.1 Cuba tentukan terus nod 1 dengan parameter tetapan semula, dan kemudian mulakan semula pengesahan?
alter system reset aq_tm_processes scope=spfile sid='jy1';
create pfile='/tmp/pfile13.ora' from spfile;
Mulakan semula pengesahan nod 1? Sahkan sama ada keperluan boleh dicapai?

Operasi sebenar yang khusus adalah seperti berikut:

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> 
Seperti yang anda lihat, jawapannya adalah jelas: tidak.

Kerana ini hanya akan menetapkan semula parameter contoh 1, tetapi kerana terdapat parameter global *�� sebelum ini, anda akan mendapati bahawa parameter aq_tm_processes akan menjadi 1 selepas memulakan semula contoh 1.
Dalam erti kata lain, jika tetapan misalnya 1 dialih keluar, tetapan keseluruhan secara semula jadi akan diikuti.

2.2 Eksperimen dengan cara yang betul
Dengan asas di atas, kami mempunyai idea untuk melaksanakan keperluan:

Mari kita fikirkan tentangnya. Jika kita menetapkan semula parameter global, ia akan menjejaskan tetapan sebelumnya nod 2. Dengan cara ini, kita hanya boleh menetapkan nilai nod 2 secara berasingan, dan kemudian menetapkan semula parameter global.

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;
Mulakan semula pengesahan nod 1? ? Sahkan sama ada keperluan boleh dicapai?

Operasi sebenar yang khusus adalah seperti berikut:

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> 
Dapat dilihat bahawa jawapan yang disahkan oleh ujian operasi sebenar adalah konsisten dengan jangkaan: ya.

Nota: Semua langkah untuk membuat pfile boleh dialih keluar. Pada masa itu, saya menambah operasi ini selepas setiap langkah kerana saya ingin mengesahkan sama ada teori itu betul.

3 Untuk meringkaskan, dalam persekitaran pelanggan sebenar, tiga langkah berikut perlu diambil untuk melengkapkan keperluan:
--保障节点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='*';
Ringkasan mata pengetahuan dalam artikel ini: Sebenarnya, anda hanya perlu memahami 3 perkara pengetahuan berikut:

Operasi tetapan semula sebenarnya hanya mengalih keluar nilai ini daripada spfile;

Tetapan untuk tahap contoh tertentu mempunyai keutamaan yang lebih tinggi daripada tetapan keseluruhan;

Perhatikan bahawa Oracle sebenarnya melakukan lebih sedikit untuk nilai parameter SET Pemahaman mudah ialah 0 lalai adalah berbeza daripada tetapan 0.

Atas ialah kandungan terperinci Set parameter Oracle dan tetapan semula tetapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam