연속 가용성을 위한 드라이버 구성
JDBC Thin 드라이버 구성
-
모든 권장 패치가 클라이언트에 적용되었는지 확인합니다. MOS 노트 Client Validation Matrix for Application Continuity(문서 ID 2511448.1)를 참조하십시오.
-
적용 범위 및 성능에 JDBC 명령문 캐시 사용
최상의 적용 범위 및 성능을 위해 Application Server 명령문 캐시 대신 JDBC 드라이버 명령문 캐시를 사용합니다. 따라서 드라이버는 명령문이 닫혀 있고 요청 종료 시 메모리를 비울 수 있음을 알 수 있습니다.
JDBC 명령문 캐시를 사용하려면 연결 속성
oracle.jdbc.implicitStatementCacheSize
(OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)
를 사용합니다. 명령문 캐시는 연결 단위입니다. 캐시 크기에 대한 값은open_cursors
수와 일치합니다. 예:oracle.jdbc.implicitStatementCacheSize=nnn
여기서nnn
는 일반적으로 10에서 100 사이이며 응용 프로그램이 유지 관리하는 열린 커서 수와 같습니다. -
Garbage Collector 튜닝
대부분의 응용 프로그램에서는 기본 불필요한 정보 수집기 튜닝으로도 충분합니다. 대량의 데이터를 반환하고 보관하는 응용 프로그램의 경우 2GB 이상과 같이 더 높은 값을 사용할 수 있습니다. 예:
java -Xms3072m -Xmx3072m
초기 Java 힙 크기(밀리초) 및 최대 힙 크기(mx)에 대한 메모리 할당을 동일한 값으로 설정하는 것이 좋습니다. 이렇게 하면 메모리 힙이 늘어나거나 줄어들 때 시스템 리소스를 사용할 수 없습니다.
-
JDBC 구체적 클래스
JDBC 응용 프로그램의 경우 Oracle은 지원이 중단된
oracle.sql
구체적 클래스 BLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT 또는 ORADATA를 지원하지 않습니다. (MOS 참고 사항 1364193.1, New JDBC Interfaces 참조) 클라이언트에서ORAchk -acchk
를 사용하여 응용 프로그램이 통과하는지 여부를 확인합니다. JDBC 재생 드라이버에 대해 제한된 구체적 클래스 목록은 Oracle JDBC-thin 드라이버 버전 18c 이상부터 다음으로 줄어듭니다.oracle.sql.OPAQUE
,oracle.sql.STRUCT
,oracle.sql.ANYDATA
-
FCF(Fast Connection Failover) 구성
이는 FAN 이벤트에 대한 가입 활성화에 해당합니다.
클라이언트 드라이버의 경우 12c 이상:
- 자동 기능에 권장 URL 사용
- ons.jar(선택적 WALLET jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar 포함)이 CLASSPATH에 있는지 확인합니다.
- 풀 또는 드라이버 등록 정보 fastConnectionFailoverEnabled=true를 설정합니다.
- UCP(권장) 또는 타사 연결 풀
- ONS용 열린 포트 6200(6200이 기본 포트이고 다른 포트가 선택되었을 수 있음)
12c 이전 클라이언트 드라이버의 경우 제공된 주소를 사용합니다.
- oracle.ons.nodes =XXX01:6200, XXX02:6200, XXX03:6200으로 설정합니다.
OCI(Oracle Call Interface) 드라이버 구성
-
모든 권장 패치가 클라이언트에 적용되었는지 확인합니다. MOS 노트 Client Validation Matrix for Application Continuity(문서 ID 251148.1)를 참조하십시오.
-
OCIStmtPrepare
을OCIStmtPrepare2
로 바꿉니다.OCIStmtPrepare()
는 12.2부터 지원이 중단되었습니다. 모든 응용 프로그램은OCIStmtPrepare2()
를 사용해야 합니다. TAC 및 AC는OCIStmtPrepare
를 허용하지만 이 명령문을 재생하지 않습니다. -
OCI 기반 응용 프로그램에 FAN을 사용하려면 다음을 수행하십시오.
- aq_ha_notifications는 서비스에 사전 설정됩니다.
- 자동 작동을 위해 권장되는 접속 문자열 사용
- Configure Clients for FAN Including Optional Wallets에 기술된 대로 oraaccess.xml에 auto_config, 이벤트 및 wallet_location(선택 사항)를 설정합니다.
- O/S 클라이언트 스레드 라이브러리와 응용 프로그램 연결
- ONS에 대해 포트 6200을 엽니다(6200이 기본 포트이고 다른 포트가 선택되었을 수 있음). 12c 이전의 클라이언트 드라이버의 경우 oraccess.xml에 제공된 주소를 사용합니다.
ODP.NET 관리되지 않는 제공자 드라이버 구성
-
모든 권장 패치가 클라이언트에 적용되었는지 확인합니다. MOS 노트 Client Validation Matrix for Application Continuity(문서 ID 251148.1)를 참조하십시오.
-
Oracle Call Interface 기반 응용 프로그램에 FAN을 사용하려면 다음을 수행하십시오.
- aq_ha_notifications는 서비스에 사전 설정됩니다.
- 자동 작동을 위해 권장되는 접속 문자열 사용
- Configure Clients for FAN Including Optional Wallets에 설명된 대로 oraaccess.xml에 onsConfig 및 wallet_location(선택 사항)을 설정합니다.
- ONS용 열린 포트 6200(6200이 기본 포트이고 다른 포트가 선택되었을 수 있음)
- 연결 문자열
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;"
에서 FAN을 설정합니다. - (선택 사항) 연결 문자열
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true; load balancing=true;"
에서도 런타임 로드 밸런싱을 설정합니다.
페일오버에 대한 서비스 속성 사용
Transparent Application Continuity는 미리 정의된 서비스 tp_tls
, tp
, tpurgent_tls
및 tpurgent
에 대해 기본적으로 사용으로 설정되어 있으므로, 이 중 하나를 사용 중인 경우 아무 작업도 수행하지 않아도 됩니다. 또한 FAILOVER_RESTORE
의 DEFAULT
값은 AUTO
입니다.
DBMS_APP_CONT_ADMIN
패키지를 사용하여 서비스에서 제공되는 페일오버 유형을 변경할 수 있습니다. 이 API를 사용하여 애플리케이션 연속성, 투명한 애플리케이션 연속성 또는 투명한 애플리케이션 페일오버(TAF)를 사용으로 설정하거나 페일오버를 완전히 사용 안함으로 설정할 수 있습니다. 새 세션은 새 Failover 유형을 사용합니다. 이 절차를 사용하려면 관리자여야 합니다.
서비스에 대해 투명한 애플리케이션 연속성을 사용으로 설정하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('HIGH');
서비스에 대한 응용 프로그램 연속성을 사용으로 설정하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.ENABLE_AC('TPURGENT');
서비스에 대해 TAF SELECT를 사용으로 설정하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('LOW');
서비스에 대해 TAF BASIC을 활성화하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('MEDIUM', 'SESSION');
서비스에 대한 페일오버를 사용 안함으로 설정하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('HIGH');
서비스를 수정하지 않고 TAF를 사용하려면 연결 문자열에서 TAF에 대해 이전 클라이언트측 구성을 사용합니다.
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(OVERRIDE=TRUE))
유지 관리에 대한 서비스 속성 구성
계획된 유지 관리가 시작되면 비워야 하는 세션이 비워짐으로 표시됩니다. Idle 세션은 점차적으로 해제됩니다. 활성 세션은 해당 세션에서 실행되는 작업이 완료되면 비워집니다. 세션 드레이닝은 Oracle 연결 풀 및 FAN(Fast Application Notification)에 대해 구성된 중간 계층에서 광범위하게 사용됩니다. Oracle Database 18c부터는 데이터베이스가 정지되거나 재배치될 때 데이터베이스 자체가 세션을 소모합니다. 드레이닝은 항상 계획된 유지 관리를 숨기기 위한 최상의 솔루션입니다.
응용 프로그램 연속성과 같은 페일오버 솔루션은 작업이 할당된 시간에 소모되지 않을 경우 폴백됩니다.
DBMS_APP_CONT_ADMIN
패키지를 사용하여 서비스에서 드레인 시간 초과(초) 및 중지 옵션을 설정할 수 있습니다. 이 절차를 사용하려면 관리자여야 합니다.
드레인 시간 초과를 600초로 조정하고 중지 옵션을 IMMEDIATE로 설정하려면 다음과 같이 하십시오.
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('HIGH', 600, 'IMMEDIATE' );
드레인 시간 초과만 조정하려면 다음을 수행합니다.
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('TPURGENT', 600);
선택적 전자 지갑을 포함하여 FAN에 대한 클라이언트 구성
전자 지갑 기반 인증은 Autonomous Database를 사용할 때 FAN을 위한 옵션입니다. TNS 연결과 동일한 전자 지갑을 사용합니다.
JDBC 애플리케이션용
-
다음 jar 파일이 애플리케이션의
CLASSPATH
에 있는지 확인합니다.(ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
-
다음 방법 중 하나로 FAN에 대한 전자 지갑을 지정합니다.
-
전자 지갑과 함께 자동 구성된 ONS를 사용하려면 다음 Java 시스템 속성을 설정합니다.
"-Doracle.ons.walletfile=/replace this with host path/onswallet"
"-Doracle.ons.walletpassword=myONSWalletPassword"
이러한 설정은 풀 또는 연결 단위로 설정할 수 없습니다.
-
ONS를 명시적으로 설정하려면 다음 중 하나를 수행합니다.
-
UCP XML 구성 파일을 사용하여 명시적으로 설정합니다. 예:
<!--?xml version="1.0" encoding="UTF-8"? --> <ucp-properties> <connection-pool connection-pool-name="UCP_pool1" user="dbuser" password="dbuserpasswd" connection-factory-class-name="oracle.jdbc.pool.OracleDataSource" initial-pool-size="10" min-pool-size="5" max-pool-size="15" validate-connection-on-borrow="true" connection-wait-timeout="900" max-connections-per-service="50" sql-for-validate-connection="select 1 from dual" url="jdbc:oracle:thin:@(DESCRIPTION =(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20) (RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=standby-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = MY-SERVICE)))" fastConnectionFailoverEnabled="true" onsConfiguration="nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_with_host_path/onswallet\nwalletpassword=myWalletPassword"> </connection-pool> </ucp-properties>
-
setONSConfiguration()에 대한 호출을 사용하여 UCP 내에서 프로그래밍 방식으로 설정합니다. 예를 들면 다음과 같습니다.
pds.setONSConfiguration("nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_this_with_host_path/onswallet\nwalletpassword=myWalletPassword");
-
-
Oracle 드라이버 버전 12.2 이상을 사용하는 OCI(Oracle Call Interface) 응용 프로그램의 경우
oraaccess.xml
파일의 <default_parameters>
섹션에 다음을 추가합니다.
<default_parameters> (Other settings may be present in this section) <events> true </events> <ons> <auto_config>true</auto_config> <wallet_location>/my_path/onswallet</wallet_location> </ons> </default_parameters>
<wallet_location>
경로는 전자 지갑을 포함하는 디렉토리의 이름이어야 합니다.
기타 매개변수는 <hosts>
, <max_connections>
및 <subscription_wait_timeout>
를 포함하여 oraaccess.xml
의 ons
섹션에서 설정할 수 있습니다.
고유 이벤트 설정 제어를 지원하는 드라이버는 <events>
섹션을 생략하고 대신 드라이버 설정을 사용할 수 있습니다.
기본적으로 ONS가 실패하더라도 데이터베이스에 대한 연결이 설정됩니다. 이 시나리오에서 연결이 실패하도록 하려면 <events>
및 <ons>
와 동일한 레벨에 섹션을 추가할 수 있습니다.
<fan> <subscription_failure_action> error </subscription_failure_action> </fan>
oraaccess.xml
파일을 tnsnames.ora
및 sqlnet.ora
네트워크 파일과 동일한 디렉토리에 배치합니다. 예를 들어, Oracle Instant Client를 사용할 때 이러한 파일은 기본 디렉토리 network/admin
에 있을 수 있습니다. 또는 모든 네트워크 구성 파일을 다른 액세스 가능한 디렉토리에 배치할 수 있습니다. 그런 다음 환경 변수 TNS_ADMIN
를 해당 디렉토리 이름으로 설정합니다.
ODP.Net 관리 제공자
application.config
파일을 사용하여 ONS 구성 및 전자 지갑 위치를 지정합니다. 예:
<oracle.manageddataaccess.client> <version number="*"> <onsConfig mode="remote"> <settings> <setting name="Protocol" value="TCPS" /> <setting name="WALLET_LOCATION" value="C:\myPath\ONS_SSLWallet" /> </settings> <ons database="atp01db"> <add name="nodeList" value="racNode1:6205,racNode2:6205,racNode3:6205" /> </ons> </onsConfig> </version> </oracle.manageddataaccess.client>