고 가용성 오라클 11g DG 브로커 구성 서비스

전제 :

중앙 도서관 : 10.9.21.178 DB_NAME : DB2

DG 라이브러리 : 10.9.21.179 DB_NAME : DB1

1. 구성 서비스 dbha를 만들

2. 주요 도서관에서 자동으로 hbha 서비스를 시작하는 트리거를 생성

3. 기본 라이브러리에있는 TAF 서비스 기능을 설정합니다

4. 프로그램의 URL, 자동 스위칭 및 서비스를 수정

2 : 몇 가지 개념을 설명

1.TAF (투명 애플리케이션 페일 오버) 애플리케이션, 즉 투명한 페일 오버 방법. 문제가 발생하는 연결을 초기화에 연결 할 수없는 경우,이 함수는 응용 프로그램이 사용할 수있는 서비스에 다시 연결되도록 할 수 있습니다. 활성 트랜잭션이 롤백되기 전에 다시 연결 프로세스,하지만 "특정 조건"에서 TAF는 SELECT 문이 종료되지 않은 보장 할 수 있습니다.

TAF 기능 :

2 : TAF은 일반적으로 두 종류의 TAF를 TAF와 세션 연결 설정들로 분할 될 수있다;

3 : PL / SQL 개발자의 사용은 데이터베이스 인스턴스가 다시 시작하더라도, 데이터베이스에 연결하도록 TAF에 관계없이 RAC 환경 여부의 자체하지만, 일반적으로 RAC 환경에서 사용되는은, 대부분의 응용 프로그램은, 최소한의, 하나의 예를 들어 환경도 TAF를 사용할 수 있습니다 미치는 영향을 줄이기 위해, 당신은 다시 할 필요가 없습니다;

4 : URL을 추가 같은 클라이언트 프로그램으로서, 데이터베이스에 접속할 때 TAF, 즉, 서버 측에 배치 할 수 있고,

아니면 tnsname.ora 구성 FAILOVER_MODE가 = (타입 = SELECT () 메소드 = BASIC)은 (은퇴 = 180)를 클라이언트에 구성된 (DELAY = 15))), 서버는 각각의 서비스를 변경하도록 구성되며, 그 서비스 팀 재산!

시작

dbms_service.modify_service

(Dbha '

FAILOVER_METHOD => 'BASIC',

FAILOVER_TYPE => 'SELECT',

FAILOVER_RETRIES => 15

FAILOVER_DELAY => 5);

종료;

/

5 : TAF를 해제 할 매개 변수 GLOBAL_DBNAME의 listener.ora를 파일을 구성한 후,

6 : 차분 오라클 TAF IP 스캔의 장애 특성과 연결되어있는 경우, IP 스캔 스캔 IP 노드에 오류가있는되고

연결 풀 타임 아웃 값이되지에서 자동으로 프로그램을 다시 연결하는 메커니즘, 또는 프로그램이없는 경우 접속이 끊어

시간에, 당신은 데이터베이스에 다시 연결하기 위해 서비스를 다시 시작해야합니다,하지만 TAF 프로그램 오류를 수있을뿐만 롤백됩니다

거래를 제출하지 않은이 방법을 선택하지 않고, 자동으로 다른 노드에 다시 연결하고 낮은 FAILOVER_TYPE은 => 'SELECT'

정지, 결과는 다른 노드에서 감지되는 것을 계속!

III : 다음과 같이 특정 프로세스이다 :

추가하고 서비스를 시작하기 위해 중앙 도서관에서 3.1,이 서비스는 URL이 사용되는 프로그램을 제공하도록 구성되어 있습니다!

시작하지 않으면 추가 한 다음 서비스를 시작하려면, 다음, 새로운 서비스의 출현에 시작한 후, SERVICE_NAME 매개 변수를 보여 매개 변수 SERVICE_NAME을보고 서비스 등록에 수신이 프로세스 PMON을 자동화하고, 서비스가 데이터베이스 이후에 추가 다시 시작 사라, 효과!

다음과 같이 서비스 패키지를 추가합니다 :

DBMS_SERVICE.CREATE_SERVICE (

VARCHAR2 IN SERVICE_NAME,

NETWORK_NAME IN VARCHAR2,

번호의 DEFAULT NULL의 IN 목표,

부울 DEFAULT NULL의 IN DTP,

부울 DEFAULT NULL의 IN aq_ha_notifications,

VARCHAR2의 DEFAULT NULL의 IN failover_method,

VARCHAR2의 DEFAULT NULL의 IN failover_type,

번호의 DEFAULT NULL의 IN failover_retries,

번호의 DEFAULT NULL의 IN failover_delay,

번호의 DEFAULT NULL의 IN clb_goal,

VARCHAR2의 DEFAULT NULL IN 판);

SQLNET에서 사용되는 서비스의 --The 네트워크 이름은 클라이언트 연결에 대한 설명을 연결합니다. 이는 NET로 제한됩니다

특정 구현하십시오 dbha 서비스 이름을 추가하는 첫번는 제 2 네트워크 서비스 이름

1. 서비스 추가

시작

dbms_service.create_service ( 'dbha', 'dbha');

종료;

/

2. 서비스 시작

시작

DBMS_SERVICE.START_SERVICE ( 'dbha');

종료;

/

당신이 듣기 상태를보고이 시간, 당신은 찾을 방금 추가 한 서비스는 동적 프로세스 PMON에 등록 된 것

 

3. 스톱 서비스 :

시작

DBMS_SERVICE.STOP_SERVICE ( 'dbha');

종료;

/

4. 서비스를 제거합니다 :

시작

DBMS_SERVICE.DELETE_SERVICE ( 'dbha');

종료;

/

마스터 라이브러리 3.2 추가 트리거, 트리거 동작은 앞의 시작에 첨가하고, 차 라이브러리 (읽기 쓰기)이 예제의 역할을 결정하는 것이다

서비스 (dbha)

데이터베이스에 시작 후 트리거 tri_startservice를 만들

알리다

dg_role의 VARCHAR (30);

시작

브이 $ 데이터베이스에서 dg_role에 database_role 선택;

다음 dg_role = 'PRIMARY'경우

DBMS_SERVICE.START_SERVICE ( 'dbha');

종료면;

종료;

/

3.3 TAF 특성의 중앙 도서관 앞에서 엽니 서비스를 추가합니다 :

시작

dbms_service.modify_service

(Dbha '

FAILOVER_METHOD => 'BASIC',

FAILOVER_TYPE => 'SELECT',

FAILOVER_RETRIES => 15

FAILOVER_DELAY => 5);

종료;

/

 

3.4. URL 수정 프로그램

datasource.url = JDBC 오라클 : 얇은 @ (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.9.21.178) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP) (HOST = 10.9.21.179) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbha) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5))))

오라클 RAC 단어 경우 :

datasource.url = JDBC 오라클 : 얇은 @ (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.216) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.217) (PORT = 1521)) (LOAD_BALANCE = YES) (FAILOVER = YES) (CONNECT_DATA = (SERVER 전용 =) (SERVICE_NAME = CBL)는 (FAILOVER_MODE가 = (타입 = SELECT () 메소드 = BASIC)은 (은퇴 = 180) (DELAY = 15))))

지금까지 오라클 11g의 ADG 서비스 가용성 구성이 완료됩니다

요약 : 데이터베이스 종료 중단을 마스터 할 때 시간을 다음 테스트는, 당신은 자동으로 중앙 도서관에 도서관에서 변환 된 다음 트리거 dbha 서비스를 시작하는 당신이 다음 TAF 기능을 구성하고 있기 때문에, 자동으로 등록 PMON은, 그래서, 듣고 (: ORACLE 초기화 또는 진행 오류가 종료 ORA-0133)하지만, 자동으로 새 중앙 도서관에 연결되어 서비스가 불평하지 않습니다!

검증 과정 :

1. 클라이언트 구성의 tnsnames.ora

dbha =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP) (HOST = 10.9.21.178) (PORT = 1521))

(ADDRESS = (PROTOCOL = TCP) (HOST = 10.9.21.179) (PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = dbha)

)

)

2. dbha 서비스는 데이터베이스에 연결

SQL은 * 플러스 : 13 17시 11분 55초 2019 토 7월에 11.2.0.4.0 생산 릴리스

저작권 (C) 1982, 2013, 오라클. 판권 소유.

연결 :

오라클 데이터베이스 11g 엔터프라이즈 에디션 출시 11.2.0.4.0 - 64 비트 생산

에 파티션, OLAP, 데이터 마이닝 및 실제 응용 프로그램 테스트 옵션

연결이 주요 도서관 DB2 있는지 확인

SQL> 브이 $ 인스턴스에서 선택 INSTANCE_NAME;

INSTANCE_NAME

----------------

DB2

3. 비정상 종료 DB2

SQL> 슈 중단

ORACLE 인스턴스가 종료합니다.

4. 인스턴스 이름을 조회는 연결 세션에 앞서 있지만, 중앙 도서관의 DB2가 폐쇄되어 있기 때문에, 카드를 제공하지 않고, DG 라이브러리

DB1은 또한 자동 변환, 그것은 서비스 (약 10 초)를 제공 할 수 없습니다, 다음 DB1에 연결 :

SQL> 브이 $ 인스턴스에서 선택 INSTANCE_NAME;

INSTANCE_NAME

----------------

DB2

브이 $ 인스턴스에서 SQL>를 선택 INSTANCE_NAME은, DB1를 표시 한 후 ----- 카드 약 10 초

INSTANCE_NAME

----------------

DB1

추천

출처www.linuxidc.com/Linux/2019-08/160286.htm