database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 3437 게시물 읽기
No. 3437
db2 odbc 관련
작성자
초보DBA(r00tlee)
작성일
2016-10-11 10:57:00
조회수
1,063

 안녕하세요. odbc를 code c를 이용하여 db2 간단한 쿼리만 날려보려고 하는데요..

source code는 다 작성은 했는데요 궁금한게

SQLDriverConnect함수에서 3번째 인자 값에 어떤걸 넣어줘야할지 감이 안오네요.. (데이터베이스 연결 정보를 구성한 문자열 포인터) 도움 부탁드립니다. ㅠ_ㅠ

이 글에 대한 댓글이 총 9건 있습니다.

안녕하세요.

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 함수 사용한 부분만 발췌해보면 아래와 같습니다.

  printf("\n  Connecting to the database %s ...\n", db1Alias);
  sprintf((char *)connStr,
          "DSN=%s; UID=%s; PWD=%s; AUTOCOMMIT=0; CONNECTTYPE=1;",
          db1Alias, user, pswd);
 
  /* connect to a data source */
  cliRC = SQLDriverConnect(hdbc,
                           (SQLHWND)NULL,
                           connStr,
                           SQL_NTS,
                           NULL,
                           0,
                           NULL,
                           SQL_DRIVER_NOPROMPT);
 
 
추가로 SQLDriverConnect 함수 사용법에 대한 내용은 아래를 참고해보시기 바랍니다.
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.apdv.cli.doc/doc/r0000584.html
 
정상규(pajama)님이 2016-10-11 13:58:19에 작성한 댓글입니다.
이 댓글은 2016-10-11 13:59:08에 마지막으로 수정되었습니다.

감사합니다. 많은 도움이 되었습니다. 다행히 뭔가 작동까지는 되었는데 또 다른 문제를 만났어요..

 

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 이렇게 명령어를 날리니..

DBI1446I  The db2iupdt command is running, please wait.
 
 
DB2 installation is being initialized.
 
 The specified instance "db2inst1" does not exist. Specify an existing instance
name.
 
A major error occurred during the execution that caused this program to
terminate prematurely. If the problem persists, contact your technical service
representative.
 
For more information see the DB2 installation log at
"/tmp/db2iupdt.log.14822".
DBI1264E  Errors were encountered in running db2iupdt. Please
      refer to the installation log file /tmp/db2iupdt.log.14822 for more
      information.
 
Explanation:
 
All processed and failed operations have been saved into this log file.
 
User response:
 
Do not modify this file in any way. This file is for IBM Technical
Support reference.
 
이런 메세지가 나오네요.. 로그 파일 열어봐도 똑같은 내용입니다.
 
어디서 잘못되었는지 도움 부탁드립니다. 감사합니다.
초보DBA(r00tlee)님이 2016-10-12 11:15:49에 작성한 댓글입니다.

메시지를 보니 db2inst1 인스턴스 업데이트 작업중에 오류가 발생한 것 같습니다.

(The specified instance "db2inst1" does not exist. Specify an existing instance name.) 

 

/opt/ibm/db2/V10.1/instance/db2ilist 해보시고 리스트에 나온 인스턴스명으로 db2iupdt를 실행해보시기 바랍니다.

 
정상규(pajama)님이 2016-10-12 14:06:32에 작성한 댓글입니다.

 db2ilist 해보니 하나도 안나오군요..

하지만 /home/db2inst1/sqllib/instance 쪽에 있는 db2ilist해보니 db2inst1이라고 나오긴하네요..

 

/opt/ibm/db2/V10.1/instance 이경로에서 db2inst1 나오게 하려면 어떻게 해야하는지 궁금하네요..

초보DBA(r00tlee)님이 2016-10-12 14:35:03에 작성한 댓글입니다.

 제가 db2 설치를 할때 비루트로 설치를 했는데 이것도 영향을 받는지 궁금합니다..

초보DBA(r00tlee)님이 2016-10-12 14:42:00에 작성한 댓글입니다.

비루트 계정으로 설치했을때는 db2nrupdt 명령을 사용한다고 합니다.

db2inst1 계정에서 db2nrupdt 명령으로 실행하시면 됩니다.

아래는 명령어 사용법입니다.

http://www.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0050567.html

 

정상규(pajama)님이 2016-10-12 15:57:23에 작성한 댓글입니다.
db2inst1계정으로 ./db2nrupdt -a CLIENT -k 여기까지 해주고
db2stop force
db2start 하니깐 SQL5043N  Support for one or more communications protocols failed to start successfully. However, core database manager functionality started successfully.
 
이런 메세지가 나오긴 했으나 뭔가 가동은 되는 것 같아서
 
db2 connect to testdb user db2inst1하고 패스워드 입력부분 입력하니깐 아직도 인증뭐라고 나오네요..
 
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
 
ㅠ_ㅠ..
초보DBA(r00tlee)님이 2016-10-12 16:10:36에 작성한 댓글입니다.

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 서버를 설치하면 해결될 수 있습니다.


정상규(pajama)님이 2016-10-12 17:43:46에 작성한 댓글입니다.
이 댓글은 2016-10-12 17:46:41에 마지막으로 수정되었습니다.

감사합니다. 루트로 설치를 하니 아무 것도 셋팅 안해주고 계정이랑 비밀번호 입력해서 하니 잘 되네요..

초보DBA(r00tlee)님이 2016-10-13 09:31:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3440DB2 ODBC WINDOWS 관련하여.. [1]
초보DBA
2016-12-12
727
3439db2 install directory mount 변경 질문 [3]
구광모
2016-10-28
889
3438db2 평일 구하기 질문드립니다 [2]
정상기
2016-10-17
1036
3437db2 odbc 관련 [9]
초보DBA
2016-10-11
1063
3434user_objects 관련.. [2]
초보DBA
2016-09-06
1038
3433as400 버전업후 VB6.0에서 필드 소숫점이 사라지네요.
help
2016-08-15
1073
3432DB2 고수님들 도와주세요
DB2 초보
2016-08-04
1107
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.074초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다