>  기사  >  데이터 베이스  >  Oracle 설정 및 재설정 사용 튜토리얼 사례

Oracle 설정 및 재설정 사용 튜토리얼 사례

小云云
小云云원래의
2017-12-11 15:03:371479검색

이 글은 주로 Oracle 매개변수 설정 튜토리얼에서 설정과 재설정의 실제 사례에 대한 관련 정보를 소개합니다. 이 글은 샘플 코드를 통해 아주 자세하게 소개되어 있으니, 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다. .

머리말

이 글은 주로 Oracle 매개변수 설정 및 재설정에 대한 관련 내용을 소개하며 참고 및 학습을 위해 공유합니다. 아래에서는 자세히 설명하지 않겠습니다. 자세한 소개를 살펴보겠습니다.

환경: Oracle 10.2.0.5 RAC

요구사항: 노드 1의 aq_tm_processes를 기본값으로 복원해야 하며, 노드 2의 설정을 변경하지 않고 유지해야 합니다

배경 소개:

찾을 수 있습니다. 10.2 공식 파일의 aq_tm_processes 매개변수는 다음을 참조하세요. 매개변수의 기본값은 0이므로 기본값 0이라고 부르겠습니다.

그런데 실제로 이 기본값 0의 효과가 그것과 완전히 다르다는 것을 발견했습니다. 수동으로 SET을 0으로 설정합니다.

이 문제를 동료들과 논의하고 마침내 기술적인 세부 사항을 알게 되었습니다.

Oracle에서는 SET을 사용하여 매개변수 값을 설정하는 것이 실제로 훨씬 적은 작업을 필요로 하며, Oracle의 기본값을 복원하려는 경우 가장 효과적인 방법입니다. 모든 것이 Oracle의 기본 설계를 따르도록 이 값을 RESET합니다.

현재 시나리오를 구체적으로 살펴보면 aq_tm_processes 매개변수를 0으로 설정하면 원래 기본값인 0과 완전히 다릅니다.

0으로 설정하면 모든 q00 작업자 프로세스가 종료되고 다시 시작되지 않습니다. 기본적으로 0이면 q00 작업자 프로세스를 시작할 수 있습니다.

1. 테스트 환경 구축

현재 생성된 매개변수 내용은 다음과 유사합니다. 인스턴스 1에 대한 전역 설정 및 설정은 다음과 같습니다.

*.aq_tm_processes=1
jy1.aq_tm_processes=0

우리는 인스턴스에 대한 설정 우선 순위를 알고 있습니다. 즉, 이 설정의 효과는 인스턴스 1의 매개변수가 0이고 인스턴스 2의 매개변수가 1이라는 것입니다.

즉, 인스턴스 1은 q00 작업자 프로세스를 시작할 수 없으며 인스턴스 2는 q00 작업자 프로세스를 시작할 수 있습니다.

프로덕션 시뮬레이션을 위한 테스트 환경 구축:

먼저 aq_tm_processes를 1로 설정:

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

이 때 매개변수 파일에 다음과 같은 설정이 있습니다.

*.aq_tm_processes=1

그런 다음 aq_tm_processes를 설정합니다. 인스턴스 1 대 0

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

이 때 매개변수 파일에 다음과 같은 설정이 있습니다.

*.aq_tm_processes=1
jy1.aq_tm_processes=0

이것은 프로덕션 환경의 현재 상황을 시뮬레이션합니다. 실제 작업 과정을 살펴보겠습니다.

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>

0으로 설정하면 q00 프로세스가 사라지고, 인스턴스를 다시 시작해도 더 이상 q00 프로세스가 시작되지 않는 것을 볼 수 있습니다.

2. 테스트 계획

이제 해야 할 일은 노드 2의 설정을 변경하지 않고 노드 1의 aq_tm_processes를 기본값으로 복원하는 것입니다.

2.1 노드 1을 지정하기 위해 매개변수를 직접 재설정한 후 검증을 다시 시작하시겠습니까?

alter system reset aq_tm_processes scope=spfile sid='jy1';
create pfile='/tmp/pfile13.ora' from spfile;

노드 1 확인을 다시 시작하시겠습니까? 요구사항을 충족할 수 있는지 확인하세요.

구체적인 실제 작업은 다음과 같습니다.

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>

보시다시피 대답은 분명히 '아니요'입니다.

이렇게 하면 인스턴스 1의 매개변수만 재설정되지만 이전에 전역 매개변수 *가 있었기 때문에 인스턴스 1을 다시 시작한 후에는 aq_tm_processes 매개변수가 1이 되는 것을 알 수 있습니다.
즉, 인스턴스 1의 설정을 제거하면 자연스럽게 전체 설정이 적용됩니다.

2.2 올바른 실험 방법

위의 기초를 바탕으로 요구 사항을 구현한다는 아이디어가 있습니다.

생각해보자. 전역 매개변수도 재설정되면 이전 매개변수에 영향을 미칠 것입니다. 노드 2의 설정을 이렇게 하면 노드 2의 값만 개별적으로 설정할 수 있고 전역 매개변수를 재설정할 수 있습니다.

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>

실제 작동 테스트를 통해 검증된 답변은 예상과 일치함을 알 수 있습니다. '예'입니다.

참고: pfile을 생성하는 모든 단계를 제거할 수 있습니다. 당시 이론이 맞는지 확인하고 싶어서 각 단계마다 이 작업을 추가했습니다.

3. 요약

요약하자면 실제 고객 환경에서 요구 사항을 완료하려면 다음 세 단계를 수행해야 합니다.

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

관련 권장 사항:

번역 기능 및 교체에 대한 자세한 설명 in Oracle Function

Oracle의 Contains 함수 사용법 요약

Oracle의 테이블 함수 적용에 대한 간략한 분석

위 내용은 Oracle 설정 및 재설정 사용 튜토리얼 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.