관리하는 시스템이 많아지고, 체계적으로 시스템이 관리되지 않다 보면 서버에 누가! 무엇을! 설치해 놓았는지 알 수 없게 된다.

컴플라이언스 문제로 서버에 DB2가 설치되었는지 여부를 확인할 필요성이 생길 것이다.

DB2에 대한 어떠한 정보도 모르는 상태에서 DB2가 설치되었는지 확인해 보고, 설치된 경우 인스턴스를 확인해서 DB가 존재하는지 등을 살펴 봐야 할 것이다.

1. DB2가 설치되어 있나?

    DB2 제품을 설치하게 되면 (리눅스, 유닉스 기준) OS가 사용하는 파일 시스템인 /var 하위에 db2 라는 디렉토리가 생긴다. 그 안에는 global.reg 라는 파일이 만들어 지는데 install한 경우는 설치한 정보가 기록되고, 인스턴스를 생성하면 인스턴스 정보들 까지 기록이 된다.

    위 파일을 vi 로 열어 보면 binary code가 들어가 있어 보기가 불편하다. 그래서 /var/db2 라는 디렉토리가 존재하면 db2가 설치가 되었던 시스템이라 판단하면 되겠다.

     좀 더 편히 보기 위해서는 /usr/local/bin 하위에 있는 db2ls 라는 쉘을 실행시켜 시스템 내에 설치된 DB2 버전과 설치 위치, 설치 날짜를 확인할 수 있다.

>> 명령문
     #> cd /usr/local/bin
     #> ./db2ls

>> 결과

Install Path                       Level   Fix Pack   Special Install Number   Install Date                  Installer UID
---------------------------------------------------------------------------------------------------------------------
/db2/V9.8                         9.8.0.3        3                            Thu Jul  7 14:41:31 2011 GMT+09:00             0
/usr/opt/IBM                      9.7.0.4        4                            Wed Jul 20 18:09:11 2011 GMT+09:00             0

 

2. DB2 계정은 어떻게 되지?

엔진 설치 경로를 들어가서 instance라는 디렉토리 하위의 db2ilist, daslist 를 실행하면 생성된 인스턴스 이름을 확인할 수 있다.

>> 명령문
      #> cd /db2/v9.8/intance
      #> ./db2ilist

>> 결과
          db2sdin1

 

3. 사용 중인 DB2는 서버 용인가? 클라이언트 용인가?

한 개의 인스턴스가 존재함을 확인하였다. 해당 인스턴스 계정으로 변경한 후, db2 get dbm cfg 명령어 수행한 결과를 통하여 생성된 인스턴스가 ESE, WSE인지 혹은 클라이언트 용인지 확인할 수 있다.

>> 명령문
     $> db2 get dbm cfg | grep -i 'node type'

>> 결과
      Node type = Enterprise Server Edition with local and remote clients

ESE나 WSE 등의 서버 제품이면 db2_ps 명령어로 서버 프로세스가 실행 중인지 확인하고, db2 list db directory 결과를 통해 로컬 DB가 있는지 확인한다.

>> 명령문
      $> db2_ps

>> 결과 

Node 0
     UID        PID       PPID    C     STIME     TTY     TIME CMD
db2sdin1   19529826   13959310    0       Jul      25        - 18:06 db2sysc 0
    root    4784222   19529826    0       Jul      25        - 0:00 db2ckpwd 0
    root    5832940   19529826    0       Jul      25        - 0:00 db2ckpwd 0
db2sdin1   13500530   19529826    0       Jul      25        - 0:00 db2vend (PD Vendor Process - 258) 0 0
    root   14745766   19529826    0       Jul      25        - 0:00 db2ckpwd 0
lpar1: db2nps ## completed ok
 
Node 1
     UID        PID       PPID    C     STIME     TTY     TIME CMD
db2sdin1   16646246   17563826    1       Jul      22        - 5:52 db2sysc 1
db2sdin1   10616922   16646246    0       Jul      22        - 0:00 db2vend (PD Vendor Process - 258) 0 0
    root   19136564   16646246    0       Jul      22        - 0:00 db2ckpwd 1
    root   19464350   16646246    0       Jul      22        - 0:00 db2ckpwd 1
    root   19726464   16646246    0       Jul      22        - 0:00 db2ckpwd 1
lpar2: db2nps ## completed ok

 

>> 명령문
     $> db2 list db directory

>> 결과

 System Database Directory
 
Number of entries in the directory = 1
 
Database 1 entry:
 
Database alias                       = CNIDB
Database name                        = CNIDB
Local database directory             = /db2cni/dbhome
Database release level               = e.00
Comment                              =
Directory entry type                 = Indirect
Catalog database partition number    = 0
Alternate server hostname            =
Alternate server port number         =
 

위 예제는 pureScale 환경으로 2개의 인스턴스가 실행 중이고, 1개의 DB가 존재한다.

업무 환경, 요건에 따라서 DB 목록들을 파악하여 업무용으로 쓰는 것인지? 사용하지 않는 것인지 ? 등등 확인해서 불필요한 DB나 인스턴스는 제거하여 관리를 해야 될 것이다.

+ Recent posts