전재 가 필요 하 시 면 출처 를 밝 혀 주세요!(까다 로 운 게 먼저 감 사 드 립 니 다...................................................................................8i 부터 이런 기능 이 있 는데 목적 과 생각 이 모두 좋 지만 현재 응용 에 한계 가 있 기 때문에 본 고 는 TAF 와 관련 된 문 제 를 상세 하 게 연구 하고 자 한다.본 논문 의 테스트 환경 은 Tru 64 V 5.1+Oracle 9.2.0.1 RAC 이다.1.관련 매개 변수 에 대한 설명 은 솔직히 Oacle 에서 네트워크 에 관 한 몇 가지 설정 매개 변 수 는 정말 복잡 합 니 다.많은 사람들 이 어떻게 된 일 인지 알 지 못 합 니 다.흔히 볼 수 있 는 오 류 는'ORA-12514:TNS:listener could not resolve SERVICE'입 니 다.NAME given in connect descriptor"와"ORA-12154:TNS:Could not resolve service name"은 실질 적 으로 똑 같 습 니 다.이런 문 제 를 해결 하려 면 initsid.ora 의 몇 가지 매개 변 수 를 알 아야 합 니 다:DBNAME---database name,즉 데이터 베 이 스 를 만 들 때 제공 하 는 이름 입 니 다.GLOBAL_NAMES---True/false,데이터베이스 도 메 인 을 사용 할 지 여 부 를 설정 합 니 다.DB_DOMAIN---데이터베이스 도 메 인,만약 GLOBALNAMES=True 는 이 인 자 를 요구 합 니 다.SERVICE_NAMES---service names list,서비스 이름,여러 개 있 을 수 있 습 니 다.INSTANCE_NAME---instance name,그리고 SERVICENAMES 역시 817 부터 데이터베이스,인 스 턴 스,서비스 이름 을 분리 할 수 있 도록 지원 한다.기본 instancename 의 값 은 instance 의 SID,즉 환경 변수 ORACLESID 에 대응 하 는 값 입 니 다.817 이전 에는 instance 가 없 었 어 요.name 매개 변 수 는 인 스 턴 스 별로 SID 로 구 분 됩 니 다.Oacle 817 이후 문서 에 따 르 면 SID 는 같은 호스트 의 인 스 턴 스 공유 메모리 와 구별 하기 위해 서 입 니 다.인 스 턴 스 의 유일한 차이 표시 가 아 닙 니 다.인 스 턴 스name 은 인 스 턴 스 를 구별 합 니 다.환경 변수:ORACLESID---817 이전 에는 인 스 턴 스 가 없 었 다.name 매개 변 수 를 사용 할 때 서로 다른 인 스 턴 스 는 SID 로 구 분 됩 니 다.(상세 한 설명 은 위의 initsid.ora 매개 변수 설명 참조)listener.ora 의 몇 가지 인자:GLOBALDBNAME-전역 데이터베이스 이름 은 분포 식 환경 에서 유일 하 게 다른 데이터 베 이 스 를 확인한다.그것 의 값 은 initsid.ora 중 DB 입 니 다.NAME 와 DBDOMAIN 의 조합,즉 GLOBALDBNAME=DB_NAME.DB_DOMAIN,그 중 DB도 메 인 은 이곳 을 설치 하지 않 았 다 면 필요 없 었 을 것 이다.이 매개 변 수 는 분포 식 환경 에서 명확 하 게 지정 하 는 것 을 권장 합 니 다.SERVICE_NAME---서비스 이름,initsid.ora 에서 servicenames list 에서 하나 면 됩 니 다.SID_NAME---대응 환경 변수 ORACLESID 의 값.INSTANCE_NAME---대응 초기 화 매개 변수 instancename。tnsnames.ora 의 몇 가지 인자:servicename---서비스 이름,initsid.ora 에서 servicenames list 에서 하나 면 됩 니 다.sid_name---sid,대응 ORACLESID,매개 변수 인 스 턴 스 를 초기 화 할 수도 있 습 니 다name,instancename and instancename 은 ORACLE 와 같 지 않 습 니 다.SID 시,oracle 은 다른 인 스 턴 스 를 구분 하기 위해 감청 프로 세 스 를 자동 으로 등록 합 니 다.instance_name-817 부터 이 새로운 매개 변 수 를 사용 할 수 있 습 니 다.초기 화 매개 변수 인 instancename。이렇게 되면 매개 변 수 는 매우 복잡 하지만,우리 가 실제로 사용 하 는 것 은 결코 사용 하지 않 을 것 이다.물론 10 월 은 간단 하면 좋 을 것 이다.2.관련 매개 변수 설정 아래 에 저 는 관련 매개 변수의 설정 을 예 로 들 어 설명 하 겠 습 니 다.1.환경 변수:ORACLESID=rac1/22、initsid.ora:db_name=ora92service_names = ora92instance_name=rac1/2global_names=falsedb_domain=""3、listener.ora:SID_LIST_RAC1 =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = ora92)(ORACLE_HOME = /oracle/oracle9/app/oracle/product/9.2.0)(SERVICE_NAME=ora92)(SID_NAME = rac1)))SID_LIST_RAC2 =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = ora92)(ORACLE_HOME = /oracle/oracle9/app/oracle/product/9.2.0)(SERVICE_NAME=ora92)(SID_NAME = rac2)))RAC1 =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.3.1)(PORT = 1522)))))RAC2 =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.2)(PORT=1522)))))3.TAF 의 설정 은 사실 TAF 설정 이 간단 하 다.tnsnames.ora 에 failover=on 을 추가 하면 된다.두 가지 다른 설정 방법 이 있다.1.공용 tns name 방식:===================================================================balance=on)(failover=on)(address= (protocol=tcp)(host=10.1.3.1)(port=1522))(address= (protocol=tcp)(host=10.1.3.2)(port=1522))(connect_data= (service_name=ora92)(failover_==============================================================================================================================================================================================================rac 1=(description=(loadbalance=on) (failover=on) (address= (protocol=tcp)(host=10.1.3.1)(port=1522)) (connect_data= (service_name=ora92)(failover_mode=(type=select)(method=basic)(backup=rac2)(retries=20)(delay=20))))rac2 =(description=(load_balance=on) (failover=on) (address= (protocol=tcp)(host=10.1.3.2)(port=1522)) (connect_data= (service_name=ora92)(failover_mode=(type=select)(method=basic)(backup=rac 1)(retries=20)(delay=20)))=================================================================================================================반대로 자동 으로 돌아 오기 도 한다.물론 posttransaction 방식 으로 TAF 를 테스트 합 니 다.사실 이렇게 하면 예상 한 결 과 를 얻 지 못 할 때 가 있 습 니 다.이 유 는 Oracle 이 인 스 턴 스 에 연결 한 후에 이 인 스 턴 스 에 대한 연결 을 우선 시도 하기 때 문 입 니 다.disconnect 가 있 으 면 클 라 이언 트 측 에서 새로운 요청 이 있 으 면 최근 에 연 결 된 인 스 턴 스 에 대한 연결 을 자동 으로 시도 합 니 다.성공 하지 못 하면 백업 인 스 턴 스 를 연결 하려 고 시도 합 니 다.