Oracle 데이터베이스용 Oracle® Solaris Cluster 데이터 서비스 설명서

인쇄 보기 종료

업데이트 날짜: 2014년 9월
 
 

오류에 대한 사용자 정의 동작 정의

HA for Oracle 데이터베이스 서버 결함 모니터는 다음 유형의 오류를 감지합니다.

  • 서버 결함 모니터에서 데이터베이스 프로브 중에 발생한 DBMS 오류

  • Oracle 데이터베이스가 경보 로그 파일에 로깅하는 경보

  • Probe_timeout 확장 등록 정보로 설정된 시간 안에 응답 수신 실패로 인해 발생하는 시간 초과

이러한 오류 유형에 대한 사용자 정의 동작을 정의하려면 사용자 정의 조치 파일을 만듭니다. 이 절은 사용자 정의 조치 파일에 대한 다음 정보를 포함합니다.

사용자 정의 조치 파일 형식

사용자 정의 작업 파일은 일반 텍스트 파일입니다. 이 파일은 HA for Oracle 데이터베이스 서버 결함 모니터의 사용자 정의 동작을 정의하는 하나 이상의 항목을 포함합니다. 각 항목은 단일 DBMS 오류, 단일 시간 초과 오류 또는 여러 로깅된 경고에 대한 사용자 정의 동작을 정의합니다. 최대 1024개 항목이 사용자 정의 조치 파일에 허용됩니다.


주 -  사용자 정의 조치 파일의 각 항목은 오류에 대해 미리 설정된 조치를 대체하거나, 미리 설정된 조치가 없는 오류에 대해 조치를 지정합니다. 대체하려는 미리 설정된 조치나 미리 설정된 조치가 없는 오류에 대해서만 사용자 정의 조치 파일의 항목을 만듭니다. 변경하지 않을 조치에는 항목을 만들지 마십시오.

사용자 정의 조치 파일의 항목은 세미콜론으로 구분된 키워드-값 쌍의 시퀀스로 구성됩니다. 각 항목은 괄호로 묶습니다.

사용자 정의 조치 파일의 항목 형식은 다음과 같습니다.

{
[ERROR_TYPE=DBMS_ERROR|SCAN_LOG|TIMEOUT_ERROR;]
ERROR=error-spec;
[ACTION=SWITCH|

RESTART|STOP|NONE;]
[CONNECTION_STATE=co|di|on|*;]
[NEW_STATE=co|di|on|*;]
[MESSAGE="message-string"]
}

구분된 키워드-값 쌍 사이와 파일 형식을 지정할 항목 사이에 공백을 사용할 수 있습니다.

사용자 정의 조치 파일에 있는 키워드의 의미 및 허용되는 값은 다음과 같습니다.

ERROR_TYPE

서버 결함 모니터가 감지된 오류의 유형을 나타냅니다. 이 키워드에 허용된 값은 다음과 같습니다.

DBMS_ERROR

오류를 DBMS 오류로 지정합니다.

SCAN_LOG

오류를 경고 로그 파일에 로깅된 경고로 지정합니다.

TIMEOUT_ERROR

오류를 시간 초과로 지정합니다.

ERROR_TYPE 키워드는 선택 사항입니다. 이 키워드를 생략하면 DBMS 오류로 간주됩니다.

ERROR

오류를 식별합니다. 다음 표에 표시된 대로 error-spec의 데이터 유형과 의미는 ERROR_TYPE 키워드 값으로 결정됩니다.

ERROR_TYPE
데이터 유형
의미
DBMS_ERROR
정수
Oracle 데이터베이스에서 생성하는 DBMS 오류의 오류 번호입니다.
SCAN_LOG
따옴표로 묶인 정규 표현식
Oracle 데이터베이스가 Oracle 데이터베이스 경보 로그 파일에 로깅한 오류 메시지의 문자열입니다.
TIMEOUT_ERROR
정수
서버 결함 모니터가 마지막 시작되거나 다시 시작된 이후 연속 시간 초과된 프로브의 개수

ERROR 키워드를 지정해야 합니다. 이 키워드를 생략하면 사용자 정의 조치 파일의 항목이 무시됩니다.

ACTION

서버 결함 모니터가 오류에 대한 응답으로 수행할 조치를 지정합니다. 이 키워드에 허용된 값은 다음과 같습니다.

NONE

서버 결함 모니터가 오류를 무시하도록 지정합니다.

STOP

서버 결함 모니터가 중지되도록 지정합니다.

RESTART

서버 결함 모니터가 SUNW.oracle_server 리소스의 Restart_type 확장 등록 정보 값으로 지정된 엔티티를 중지했다가 다시 시작하도록 지정합니다.

SWITCH

서버 결함 모니터가 데이터베이스 서버 리소스 그룹을 다른 클러스터 노드로 스위치오버하도록 지정합니다.

ACTION 키워드는 선택 사항입니다. 이 키워드를 생략할 경우 서버 결함 모니터가 오류를 무시합니다.

CONNECTION_STATE

오류가 감지될 때 데이터베이스와 서버 결함 모니터 사이에 필요한 연결 상태를 지정합니다. 오류가 감지될 때 연결이 필요한 상태인 경우에만 항목이 적용됩니다. 이 키워드에 허용된 값은 다음과 같습니다.

*

연결 상태에 관계없이 항목이 항상 적용되도록 지정합니다.

co

서버 결함 모니터가 데이터베이스에 연결하려고 시도하는 경우에만 항목이 적용되도록 지정합니다.

on

서버 결함 모니터가 온라인인 경우에만 항목이 적용되도록 지정합니다. 서버 결함 모니터가 데이터베이스에 연결되어 있으면 온라인입니다.

di

서버 결함 모니터가 데이터베이스에서 연결을 끊는 경우에만 항목이 적용되도록 지정합니다.

CONNECTION_STATE 키워드는 선택 사항입니다. 이 키워드를 생략하면 연결 상태에 관계없이 항목이 항상 적용됩니다.

NEW_STATE

오류가 감지된 후에 서버 결함 모니터가 얻어야 하는 데이터베이스와 서버 결함 모니터 간의 연결 상태를 지정합니다. 이 키워드에 허용된 값은 다음과 같습니다.

*

연결 상태에 변화가 없어야 합니다.

co

서버 결함 모니터가 데이터베이스에서 연결 해제하고 데이터베이스에 즉시 다시 연결하도록 지정합니다.

di

서버 결함 모니터가 데이터베이스에서 연결을 끊어야 합니다. 다음에 데이터베이스를 프로브할 때 서버 결함 모니터가 다시 연결됩니다.

NEW_STATE 키워드는 선택 사항입니다. 이 키워드를 생략하면 오류가 감지된 후에 데이터베이스 연결 상태에 변화가 없습니다.

MESSAGE

이 오류가 감지될 때 리소스의 로그 파일에 인쇄될 추가 메시지를 지정합니다. 메시지를 큰 따옴표로 묶어야 합니다. 이 메시지는 오류에 정의된 표준 메시지에 추가적으로 붙습니다.

MESSAGE 키워드는 선택 사항입니다. 이 키워드를 생략하면 이 오류가 감지될 때 리소스의 로그 파일에 추가 메시지가 인쇄되지 않습니다.

DBMS 오류에 대한 응답 변경

각 DBMS 오류에 대한 응답으로 서버 결함 모니터가 수행하는 조치는 Table B–1에 나열된 대로 미리 설정되어 있습니다. DBMS 오류에 대한 응답을 변경해야 하는지 여부를 결정하려면 미리 정의된 조치가 적절한지 DBMS 오류가 데이터베이스에 미치는 영향을 고려하십시오. 예를 들어, 다음의 하위 절을 참조하십시오.

DBMS 오류에 대한 응답을 변경하려면 다음과 같이 키워드가 설정된 사용자 정의 조치 파일의 항목을 만듭니다.

  • ERROR_TYPEDBMS_ERROR로 설정됩니다.

  • ERROR가 DBMS 오류의 오류 번호로 설정됩니다.

  • ACTION이 필요한 조치로 설정됩니다.

중대한 영향을 미치는 오류에 대한 응답

서버 결함 모니터가 무시하는 오류가 여러 세션에 영향을 미치는 경우 서비스 손실을 막으려면 서버 결함 모니터의 조치가 필요할 수 있습니다.

예를 들어 Oracle 데이터베이스 오류 4031: 공유 메모리의 num-bytes바이트를 할당할 수 없음에 대한 조치가 사전 설정되어 있지 않습니다. 하지만 이 Oracle 데이터베이스 오류는 SGA(공유 전역 영역)가 메모리 부족 상태이거나 매우 단편화된 상태이거나 두 상태 모두 적용되는 상황임을 나타냅니다. 이 오류가 단일 세션에만 영향을 미치는 경우 오류를 무시하는 것이 적절할 수 있습니다. 그러나 이 오류가 여러 세션에 영향을 미치는 경우 서버 결함 모니터가 데이터베이스를 다시 시작하도록 지정할 것을 고려하십시오.

다음 예제는 DBMS 오류에 대한 응답을 다시 시작으로 변경하기 위한 사용자 정의 조치 파일의 항목을 보여줍니다.

예 1-3  DBMS 오류에 대한 응답을 다시 시작으로 변경
{
ERROR_TYPE=DBMS_ERROR;
ERROR=4031;
ACTION=restart;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Insufficient memory in shared pool.";
}

이 예제는 DBMS 오류 4031에 대한 미리 설정된 조치를 대체하는 사용자 정의 조치 파일의 항목을 보여줍니다. 이 항목은 다음 동작을 지정합니다.

  • DBMS 오류 4031에 대해 서버 결함 모니터가 수행하는 작업은 다시 시작입니다.

  • 이 항목은 오류가 감지될 때 데이터베이스와 서버 결함 모니터 사이의 연결 상태에 상관없이 적용됩니다.

  • 오류가 감지된 후에 데이터베이스와 서버 결함 모니터 간의 연결 상태는 변화가 없어야 합니다.

  • 이 오류가 감지될 때 리소스의 로그 파일에 다음 메시지가 인쇄됩니다.

    Insufficient memory in shared pool.
사소한 영향을 미치는 오류 무시

서버 결함 모니터가 응답하는 오류의 영향이 사소한 경우 오류를 무시하는 것이 오류에 응답하는 것보다 덜 번거로울 수 있습니다.

예를 들어 Oracle 데이터베이스 오류 4030: out of process memory when trying to allocate num-bytes bytes에 대해 사전 설정된 조치는 다시 시작입니다. 이 Oracle 데이터베이스 오류는 서버 결함 모니터가 전용 힙 메모리를 할당할 수 없음을 나타냅니다. 이 오류의 한가지 가능한 원인은 운영 체제에 사용 가능한 메모리가 부족한 것입니다. 이 오류가 여러 세션에 영향을 미치는 경우 데이터베이스를 다시 시작하는 것이 적절할 수 있습니다. 그러나 해당 세션에 더 이상 개인 메모리가 필요 없기 때문에 이 오류가 다른 세션에 영향을 주지 않을 수 있습니다. 이 경우 서버 결함 모니터가 오류를 무시하도록 지정할 것을 고려하십시오.

다음 예제는 DBMS 오류를 무시하기 위한 사용자 정의 조치 파일의 항목을 보여줍니다.

예 1-4  DBMS 오류 무시
{
ERROR_TYPE=DBMS_ERROR;
ERROR=4030;
ACTION=none;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="";
}

이 예제는 DBMS 오류 4030에 대한 미리 설정된 조치를 대체하는 사용자 정의 조치 파일의 항목을 보여줍니다. 이 항목은 다음 동작을 지정합니다.

  • 서버 결함 모니터가 DBMS 오류 4030을 무시합니다.

  • 이 항목은 오류가 감지될 때 데이터베이스와 서버 결함 모니터 사이의 연결 상태에 상관없이 적용됩니다.

  • 오류가 감지된 후에 데이터베이스와 서버 결함 모니터 간의 연결 상태는 변화가 없어야 합니다.

  • 이 오류가 감지될 때 리소스의 로그 파일에 추가 메시지가 인쇄되지 않습니다.

로깅된 경고에 대한 응답 변경

Oracle 데이터베이스 소프트웨어는 alert_log_file 확장 등록 정보로 식별된 파일에 경보를 기록합니다. 서버 결함 모니터는 이 파일을 스캔하고 조치가 정의된 경고에 대한 응답으로 조치를 수행합니다.

조치가 미리 설정된 로깅된 경고가 Table B–2에 나열됩니다. 미리 설정된 조치를 변경하거나 서버 결함 모니터가 응답하는 새 경고를 정의하려면 로깅된 경고에 대한 응답을 변경합니다.

로깅된 경고에 대한 응답을 변경하려면 다음과 같이 키워드가 설정된 사용자 정의 조치 파일의 항목을 만듭니다.

  • ERROR_TYPESCAN_LOG로 설정됩니다.

  • ERROR는 Oracle 데이터베이스가 Oracle 데이터베이스 경보 로그 파일에 기록한 오류 메시지의 문자열을 식별하는 따옴표로 묶인 정규 표현식으로 설정됩니다.

  • ACTION이 필요한 조치로 설정됩니다.

서버 결함 모니터는 항목이 발생한 순서대로 사용자 정의 조치 파일의 항목을 처리합니다. 로깅된 경고와 일치하는 첫번째 항목만 처리됩니다. 나중에 일치하는 항목은 무시됩니다. 여러 로깅된 경고에 대한 조치를 지정하기 위해 정규 표현식을 사용하는 경우 구체적 항목이 일반적 항목보다 먼저 발생하도록 합니다. 일반적 항목 후에 발생하는 구체적 항목은 무시될 수 있습니다.

예를 들어, 사용자 정의 작업 파일이 정규 표현식 ORA-65ORA-6으로 식별된 오류에 대해 여러 작업을 정의할 수 있습니다. 정규 표현식 ORA-65가 포함된 항목이 무시되지 않도록 하려면 이 항목이 정규 표현식 ORA-6이 포함된 항목 앞에 발생하도록 하십시오.

다음 예제는 로깅된 경고에 대한 응답을 변경하기 위한 사용자 정의 조치 파일의 항목을 보여줍니다.

예 1-5  로깅된 경고에 대한 응답 변경
{
ERROR_TYPE=SCAN_LOG;
ERROR="ORA-00600: internal error";
ACTION=RESTART;
}

이 예제는 내부 오류에 대해 로깅된 경고에 대한 미리 설정된 조치를 대체하는 사용자 정의 조치 파일의 항목을 보여줍니다. 이 항목은 다음 동작을 지정합니다.

  • ORA-00600: internal error 텍스트를 포함하는 로그된 경보에 대해 서버 결함 모니터가 수행하는 작업은 다시 시작입니다.

  • 이 항목은 오류가 감지될 때 데이터베이스와 서버 결함 모니터 사이의 연결 상태에 상관없이 적용됩니다.

  • 오류가 감지된 후에 데이터베이스와 서버 결함 모니터 간의 연결 상태는 변화가 없어야 합니다.

  • 이 오류가 감지될 때 리소스의 로그 파일에 추가 메시지가 인쇄되지 않습니다.

최대 연속 시간 초과 프로브 횟수 변경

기본적으로, 서버 결함 모니터는 두번째 연속 시간 초과된 프로브 후에 데이터베이스를 다시 시작합니다. 데이터베이스 로드가 가벼운 경우 두 개의 연속 시간 초과된 프로브로도 데이터베이스의 정지 상태를 나타내기에 충분합니다. 그러나 로드가 무거운 동안에는 데이터베이스가 제대로 작동하는 경우에도 서버 결함 모니터 프로브가 시간 초과될 수 있습니다. 서버 결함 모니터가 데이터베이스를 불필요하게 다시 시작하지 못하게 하려면 연속 시간 초과된 프로브의 최대 개수를 늘리십시오.


Caution

주의  -  연속 시간 초과 프로브의 최대 개수를 늘리면 데이터베이스의 정지 상태를 감지하는 데 필요한 시간이 늘어납니다.


연속 시간 초과된 프로브의 최대 허용된 개수를 변경하려면 첫번째 시간 초과된 프로브를 제외하고 허용된 각 연속 시간 초과된 프로브에 대해 사용자 정의 조치 파일의 항목을 만듭니다.


주 -  첫번째 시간 초과 프로브에 대한 항목은 만들 필요가 없습니다. 서버 결함 모니터가 첫번째 시간 초과 프로브에 대해 수행하는 작업은 사전 설정되어 있습니다.

마지막으로 허용되는 시간 초과 프로브에 대해 키워드가 다음과 같이 설정된 항목을 만드십시오.

  • ERROR_TYPETIMEOUT_ERROR로 설정됩니다.

  • ERROR는 허용되는 최대 연속 시간 초과 프로브 횟수로 설정됩니다.

  • ACTIONRESTART로 설정됩니다.

첫번째 시간 초과 프로브를 제외하고 나머지 각 연속 시간 초과 프로브에 대해 키워드가 다음과 같이 설정된 항목을 만드십시오.

  • ERROR_TYPETIMEOUT_ERROR로 설정됩니다.

  • ERROR는 시간 초과 프로브의 시퀀스 번호로 설정됩니다. 예를 들어, 두번째 연속 시간 초과 프로브의 경우 이 키워드를 2로 설정합니다. 세번째 연속 시간 초과 프로브의 경우 이 키워드를 3으로 설정합니다.

  • ACTIONNONE으로 설정됩니다.


팁  -  디버깅을 수월하게 하기 위해 시간 초과 프로브의 시퀀스 번호를 나타내는 메시지를 지정합니다.

다음 예는 최대 연속 시간 초과 프로브 횟수를 5로 늘리기 위한 사용자 정의 작업 파일의 항목을 보여 줍니다.

예 1-6  최대 연속 시간 초과 프로브 횟수 변경
{
ERROR_TYPE=TIMEOUT;
ERROR=2;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #2 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=3;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #3 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=4;
ACTION=NONE;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #4 has occurred.";
}

{
ERROR_TYPE=TIMEOUT;
ERROR=5;
ACTION=RESTART;
CONNECTION_STATE=*;
NEW_STATE=*;
MESSAGE="Timeout #5 has occurred. Restarting.";
}

이 예는 최대 연속 시간 초과 프로브 횟수를 5로 늘리기 위한 사용자 정의 작업 파일의 항목을 보여 줍니다. 이러한 항목은 다음 동작을 지정합니다.

  • 서버 결함 모니터는 두번째 연속 시간 초과 프로브부터 네번째 연속 시간 초과 프로브까지 무시합니다.

  • 다섯번째 연속 시간 초과 프로브에 대해 서버 결함 모니터가 수행하는 작업은 다시 시작입니다.

  • 이러한 항목은 시간 초과가 감지될 때 데이터베이스와 서버 결함 모니터 사이의 연결 상태에 상관없이 적용됩니다.

  • 시간 초과가 발생한 후 데이터베이스와 서버 결함 모니터 사이의 연결 상태는 변경되지 않고 유지되어야 합니다.

  • 두번째 연속 시간 초과된 프로브에서 네번째 연속 시간 초과된 프로브가 발생할 때 다음 형태의 메시지가 리소스의 로그 파일에 인쇄됩니다.

    Timeout #number has occurred.
  • 다섯번째 연속 시간 초과된 프로브가 발생할 때 다음 메시지가 리소스의 로그 파일에 인쇄됩니다.

    Timeout #5 has occurred. Restarting.