cci_connect_with_url
설명
url 인자로 전달된 접속 정보를 이용하여 데이터베이스로 연결을 시도한다. CCI에서 HA 기능을 사용하는 경우, 이 함수의 url 인자에 active 서버의 연결 정보 및 장애 발생 시 failover할 standby 서버의 연결 정보를 명시해야 한다. 서버 연결에 성공하면 연결 핸들 ID를 반환하고, 실패하면 에러 코드를 반환한다.
구문
int cci_connect_with_url (char *url [, char *db_user, char *db_password ])
<url> ::=
cci:CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]
<properties> ::= <property> [&<property>]
<property> ::= autocommit=<autocommit_mode>
<property> ::= althosts=<alternative_hosts> [ &rctime=<time>]
<property> ::= login_timeout=<milli_sec>
<property> ::= query_timeout=<milli_sec>
<property> ::= disconnect_on_query_timeout=true|false
<alternative_hosts> ::= <host>:<port> [,<host>:<port>]
<host> := HOSTNAME | IP_ADDR
<time> := SECOND
<milli_sec> := MILLI SECOND
- url : (IN) 서버 연결 정보 문자 스트링
- host : 마스터 데이터베이스의 호스트 이름 또는 IP 주소
- db_name : 데이터베이스 이름
- db_user : 데이터베이스 사용자 이름
- db_password : 데이터베이스 사용자 비밀번호
- autocommit=true/false : 데이터베이스 연결 시 자동 커밋 모드 설정 여부
- althosts=standby_broker1_host, standby_broker2_host, ... : active 서버에 연결할 수 없는 경우, 그 다음으로 연결을 시도(failover)할 standby 서버의 브로커 정보를 나타낸다. failover할 브로커를 여러 개 지정할 수 있고, althosts에 나열한 순서대로 연결을 시도한다.
- rctime : 장애가 발생했던 active 브로커에 연결을 시도하는 주기이다. 장애 발생 후 althosts에 명시한 브로커로 접속하여(failover) 트랜잭션을 종료한 후, rctime만큼 시간이 경과할 때마다 마스터 데이터베이스의 active 브로커에 연결을 시도한다. 기본값은 600초이다.
- login_timeout : 데이터베이스에 로그인 시 타임아웃 값(단위: msec). 이 시간을 초과하면 CCI_ER_LOGIN_TIMEOUT 에러를 반환한다. 기본값은 0이며, 무한 대기를 의미한다.
- query_timeout : 질의 요청 타임아웃 값(단위: msec). 질의 요청에 대한 타임아웃 값을 설정한다. 타임아웃이 발생하면 서버로 보낸 질의 요청에 대한 취소 메시지를 보낸다. 질의를 수행한 함수의 반환 값은 disconnect_on_query_timeout의 설정에 따라 달라질 수 있으며, 서버에 취소 메시지를 보내도 그 요청은 성공할 수 있다.
- disconnect_on_query_timeout : 질의 요청 타임아웃 시 수행 중인 함수의 오류 즉시 반환 여부를 설정한다. 기본값은 false이다. 질의 요청에 대한 타임아웃이 발생했을 때, 이 값이 true이면 서버에 취소 메시지를 보낸 후, 소켓을 닫고 CCI_ER_QUERY_TIMEOUT 에러를 반환한다. 이 경우 사용자는 명시적으로 cci_disconnect 함수를 통해 데이터베이스 연결 핸들을 닫아야 한다. false이면 서버에 취소 메시지를 보낸 후, 서버의 질의 요청에 대한 응답이 올 때 까지 대기한다.
- db_user : (IN) 데이터베이스 사용자 이름
- db_passwd : (IN) 데이터베이스 사용자 비밀번호
리턴 값
- 성공 : 연결 핸들 ID (int)
- 실패 : 에러 코드
에러 코드
- CCI_ER_NO_MORE_MEMORY
- CCI_ER_HOSTNAME
- CCI_ER_INVALID_URL
- CCI_ER_CON_HANDLE
- CCI_ER_CONNECT
- CCI_ER_DBMS
- CCI_ER_COMMUNICATION
- CCI_ER_LOGIN_TIMEOUT
예제
--connection URL string when a property(althosts) specified for HA
URL=cci:CUBRID:192.168.0.1:33000:demodb:::?althosts=192.168.0.2:33000,192.168.0.3:33000
--connection URL string when properties(althosts,rctime) specified for HA
URL=cci:CUBRID:192.168.0.1:33000:demodb:::?althosts=192.168.0.2:33000,192.168.0.3:33000&rctime=600
주의 사항
- URL 문자열에서 콜론(:)과 물음표(?)는 구분자로 사용되므로, URL 문자열에 암호를 포함하는 경우 암호의 일부에 콜론이나 물음표를 사용할 수 없다. 암호에 콜론이나 물음표를 사용하려면 사용자 이름(db_user)과 암호(db_passwd)를 별도의 인자로 지정해야 한다.