이 문제점을 방지하도록 스토어드 프로시저를 디버깅하기 전에 데이터베이스를 가져오도록 권장합니다.
로컬 데이터베이스에서 SQL 스토어드 프로시저를 디버깅하는 경우, 다음과 같은 오류 번호 SQL1224N을 수신할 가능성이 있습니다.
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQLSTATE=55032
이 문제점은 Linux 커널(Linux 커널 Bugzilla 버그 #351)에 문제가 있기 때문입니다. 다음 지시사항은 CLI(Call Level Interface) 대신 DB2의 TCPIP 연결 메소드(루프백으로)를 사용하는 임시 문제점 해결 방법입니다. 이 프로시저를 사용하면 디버거가 이전과 동일한 데이터베이스 별명을 사용할 수 있습니다.
아래 2-7 단계를 수행하려면 사용자가 DB2 인스턴스 소유자로 로그인해야 합니다.
db2set db2comm
출력에 키워드 tcpip가 포함되지 않은 경우, 다음 명령을 입력하여 db2comm 레지스트리 변수가 tcpip를 포함하도록 갱신해야 합니다.
db2set db2comm=<existing protocol names>,tcpip
db2comm 레지스트리 변수가 데이터베이스 관리자 시작 시 사용할 프로토콜의 연결 관리자를 판별합니다. 키워드를 쉼표로 구분하여 여러 통신 프로토콜에 이 변수를 설정할 수 있습니다(예: db2set db2comm=tcpip,appc).
db2comm 레지스트리 매개변수가 지정한 프로토콜의 연결 관리자를 시작하도록 db2start 명령을 다시 실행해야 합니다. 아래 7단계에서 DB2를 다시 시작하므로 지금 수행할 필요가 없습니다.
현재 SVCENAME 설정을 확인하려면 다음 명령을 입력하십시오.
db2 get dbm cfg | grep -i svcename
SVCENAME의 설정을 갱신해야 하는 경우, 다음 명령을 입력하십시오.
db2 update dbm cfg using svcename <connection service name>
여기서, <connection service name>은 대소문자를 구분하며 /etc/services에 있는 서비스 포트 이름과 일치해야 합니다(예: db2 update dbm cfg using svcename db2c_db2inst1).
데이터베이스 관리자 구성의 갱신사항은 다음 db2start 명령이 실행될 때까지 적용되지 않습니다. 아래 7단계에서 이를 수행합니다.
db2 catalog tcpip node <nodename> remote <hostname> server <connection service name>
여기서,
카탈로그 명령이 제대로 작동하는지 확인하려면 다음 명령을 실행하십시오.
db2 list node directory
이 명령의 샘플 출력은 다음과 같습니다(공백행은 읽기에 편리하도록 제거되었음).
Node Directory Number of entries in the directory = 1 Node 1 entry: Node name = MYNODE Comment = Protocol = TCPIP Hostname = 127.0.0.1 Service name = db2c_db2inst1
예를 들어,db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 catalog db WASLOOP as WAS at node MYNODE
참고®:
5a-5c 단계의 샘플 출력
5a 단계 전에 WAS라는 로컬 데이터베이스가 이미 작성되었습니다. db2 list db directory 명령으로 다음과 유사한 출력이 작성됩니다.
System Database Directory Number of entries in the directory = 1 Database 1 entry: Database alias = WAS Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
5a 단계 후에, db2 list db directory가 다음과 유사한 출력을 작성합니다.
System Database Directory Number of entries in the directory = 2 Database 1 entry: Database alias = WAS Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0 Database 2 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
5b 단계 후에, db2 list db directory가 다음과 유사한 출력을 작성합니다.
System Database Directory Number of entries in the directory = 1 Database 1 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
5c 단계 후에, db2 list db directory가 다음과 유사한 출력을 작성합니다.
System Database Directory Number of entries in the directory = 2 Database 1 entry: Database alias = WAS Database name = WASLOOP Node name = MYNODE Database release level = 9.00 Comment = Directory entry type = Remote Catalog node number = -1 Database 2 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
catalog db 명령이 제대로 작동하는지 검증하려면 다음 두 명령을 실행하십시오(그리고, 아래 샘플 출력을 참조).
db2 connect to wasloop db2 connect to was
여기서, db2 connect to wasloop가 연결 정보를 인쇄해야 하며 db2 connect to was가 SQL1403N을 제공해야 합니다.
db2 connect to wasloop의 샘플 출력은 다음과 같습니다.
Database Connection Information System Database Directory Database server = DB2/6000 6.1.0 SQL authorization ID = CTSUI Local database alias = WASLOOP
db2 connect to was의 샘플 출력은 다음과 같습니다.
Database Connection Information System Database Directory Database server = DB2/6000 6.1.0 SQL authorization ID = CTSUI Local database alias = WAS
db2 update dbm cfg using authentication client
해당 명령이 제대로 작동하는지 확인하려면 다음 명령으로 새 설정을 표시하십시오.
db2 get dbm cfg
샘플 출력은 다음과 같습니다.
.... Database manager authentication (AUTHENTICATION) = CLIENT ....
db2stop db2start
참고: 모든 활성 데이터베이스 연결을 닫도록 db2stop force를 사용해야 할 수도 있습니다.
예를 들어,db2 attach to MYNODE user myid using mypasswd db2 drop db WAS