DB2 는 접속 대상을 매번 호스트·포트로 지정하지 않는다. 클라이언트에 노드와 데이터베이스를 먼저 등록(catalog)해 두고 별칭으로 접속한다. Oracle 의 tnsnames.ora 와 비슷한 역할을 클라이언트 디렉터리가 한다.
인스턴스 사용자로 프로파일을 읽어야 db2 명령을 쓸 수 있다.
source /opt/ibm/db2/V11.5/db2profile
db2level
로그인할 때마다 필요하므로 ~/.bash_profile 에 넣어 둔다.
DB2 서버가 있는 호스트와 포트를 이름 하나로 묶는다. 기본 포트는 50000 이다.
db2 catalog tcpip node DB2NODE remote db2server.example.com server 50000
서버의 실제 데이터베이스 이름과 클라이언트에서 쓸 별칭을 연결한다.
db2 catalog database SAMPLE as SAMPLEDB at node DB2NODE
db2 terminate
db2 terminate 는 현재 CLP 백그라운드 프로세스를 끊어 변경 내용을 다음 접속부터 반영하게 한다. 이 단계를 빠뜨리면 방금 등록한 내용이 보이지 않는다.
db2 list node directory
db2 list database directory
db2 connect to SAMPLEDB user dbuser using "${PASSWORD}"
db2 "SELECT current server FROM sysibm.sysdummy1"
db2 connect reset
sysibm.sysdummy1 은 Oracle 의 dual 에 해당하는 한 행짜리 테이블이다.
등록 내용은 수정할 수 없다. 지우고 다시 등록한다. 순서는 데이터베이스가 먼저, 노드가 나중이다.
db2 uncatalog database SAMPLEDB
db2 uncatalog node DB2NODE
db2 catalog tcpip node DB2NODE remote newdb2.example.com server 50001
db2 catalog database SAMPLE as SAMPLEDB at node DB2NODE
db2 terminate
db2cli.ini 를 쓰면 카탈로그 등록 없이도 접속할 수 있다.
[SAMPLEDB]
Database=SAMPLE
Protocol=TCPIP
Hostname=db2server.example.com
Port=50000
unixODBC 를 거치는 경우 드라이버와 DSN 을 각각 등록한다.
[IBM DB2 ODBC DRIVER]
Description = IBM DB2 ODBC Driver
Driver = /opt/ibm/db2/V11.5/lib64/libdb2o.so
[SAMPLEDB]
Driver = IBM DB2 ODBC DRIVER
Database = SAMPLEDB
db2cli validate -dsn SAMPLEDB -connect -user dbuser -passwd "${PASSWORD}"
isql -v SAMPLEDB dbuser "${PASSWORD}"
libdb2.so 를 찾지 못하면 LD_LIBRARY_PATH 에 /opt/ibm/db2/V11.5/lib64 를 넣거나 /etc/ld.so.conf.d/ 에 등록하고 ldconfig 를 돌린다.
.bash_profile 에 db2 connect to ... using <비밀번호> 를 넣는 예시를 보게 되는데, 비밀번호가 평문으로 남고 ps 에도 드러난다. 배치에서는 자격증명을 권한 600 파일로 분리하거나 운영체제 인증을 쓴다.