본문 바로가기

Languages/DataBase

DB2 - [IBM][CLI Driver] SQL30081N 통신 오류가 발견되었습니다




[IBM][CLI Driver] SQL30081N 통신 오류가 발견되었습니다

소제목




{
  
사용 중인 통신 프로토콜: "TCP/IP". 사용 중인 통신 API: "SOCKETS". 오류가 발견된 위치: "10.10.109.201". 오류를 발견한 통신 함수 : "recv". 프로토콜 특정 오류 코드: "10054", "*", "0". SQLSTATE=08001, Connector 'SSO_DB2_UserInfo', Method -Connect- (-30081)


★위의 오류를 구글에서 검색한 결과

http://www.google.co.kr/search?hl=ko&newwindow=1&q=%5BIBM%5D%5BCLI+Driver%5D+SQL30081N&btnG=%EA%B2%80%EC%83%89&lr=lang_ko&aq=f&oq=

어쨌거나, 아래의 상황을 예로 고쳐볼 수 있습니다.


이 문제는 통상적으로 DB 서버의 방화벽 설정에서 DB2 인스턴스 포트가 차단되어 나타나는 경우이므로 방화벽 설정을 먼저 점검하시는것이 좋겠습니다.

질문하신 부분에 대한 답변입니다.
Q1.
-> catalog tcpip node node_name remote host_name server service_name
이걸 클라이언트의 DB2 명령처리기를 통해 수행했습니다. node_name, host_name, service_name은 저희에 맞추었고요.
이게 제대로 입력된건지어떻게 알 수 잇을까요?

S1.
노드카탈로그가 정확하다면 attach 명령 수행시 에러가 발생하지 않을것입니다. 이 테스트를 위한 노드 카탈로그는 다음과 같이 정확히 카탈로그하는
것이 좋습니다. 이후 attach 명령을 수행하시면됩니다.

-- 정확한 노드 카탈로그 명령 --
db2 "catalog tcpip node <임의의노드이름> remote <맵핑된 호스트명 혹은 아이피> server <맵핑된 포트 서비스명 혹은 포트번호> remote_instance <인스턴스 이름> system <호스트명> ostype <OSTYPE>"
예) db2 "catalog tcpip node nhost01 remote 10.10.10.10 server 51000 remote_instance db2inst1 system host01 ostype aix64"

-- Attach 명령 수행 --
db2 "attach to <노드명> user <접속유저> using <접속유저 패스워드>"
db2 "attach to nhost01 user db2inst1 using xxxxxx"

Q2.
. db catalog
-> db2 catalog database db_name as db_alias_name at node node_name authentication client
이것도 클라이언트의 DB2 명령처리기를 통해 수행했더니 (catalog database SSOSYNC as PROD at node IDSINODE authentication client)
SQL1005N 데이터베이스 별명 "PROD"이(가) 이미 로컬 데이터베이스 디렉토리나시스템 데이터베이스 디렉토리에 있습니다.라고 나오네요
다시 설정해야 하는건지 제대로 된건지 잘 모르겠어요.

S2.
기존에 등록된 데이터베이스 카탈로그가 있고 이를 삭제하고 싶으시다면 uncatalog 명령을 통해 처리하시면 됩니다.
물론, 노드정보가 맞고 다른부분도 맞다면 굳이 삭제안하셔도 연결노드 등록시 같이 물려지므로 그냥 사용하셔도 됩니다.

-- 등록된 데이터베이스 카탈로그 삭제 --
db2 "uncatalog db <데이터베이스 알리아스명>"
예) db2 "uncatalog db prod"


Q3.
* authentication 를 확인해 보세요..
-> server 의 환경과 client의 catalog가 제대로 되어 있는지 반드시 확인하세요
이 뜻은 무엇을 말하는지요? 어떻게 확인해야 할까요?

S3.
데이터베이스 카탈로그시 데이터베이스 접속을 위한 인증을 클라이언트에서 이루어지도록 하셨는데 이는 통상적으로
자주 쓰이는 인증방식이 아니므로 서버에서 정한 인증 유형과 현재 카탈로그시 정한 인증 유형이 같은지를 확인해보라는
의미일것입니다. 서버에서 정한 인증 유형을 확인하시기 바랍니다. 통상 인증 유형으로 가장많이 사용 하는것은 SERVER
이며 이는 서버의 계정 정보와 인증방식을 통해 인증하는 방식입니다. 데이터베이스 카탈로그시에 특별히 authentication
옵션을 주지 않으면 기본적으로 authentication server로서 취급됩니다.
authentication client는 클라이언트 계정과 인증 방식으로 인증하는 방식으로 만약, 클라이언트가 windows 플랫폼이라면
로그온 그룹사용시 로그온그룹에 로그온한것만으로도 인증이 되거나, 로그온그룹없이 사용시에는 window 클라이언트 pc 내에
계정이름과 패스워드로서 인증하는 방식을 의미합니다.

-- DB2 인스턴스에서 정한 인증 유형 확인 --
db2 "get dbm cfg" | grep -i "authentication"

출처 : http://www.kdug.kr/index.php?pgname=home/qna&brcode=qna&mode=VV&wrno=1724



}