Rumah > Artikel > Tutorial sistem > Set parameter Oracle dan tetapan semula tetapan
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
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.
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.
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.
*.aq_tm_processes=1 jy1.aq_tm_processes=0Kami 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.
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=1Tetapkan 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=0Pada 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.
alter system reset aq_tm_processes scope=spfile sid='jy1'; create pfile='/tmp/pfile13.ora' from spfile;
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.
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.
--保障节点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='*';
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!