안녕하세요. odbc를 code c를 이용하여 db2 간단한 쿼리만 날려보려고 하는데요..
source code는 다 작성은 했는데요 궁금한게
SQLDriverConnect함수에서 3번째 인자 값에 어떤걸 넣어줘야할지 감이 안오네요.. (데이터베이스 연결 정보를 구성한 문자열 포인터) 도움 부탁드립니다. ㅠ_ㅠ
안녕하세요.
db2인스턴스의 sqllib/samples/cli/dbconn.c 파일에서 샘플 예제를 찾아보실 수 있습니다.
아래 사이트에서도 확인하실 수 있네요.
http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.sample.doc/doc/cli/s-dbconn-c.html
그리고 SQLDriverConnect 함수 사용한 부분만 발췌해보면 아래와 같습니다.
감사합니다. 많은 도움이 되었습니다. 다행히 뭔가 작동까지는 되었는데 또 다른 문제를 만났어요..
SQL1639N The database server was unable to perform authentication because security-related database manager files on the server do not have the required operating system permissions. SQLSTATE=08001
라는 에러메세지를 검색을 해보니깐 OS인증을 안해줘서 그렇다고해서
root계정으로 /opt/ibm/db2/V10.1/instance/db2iupdt db2inst1 이렇게 명령어를 날리니..
메시지를 보니 db2inst1 인스턴스 업데이트 작업중에 오류가 발생한 것 같습니다.
(The specified instance "db2inst1" does not exist. Specify an existing instance name.)
/opt/ibm/db2/V10.1/instance/db2ilist 해보시고 리스트에 나온 인스턴스명으로 db2iupdt를 실행해보시기 바랍니다.
db2ilist 해보니 하나도 안나오군요..
하지만 /home/db2inst1/sqllib/instance 쪽에 있는 db2ilist해보니 db2inst1이라고 나오긴하네요..
/opt/ibm/db2/V10.1/instance 이경로에서 db2inst1 나오게 하려면 어떻게 해야하는지 궁금하네요..
제가 db2 설치를 할때 비루트로 설치를 했는데 이것도 영향을 받는지 궁금합니다..
비루트 계정으로 설치했을때는 db2nrupdt 명령을 사용한다고 합니다.
db2inst1 계정에서 db2nrupdt 명령으로 실행하시면 됩니다.
아래는 명령어 사용법입니다.
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0050567.html
non-root 설치의 기능 제한으로 보입니다.
기본설정으로는 OS인증을 지원하지 않는다고 합니다. (아래 페이지 참조)
https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/c0050568.html?view=embed
db2rfe명령으로 다음과 같이 설정하여 해결하는 방법이 있습니다. 상세 절차는 아래 페이지를 참고하세요.
http://www.ibm.com/support/knowledgecenter/ko/SSEPGG_9.7.0/com.ibm.db2.luw.qb.server.doc/doc/t0050570.html
1) 샘플 설정파일 및 변경
$HOME/sqllib/instance/db2rfe.cfg 내용 예
SET_ULIMIT=NO
ENABLE_HA=NO
ENABLE_OS_AUTHENTICATION=NO
RESERVE_REMOTE_CONNECTION=NO
**SVCENAME=db2c_db2inst2
**SVCEPORT=48000
RESERVE_TEXT_SEARCH_CONNECTION=NO
**SVCENAME_TEXT_SEARCH=db2j_db2inst2
3) root 사용자로 아래 명령을 수행합니다. $HOME/sqllib/instance/db2fre -f $HOME/sqllib/instance/db2rfe.cfg 위와같은 절차가 번거로우시다면 root사용자로 DB2 서버를 설치하면 해결될 수 있습니다.
감사합니다. 루트로 설치를 하니 아무 것도 셋팅 안해주고 계정이랑 비밀번호 입력해서 하니 잘 되네요..