728x90

DB2의 트랜잭션 로그는 LOGRETAIN, LOGARCHMETH1 매개변수를 설정함으로써 보관할 수 있다.


이러한 로그파일을 아카이브 로그라고 한다. 트랜잭션 로그는 DB에서 일어나는 변경사항에 대해 기록한 것이다.

따라서 전체 데이터가 없으면 의미가 없고, 전체 데이터가 있을 때 아카이브 로그를 적용하여 최대한 변경된 내용에 가깝게 데이터를 복구하는데 사용한다. 대부분 다음 순서와 같이 운영될 것이다.


1. 전체 백업

2. 로그 쌓임

3. 1번부터 다시 반복


전체 백업은 자주 수행하지 않을 수도 있다. 그래서 아카이브 로그를 오래 보관할 필요가 있는 곳도 있는데 이렇게 되면 아카이브 로그를 보관할 공간에 대한 부담이 점차 커지게 된다. 그래서 보통 이전 시점으로 복구할 가능성이 낮다고 하면 전체 백업을 수행하고 이전 전체 백업 이후로 쌓인 아카이브 로그 파일은 삭제한다.


아카이브 로그는 파일시스템에 저장되며 이는 현재 DB에서 사용중인 트랜잭션 로그 파일과는 위치를 분리하는 것이 안전하다.

직접 rm, del명령으로 아카이브 로그 파일을 삭제할 수도 있으나 좀 더 안전하게 삭제하려면 prune 명령을 사용한다.


prune 명령을 사용하는 방법은 다음과 같다.

>>-PRUNE-------------------------------------------------------->
>--+-HISTORY--timestamp--+-------------------+--+------------+-+-><
   |                     '-WITH FORCE OPTION-'  '-AND DELETE-' |
   '-LOGFILE PRIOR TO--log-file-name---------------------------'

prune 명령은 시점을 지정하여 복구 실행기록 파일을 정리할 때 사용한다.
db2 prune history 20120819 와 같이 사용할 경우 이 날짜 이전의 모든 기록은 삭제된다.
db2 prune history 20120819 and delete 옵션을 사용했을때는 그 시점 이전의 기록을 참조하여 연관된 아카이브 파일이 더 이상 필요하지 않으면 삭제한다.

logfile prior to 옵션은 지정한 로그파일 이전의 로그를 삭제하는 옵션으로 logretain 매개변수가 recovery로 설정되어 있을 때만 사용가능하다. logretain을 설정했을 때는 logarchmeth1 또한 logretain으로 설정되고 현재 사용중이 로그파일과 아카이브 로그가 같은 위치에 저장되므로 이 옵션으로 아카이브 로그를 삭제하는 편이 안전하다. 이 옵션으로 아카이브 로그를 삭제하면 현재 사용중인 로그 파일은 삭제하지 않는다.



http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0001992.htm



728x90
728x90

과거 사용했던 인포믹스 제품 중 onLine과 SE(Standard Engine)이 있다.

 

Database servers
❑ IBM Informix onLine Version 5.x
❑ IBM Informix SE Version 5.x

 

Additional products
❑ IBM Informix NET Version 5.x
❑ IBM Informix STAR Version 5.x

 

Online은 현재 Informix 최신 버전인 11.70과 유사한 RDBMS다.

트랜잭션을 지원하고 물리 로깅, 논리 로깅, 체크포인트등 기본적인 아키텍쳐도 거의 같다.

 

다른점이라면 Informix STAR를 설치했을 때 Client/Server 구성이 가능하다.

STAR의 데몬 프로세스(sqlexecd)을 구동해야 클라이언트의 요청을 받을 수 있다.

Informix NET은 클라이언트에서 online 또는 SE를 연결하기 위한 모듈이다.

 

 

참조

IBM Informix NET and IBM Informix STAR - Installation and Configuration Guide
IBM Informix onLine Database Server - Administrator’s Guide
UNIX Products - Installation Guide

http://www.iiug.org/faqs/informix-faq/ifaq01.htm.1#1.4.3

728x90
728x90


Question

With IBM® Informix® Server™ how can I confirm my updated NETTYPE settings have been taken into effect?

Answer

This can be established with onstat -g ntu or onstat -g ntt output, by reviewing the q-limitsvalue which is displayed in the header section of the results. This value represents the size of a pre-allocated array used to store information about client connections.

The value is calculated as 100 + (poll_threads * 0.7 * num_connections).


Example 1

$ onstat -c | grep ^NETTYPE
NETTYPE soctcp,1,233,NET

Using the formula above: 100 + (1 * 0.7 * 233) = 263


$ onstat -g ntt | head -6

IBM Informix Dynamic Server Version 11.70.FC4 -- on-Line -- 

  global network information:

  #netscb connects  read  write q-free  q-limits  q-exceed alloc/max

   9/  10 3         25    25    1/ 1     263/ 10  0/ 0     1/ 1


Example 2

$ onstat -c | grep ^NETTYPE
NETTYPE tlitcp,2,500,NET

Using the formula above: 100 + (2 * 0.7 * 500) = 800


$ onstat -g ntt | head -6

IBM Informix Dynamic Server Version 11.70.FC4 -- on-Line -- 

  global network information:

  #netscb connects  read  write q-free  q-limits  q-exceed alloc/max

   9/   9   0         0     0     0/ 0    800/ 10   0/ 0     0/ -1


As an alternative to using onstat, you can query sysmaster:sysnetglobal and review the value for column ng_free_thres.


http://www-01.ibm.com/support/docview.wss?uid=swg21592040

728x90
728x90

Exporting query results to a remote machine with MySql (an alternative to SELECT INTO OUTFILE)


MySql’s SELECT INTO OUTFILE syntax provides a nice way to export the results of a query into a tab delimited (by default) text file. Unfortunately, the file has to be created on the MySql host (by a user with file permissions), rendering it unsuitable for dumping the data to a remote machine. If you wish to dump the query results to a different machine then the mysql docssuggest redirecting the output from the mysql command line client:


리모트 호스트에서는 SELECT INTO OUTFILE 문을 사용할 수 없으므로 표준출력(stdout)으로 데이터를 추출해야 한다는 이야기.

The SELECT … INTO OUTFILE statement is intended primarily to let you very quickly dump a table to a text file on the server machine. If you want to create the resulting file on some client host other than the server host, you cannot use SELECT … INTO OUTFILE. In that case, you should instead use a command such as mysql -e “SELECT …” > file_name to generate the file on the client host.

This works great but the default output you’ll get from redirecting STDOUT won’t be the same as using SELECT INTOOUTFILE. The two main (only?) differences are, in the redirected output, the addition of the headers and that NULL values are output as NULL instead of the special \N (backslash-N) sequence. We can fix both of these things by specifying an optional switch (skip-column-names) to the mysql client and employing some sed magic.

mysql -h"my-host" -u"my-user" -p"my-password" -e"select * from my-database.my-table" --skip-column-names |\
  sed -e 's/[[:<:]]NULL[[:>:]]/\\N/g' >\
  my-export-directory/my-table.csv`

That sed magic is replacing instances of NULL, surrounded by some whitespace, with the special \N escape sequence.

Oh, and it’s probably worth mentioning that this is only really important if you want to load this data back into mysql (using LOAD DATA INFILE for example). If you were to load the default output, from redirecting the mysql client, back into mysql then you’d end up with an unwanted header row and NULL strings (or 0 for numeric columns) where you expected actual NULL values.

It took us a while to figure this out so I thought it might be of some use to others.


http://chrisroos.co.uk/blog/2008-04-10-exporting-query-results-to-a-remote-machine-with-mysql-an-alternative-to-select-into-outfile

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

728x90
728x90

If you want to export your mysql databases into a csv file here is simple tip for you.

You need to run the following command from your terminal

mysql -u exampleuser -p letmein exampledb -B -e "select * from \`person\`;" | sed ‘s/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > filename.csv

Here is some sample output of the above

"id","username","group","password"
"1″,"male","admin","5f4dcc3b5aa765d61d8327deb882cf99″
"2″,"newton","admin","5f4dcc3b5aa765d61d8327deb882cf99″
"3″,"ruchi","admin","5f4dcc3b5aa765d61d8327deb882cf99″
"4″,"ruchi1″,"staff","5f4dcc3b5aa765d61d8327deb882cf99″
"5″,"tej","staff","5f4dcc3b5aa765d61d8327deb882cf99″
"6″,"tej1″,"admin","5f4dcc3b5aa765d61d8327deb882cf99″

And now for the explanation:

Starting with the MySQL command.

The -u option is you need to enter the username

The -p option is you need to enter the password

"exampledb" -- Database name

The -B option will delimit the data using tabs and each row will appear on a new line.

The -e option denotes the command to run once you have logged into the database.

In this case we are using a simple SELECT statement.

Onto sed. The command used here contains three seperate sed scripts:

s/\t/","/g;s/^/"/ ---> this will search and replace all occurences of ‘tabs' and replace them with a ",".

;s/$/"/; ---> This will place a " at the start of the line.

s/\n//g ----> This will place a " at the end of the line.

filename.csv ---> Name of the file you want to export.

After running the result set through sed we redirect the output to a file with a .csv extension.


http://www.debianadmin.com/export-mysql-database-into-a-csv-file.html

728x90
728x90

Question

If you want to restore a table space level backup image, the table space must exist prior to the restore operation, and the restore operation must be targeted to the same database. (This does not apply to version 9.5 or later if you are performing a RESTORE ... REBUILD operation using table space restores.)

Answer

Symptom: SQL2549N (the database was not restored because either all of the table spaces in the backup image are inaccessible, or one or more table space names in list of table space names to restore are invalid) while trying to restore a table space-level backup with redirect.

Cause: SQL2549N is returned if the table space has been dropped prior to the restore operation.

Action: Do not drop a table space if that table space is to be restored from a table space-level backup image, even if you want to change the container path. If you want to restore a table space level backup image, the table space must exist prior to the restore operation, and the restore operation must be targeted to the same database.



728x90
728x90

db2pd 명령은 DB2® 메모리 세트에서 신속하면서도 즉각적으로 정보를 리턴할 수 있기 때문에 문제점 해결에 사용됩니다.

개요

이 도구는 래치를 획득하거나 엔진 자원을 사용하지 않고 정보를 수집합니다. 그러므로 db2pd가 정보를 수집하는 동안 변경되고 있는 정보를 검색하는 것이 가능하며 예측됩니다. 따라서 데이터가 완전히 정확하지는 않을 수도 있습니다. 변경되는 메모리 포인터가 발생하면, db2pd가 비정상적으로 종료되지 않도록 신호 핸들러가 사용됩니다. 이로 인해 출력에 "데이터 구조 변경으로 명령이 강제로 종료됨"과 같은 메시지가 표시될 수 있습니다. 그럼에도 불구하고 이 도구는 문제점 해결에 유용할 수 있습니다. 래칭 없이 정보를 수집할 경우의 두 가지 이점은 신속한 검색 및 엔진 자원 경합이 없다는 점입니다.

특정 SQLCODE, ZRC 코드 또는 ECF 코드가 발생할 때 데이터베이스 관리 시스템에 대한 정보를 캡처하려면, db2pdcfg -catch 명령을 사용하여 이를 수행할 수 있습니다. 오류가 발생한 경우, db2cos(콜아웃 스크립트)가 시작됩니다. db2cos 스크립트를 동적으로 변경하여 db2pd 명령, 운영 체제 명령 또는 문제점을 해결하는 데 필요한 기타 명령을 실행할 수 있습니다. 템플리트 db2cos 스크립트 파일은 UNIX 및 Linux의 경우 sqllib/bin에 있습니다. Windows 운영 체제의 경우, db2cos는 $DB2PATH\bin 디렉토리에 있습니다.

새 노드를 추가하는 경우, db2pd -addnode 명령을 선택적 oldviewapps  detail 매개변수와 함께 사용하여 노드를 추가하고 있는 데이터베이스 파티션 서버에서 조작 진행을 모니터하여 자세한 정보를 얻을 수 있습니다.

현재 사용 중이거나 어떤한 이유로 비활성화된 이벤트 모니터 목록이 필요하면, db2pd -gfw 명령을 실행하십시오. 또한 이 명령은 각 고속 기록기 EDU에 대해 이벤트 모니터가 데이터를 기록하는 대상에 대한 정보와 통계를 리턴합니다.

예 1: 잠금 대기 진단

db2pd -db databasename -locks -transactions -applications -dynamic을 실행하는 경우, 결과는 다음과 유사합니다.
Locks:
Address            TranHdl Lockname                   Type Mode Sts Owner Dur HldCnt Att    ReleaseFlg
0x07800000202E5238 3       00020002000000040000000052 Row  ..X  G   3     1   0      0x0000 0x40000000
0x07800000202E4668 2       00020002000000040000000052 Row  ..X  W*  2     1   0      0x0000 0x40000000
-db 데이터베이스 이름 옵션을 사용하여 지정한 데이터베이스의 경우, 첫 번째 결과로 해당 데이터베이스에 대한 잠금이 표시됩니다. 이 결과는 TranHdl 2가 TranHdl 3에서 보유한 잠금에 대해 대기 중임을 표시합니다.
Transactions:
Address            AppHandl [nod-index] TranHdl Locks State Tflag      Tflag2     Firstlsn       Lastlsn        LogSpace SpaceReserved TID            AxRegCnt GXID
0x0780000020251B80 11       [000-00011] 2       4     READ  0x00000000 0x00000000 0x000000000000 0x000000000000 0        0             0x0000000000B7 1        0
0x0780000020252900 12       [000-00012] 3       4     WRITE 0x00000000 0x00000000 0x000000FA000C 0x000000FA000C 113      154           0x0000000000B8 1        0
TranHdl 2는 AppHandl 11과 연관되고 TranHdl 3은 AppHandl 12와 연관됨을 알 수 있습니다.
Applications:
Address            AppHandl [nod-index] NumAgents CoorPid Status        C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0x07800000006879E0 12       [000-00012] 1         1073336 UOW-Waiting   0        0         17       1         *LOCAL.burford.060303225602
0x0780000000685E80 11       [000-00011] 1         1040570 UOW-Executing 17       1         94       1         *LOCAL.burford.060303225601
AppHandl 12는 동적문 17, 1을 마지막으로 실행했음을 알 수 있습니다. ApplHandl 11은 동적문 17, 1을 현재 실행 중이며 명령문 94, 1을 마지막으로 실행했습니다.
Dynamic SQL Statements:
Address            AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x07800000209FD800 17     1       1      1      2      2      update pdtest set c1 = 5
0x07800000209FCCC0 94     1       1      1      2      2      set lock mode to wait 1
텍스트 컬럼이 잠금 시간종료와 연관된 SQL문을 표시함을 알 수 있습니다.

예 2: -wlocks 매개변수를 사용하여 대기 중인 잠금 모두 캡처

db2pd -wlocks -db pdtest를 실행하는 경우, 다음과 유사한 결과가 생성됩니다. 첫 번째 응용프로그램(AppHandl 47)은 테이블에서 삽입을 수행 중이고 두 번째 응용프로그램(AppHandl 46)은 해당 테이블에서 선택을 수행 중임을 표시합니다.
venus@boson:/home/venus =>db2pd -wlocks -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:22
Locks being waited on :
AppHandl [nod-index] TranHdl    Lockname                   Type    Mode Conv Sts CoorEDU    AppName  AuthID   AppID
47       [000-00047] 8          00020004000000000840000652 Row     ..X       G   5160       db2bp    VENUS    *LOCAL.venus.071207213730
46       [000-00046] 2          00020004000000000840000652 Row     .NS       W   5913       db2bp    VENUS    *LOCAL.venus.071207213658

예 3: -apinfo 매개변수를 사용하여 잠금 소유자 및 잠금 대기자에 대한 자세한 런타임 정보 캡처

예 2와 동일한 조건에서 다음 샘플 출력이 생성되었습니다.
venus@boson:/home/venus =>db2pd -apinfo 47 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:30
Application :
  Address :                0x0780000001676480
  AppHandl [nod-index] :   47       [000-00047]
  Application PID :        876558
  Application Node Name :  boson
  IP Address:              n/a
  Connection Start Time :  (1197063450)Fri Dec  7 16:37:30 2007
  Client User ID :         venus
  System Auth ID :         VENUS
  Coordinator EDU ID :     5160
  Coordinator Partition :  0
  Number of Agents :       1
  Locks timeout value :    4294967294 seconds
  Locks Escalation :       No
  Workload ID :            1
  Workload Occurrence ID : 2
  Trusted Context :        n/a
  Connection Trust Type :  non trusted
  Role Inherited :         n/a
  Application Status :     UOW-Waiting
  Application Name :       db2bp
  Application ID :         *LOCAL.venus.071207213730
  ClientUserID :           n/a
  ClientWrkstnName :       n/a
  ClientApplName :         n/a
  ClientAccntng :          n/a
  List of inactive statements of current UOW :
    UOW-ID :          2
    Activity ID :     1
    Package Schema :  NULLID
    Package Name :    SQLC2G13
    Package Version :
    Section Number :  203
    SQL Type :        Dynamic
    Isolation :       CS
    Statement Type :  DML, Insert/Update/Delete
    Statement :       insert into pdtest values 99
venus@boson:/home/venus =>db2pd -apinfo 46 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:39
Application :
  Address :                0x0780000000D77A60
  AppHandl [nod-index] :   46       [000-00046]
  Application PID :        881102
  Application Node Name :  boson
  IP Address:              n/a
  Connection Start Time :  (1197063418)Fri Dec  7 16:36:58 2007
  Client User ID :         venus
  System Auth ID :         VENUS
  Coordinator EDU ID :     5913
  Coordinator Partition :  0
  Number of Agents :       1
  Locks timeout value :    4294967294 seconds
  Locks Escalation :       No
  Workload ID :            1
  Workload Occurrence ID : 1
  Trusted Context :        n/a
  Connection Trust Type :  non trusted
  Role Inherited :         n/a
  Application Status :     Lock-wait
  Application Name :       db2bp
  Application ID :         *LOCAL.venus.071207213658
  ClientUserID :           n/a
  ClientWrkstnName :       n/a
  ClientApplName :         n/a
  ClientAccntng :          n/a
  List of active statements :
   *UOW-ID :          3
    Activity ID :     1
    Package Schema :  NULLID
    Package Name :    SQLC2G13
    Package Version :
    Section Number :  201
    SQL Type :        Dynamic
    Isolation :       CS
    Statement Type :  DML, Select (blockable)
    Statement :       select * from pdtest

예 4: 잠금 문제점 고려 시 콜라웃 스크립트 사용

콜아웃 스크립트를 사용하려면 db2cos 출력 파일을 찾으십시오. 데이터베이스 관리자 구성 매개변수 diagpath가 파일 위치를 제어합니다. 출력 파일의 컨텐츠는 db2cos 스크립트 파일에 입력하는 명령에 따라 다릅니다. db2cos 스크립트 파일에 db2pd -db sample -locks 명령이 포함된 경우 제공된 출력 예는 다음과 같습니다.
Lock Timeout Caught
Thu Feb 17 01:40:04 EST 2006
Instance DB2
Database: SAMPLE
Partition Number: 0
PID: 940
TID: 2136
Function: sqlplnfd
Component: lock manager
Probe: 999
Timestamp: 2006-02-17-01.40.04.106000
AppID: *LOCAL.DB2...
AppHdl:
...
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:06:53
Locks:
Address    TranHdl Lockname                   Type Mode Sts Owner Dur HldCnt Att Rlse
0x402C6B30 3       00020003000000040000000052 Row  ..X  W*  3     1   0      0   0x40

출력에서 W*는 시간종료가 발생한 잠금을 표시합니다. 이 경우, 잠금 대기가 발생했습니다. 잠금이 상위 모드로 변환되는 경우에는 잠금 시간종료도 발생할 수 있습니다. 이는 출력에 C*로 표시됩니다.

결과를 트랜잭션, 응용프로그램, 에이전트 또는 db2cos 파일에 기타 db2pd 명령이 제공한 출력이 있는 SQL문에 맵핑할 수 있습니다. 출력 범위를 좁히거나 기타 명령을 사용하여 필요한 정보를 수집할 수 있습니다. 예를 들어, db2pd -locks wait 매개변수를 사용하여 활성화된 대기 상태인 잠금만 인쇄할 수 있습니다. 또한 -app  -agent 매개변수를 사용할 수 있습니다.

예 5: 응용프로그램을 동적 SQL문에 맵핑

db2pd -applications -dynamic 명령은 동적 SQL문에 대한 현재 및 마지막 앵커 ID와 명령문 고유 ID를 보고합니다. 따라서 응용프로그램에서 동적 SQL문으로의 직접 맵핑이 가능합니다.

Applications:
Address            AppHandl [nod-index] NumAgents  CoorPid  Status
0x00000002006D2120 780      [000-00780] 1          10615    UOW-Executing
C-AnchID C-StmtUID  L-AnchID L-StmtUID  Appid
163      1          110      1          *LOCAL.burford.050202200412
Dynamic SQL Statements:
Address            AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0000000220A02760 163    1       2      2      2      1      CREATE VIEW MYVIEW
0x0000000220A0B460 110    1       2      2      2      1      CREATE VIEW YOURVIEW

예 6: 메모리 사용 모니터링

다음 샘플 출력에 표시된 대로 메모리 사용을 이해하려면 db2pd -memblock 명령이 유용할 수 있습니다.

All memory blocks in DBMS set.
Address            PoolID   PoolName   BlockAge   Size(Bytes) I LOC   File
0x0780000000740068 62       resynch    2          112         1 1746  1583816485
0x0780000000725688 62       resynch    1          108864      1 127   1599127346
0x07800000001F4348 57       ostrack    6          5160048     1 3047  698130716
0x07800000001B5608 57       ostrack    5          240048      1 3034  698130716
0x07800000001A0068 57       ostrack    1          80          1 2970  698130716
0x07800000001A00E8 57       ostrack    2          240         1 2983  698130716
0x07800000001A0208 57       ostrack    3          80          1 2999  698130716
0x07800000001A0288 57       ostrack    4          80          1 3009  698130716
0x0780000000700068 70       apmh       1          360         1 1024  3878879032
0x07800000007001E8 70       apmh       2          48          1 914   1937674139
0x0780000000700248 70       apmh       3          32          1 1000  1937674139
...

이 다음에는 정렬된 '풀별' 출력이 옵니다.

Memory blocks sorted by size for ostrack pool:
PoolID     PoolName   TotalSize(Bytes)     TotalCount LOC   File
57         ostrack    5160048              1          3047  698130716
57         ostrack    240048               1          3034  698130716
57         ostrack    240                  1          2983  698130716
57         ostrack    80                   1          2999  698130716
57         ostrack    80                   1          2970  698130716
57         ostrack    80                   1          3009  698130716
Total size for ostrack pool: 5400576 bytes
Memory blocks sorted by size for apmh pool:
PoolID     PoolName   TotalSize(Bytes)     TotalCount LOC   File
70         apmh       40200                2          121   2986298236
70         apmh       10016                1          308   1586829889
70         apmh       6096                 2          4014  1312473490
70         apmh       2516                 1          294   1586829889
70         apmh       496                  1          2192  1953793439
70         apmh       360                  1          1024  3878879032
70         apmh       176                  1          1608  1953793439
70         apmh       152                  1          2623  1583816485
70         apmh       48                   1          914   1937674139
70         apmh       32                   1          1000  1937674139
Total size for apmh pool: 60092 bytes
...

출력의 최종 섹션은 전체 메모리 세트에 대해 메모리 소비자를 정렬합니다.

All memory consumers in DBMS memory set:
PoolID     PoolName   TotalSize(Bytes)     %Bytes TotalCount %Count LOC   File
57         ostrack    5160048              71.90  1          0.07   3047  698130716
50         sqlch      778496               10.85  1          0.07   202   2576467555
50         sqlch      271784               3.79   1          0.07   260   2576467555
57         ostrack    240048               3.34   1          0.07   3034  698130716
50         sqlch      144464               2.01   1          0.07   217   2576467555
62         resynch    108864               1.52   1          0.07   127   1599127346
72         eduah      108048               1.51   1          0.07   174   4210081592
69         krcbh      73640                1.03   5          0.36   547   4210081592
50         sqlch      43752                0.61   1          0.07   274   2576467555
70         apmh       40200                0.56   2          0.14   121   2986298236
69         krcbh      32992                0.46   1          0.07   838   698130716
50         sqlch      31000                0.43   31         2.20   633   3966224537
50         sqlch      25456                0.35   31         2.20   930   3966224537
52         kerh       15376                0.21   1          0.07   157   1193352763
50         sqlch      14697                0.20   1          0.07   345   2576467555
...

UNIX 및 Linux 운영 체제에서는 전용 메모리에 대한 메모리 블록도 보고할 수 있습니다. 예를 들어, db2pd -memb pid=159770을 실행하는 경우 다음과 유사한 결과가 생성됩니다.

All memory blocks in Private set. 
Address            PoolID     PoolName     BlockAge   Size(Bytes) I LOC   File 
0x0000000110469068 88         private      1          2488        1 172   4283993058
0x0000000110469A48 88         private      2          1608        1 172   4283993058
0x000000011046A0A8 88         private      3          4928        1 172   4283993058
0x000000011046B408 88         private      4          7336        1 172   4283993058
0x000000011046D0C8 88         private      5          32          1 172   4283993058
0x000000011046D108 88         private      6          6728        1 172   4283993058
0x000000011046EB68 88         private      7          168         1 172   4283993058
0x000000011046EC28 88         private      8          24          1 172   4283993058
0x000000011046EC68 88         private      9          408         1 172   4283993058
0x000000011046EE28 88         private      10         1072        1 172   4283993058
0x000000011046F288 88         private      11         3464        1 172   4283993058
0x0000000110470028 88         private      12         80          1 172   4283993058
0x00000001104700A8 88         private      13         480         1 1534  862348285 
0x00000001104702A8 88         private      14         480         1 1939  862348285 
0x0000000110499FA8 88         private      80         65551       1 1779  4231792244
Total set size: 94847 bytes
Memory blocks sorted by size:
PoolID     PoolName   TotalSize(Bytes)     TotalCount LOC   File      
88         private    65551                1          1779  4231792244
88         private    28336                12         172   4283993058
88         private    480                  1          1939  862348285 
88         private    480                  1          1534  862348285 
Total set size: 94847 bytes

예 7: 테이블스페이스를 다 사용하고 있는 응용프로그램 식별

db2pd -tcbstats를 사용하여 테이블에 대한 삽입 수를 식별할 수 있습니다. 다음은 TEMP1이라는 사용자 정의 전역 임시 테이블에 대한 샘플 정보입니다.

TCB Table Information:
Address            TbspaceID TableID PartID MasterTbs MasterTab TableName  SchemaNm ObjClass DataSize  LfSize LobSize XMLSize
0x0780000020B62AB0 3         2       n/a    3         2         TEMP1      SESSION  Temp     966       0      0       0 
TCB Table Stats:
Address            TableName   Scans   UDI   PgReorgs   NoChgUpdts   Reads   FscrUpdates Inserts   Updates   Deletes   OvFlReads OvFlCrtes 
0x0780000020B62AB0 TEMP1       0       0     0          0            0       0           43968     0         0          0        0         

db2pd -tablespaces 명령을 사용하여 테이블스페이스 3에 대한 정보를 얻을 수 있습니다. 샘플 출력은 다음과 같습니다.

Tablespace 3 Configuration:
Address            Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe  LastConsecPg Name
0x0780000020B1B5A0 DMS  UsrTmp  4096   32       Yes  32       1     1         on  1        0          31           TEMPSPACE2
Tablespace 3 Statistics:
Address            TotalPgs   UsablePgs  UsedPgs    PndFreePgs FreePgs    HWM        State      MinRecTime NQuiescers
0x0780000020B1B5A0 5000       4960       1088       0          3872       1088       0x00000000 0          0          
Tablespace 3 Autoresize Statistics:
Address            AS  AR  InitSize    IncSize     IIP MaxSize     LastResize      LRF
0x0780000020B1B5A0 No  No  0           0           No  0           None            No  
Containers:
Address            ContainNum Type    TotalPgs   UseablePgs StripeSet  Container 
0x0780000020B1DCC0 0          File    5000       4960       0          /home/db2inst1/tempspace2a

FreePgs 컬럼은 스페이스를 채우고 있음을 표시합니다. 사용 가능한 페이지 값이 줄어들면 사용 가능한 스페이스도 줄어듭니다. 또한 FreePgs 값에UsedPgs 값을 더하면 UsablePgs 값과 같음에 유의하십시오.

이를 알았으면 db2pd -db sample -dyn을 실행하여 TEMP1 테이블을 사용 중인 동적 SQL문을 식별할 수 있습니다.

Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:13:06
Dynamic Cache:
Current Memory Used           1022197
Total Heap Size               1271398
Cache Overflow Flag           0
Number of References          237
Number of Statement Inserts   32
Number of Statement Deletes   13
Number of Variation Inserts   21
Number of Statements          19
Dynamic SQL Statements:
Address            AnchID StmtUID  NumEnv  NumVar  NumRef  NumExe  Text
0x0000000220A08C40 78     1        2       2       3       2       declare global temporary table temp1 (c1 char(6)) not logged
0x0000000220A8D960 253    1        1       1       24      24      insert into session.temp1 values('TEST')

마지막으로, db2pd -db sample -app를 실행하여 이전 출력의 정보를 응용프로그램 출력에 맵핑하여 응용프로그램을 식별할 수 있습니다.

Applications:
Address            AppHandl [nod-index] NumAgents  CoorPid Status
0x0000000200661840 501      [000-00501] 1          11246   UOW-Waiting
C-AnchID C-StmtUID  L-AnchID L-StmtUID  Appid
0        0          253      1          *LOCAL.db2inst1.050202160426

동적 SQL문을 식별한 앵커 ID(AnchID) 값을 사용하여 연관된 응용프로그램을 식별할 수 있습니다. 결과는 마지막 앵커 ID(L-AnchID) 값이 앵커 ID(AnchID) 값과 동일함을 표시합니다. 다음 번에 db2pd를 실행할 때 db2pd 실행 결과를 사용하십시오.

db2pd -agent 출력은 응용프로그램이 읽은 행 수를 Rowsread 컬럼에, 기록한 행 수를 Rowswrtn 컬럼에 표시합니다. 다음 샘플 출력에 표시된 대로 이러한 값을 통해 응용프로그램이 완료한 것과 응용프로그램이 여전히 완료해야 하는 것을 알 수 있습니다.
Address            AppHandl [nod-index] AgentPid  Priority  Type	DBName
0x0000000200698080 501      [000-00501] 11246     0         Coord	SAMPLE
State       ClientPid  Userid   ClientNm Rowsread   Rowswrtn   LkTmOt
Inst-Active 26377      db2inst1 db2bp    22         9588       NotSet

db2pd -agent 명령 실행으로 발생하는 AppHandl  AgentPid 값을 db2pd -app 명령 실행으로 발생하는 AppHandl  CoorPid 값에 맵핑할 수 있습니다.

내부 임시 테이블이 테이블스페이스를 채우고 있다고 예측되는 경우에는 단계가 약간 다릅니다. 그러나 db2pd -tcbstats를 사용하여 삽입이 많은 테이블을 식별하십시오. 다음은 내재된 임시 테이블에 대한 샘플 정보입니다.

TCB Table Information:
Address            TbspaceID TableID PartID MasterTbs MasterTab TableName          SchemaNm ObjClass    DataSize  ...     
0x0780000020CC0D30 1         2       n/a    1         2         TEMP (00001,00002) <30>     <JMC Temp   2470      ...
0x0780000020CC14B0 1         3       n/a    1         3         TEMP (00001,00003) <31>     <JMC Temp   2367      ...
0x0780000020CC21B0 1         4       n/a    1         4         TEMP (00001,00004) <30>     <JMC Temp   1872      ...
TCB Table Stats:
Address            TableName          Scans   UDI   PgReorgs   NoChgUpdts Reads   FscrUpdates Inserts ... 
0x0780000020CC0D30 TEMP (00001,00002) 0       0     0          0          0       0           43219   ...
0x0780000020CC14B0 TEMP (00001,00003) 0       0     0          0          0       0           42485   ...
0x0780000020CC21B0 TEMP (00001,00004) 0       0     0          0          0       0           0       ...

이 예에서는 TEMP (TbspaceID, TableID) 이름 지정 규칙을 가진 테이블에 대한 많은 삽입이 있습니다. 이는 내재된 임시 테이블입니다.SchemaNm 컬럼 값에서는 AppHandl 값 이름 지정 규칙이 SchemaNm 값과 병합되므로 작업 수행 중인 응용프로그램을 식별할 수 있습니다.

그런 다음, 해당 정보를 db2pd -tablespaces 출력에 맵핑하여 테이블스페이스 1에 사용한 스페이스를 확인할 수 있습니다. 다음 출력의 테이블스페이스 통계에서 UsedPgs 값과 UsablePgs 값 간의 관계에 주의하십시오.

Tablespace Configuration:
Address            Id    Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x07800000203FB5A0 1     SMS  SysTmp  4096   32       Yes  320      1     1         on  10       0         31           TEMPSPACE1
Tablespace Statistics:
Address            Id    TotalPgs   UsablePgs  UsedPgs    PndFreePgs FreePgs    HWM    State      MinRecTime NQuiescers
0x07800000203FB5A0 1     6516       6516       6516       0          0          0      0x00000000 0          0
Tablespace Autoresize Statistics:
Address            Id    AS  AR  InitSize    IncSize     IIP MaxSize     LastResize  LRF
0x07800000203FB5A0 1     No  No  0           0           No  0           None        No
Containers:
...

-tcbstats 출력에서 응용프로그램 핸들 30 및 31을 보았으므로 db2pd -app 명령을 사용하여 이를 식별할 수 있습니다.

Applications:
Address            AppHandl [nod-index] NumAgents  CoorPid    Status          C-AnchID C-StmtUID  L-AnchID   L-StmtUID  Appid
0x07800000006FB880 31       [000-00031] 1          4784182    UOW-Waiting     0        0          107        1          *LOCAL.db2inst1.051215214142
0x07800000006F9CE0 30       [000-00030] 1          8966270    UOW-Executing   107      1          107        1          *LOCAL.db2inst1.051215214013

마지막으로, 이전 출력의 정보를 db2pd -dyn 명령을 실행하여 확보한 동적 SQL 출력에 맵핑할 수 있습니다.

Dynamic SQL Statements:
Address            AnchID StmtUID    NumEnv     NumVar     NumRef     NumExe     Text
0x0780000020B296C0 107    1          1          1          43         43         select c1, c2 from test group by c1,c2

예 8: 복구 모니터링

db2pd -recovery 명령을 실행하는 경우, 다음 샘플 출력에 표시된 대로 출력은 복구가 진행 중임을 검증하는 데 사용할 수 있는 몇 개의 카운터를 표시합니다. Current Log  Current LSN 값은 로그 위치 지정을 제공합니다. CompletedWork 값은 지금까지 완료된 바이트 수입니다.

Recovery:
Recovery Status     0x00000401
Current Log         S0000005.LOG
Current LSN         000002551BEA
Job Type            ROLLFORWARD RECOVERY
Job ID              7
Job Start Time      (1107380474) Wed Feb  2 16:41:14 2005
Job Description     Database Rollforward Recovery
Invoker Type        User
Total Phases        2
Current Phase       1
Progress:
Address            PhaseNum Description StartTime                CompletedWork  TotalWork
0x0000000200667160 1        Forward     Wed Feb  2 16:41:14 2005 2268098 bytes  Unknown
0x0000000200667258 2        Backward    NotStarted               0 bytes        Unknown

예 9: 트랜잭션이 사용 중인 자원 양 판별

db2pd -transactions 명령을 실행하는 경우, 다음 샘플 출력에 표시된 대로 출력은 잠금 수, 첫 번째 로그 시퀀스 번호(LSN), 마지막 LSN, 사용한 로그 스페이스, 예약된 스페이스를 표시합니다. 이는 트랜잭션 동작을 이해하는 데 유용할 수 있습니다.

Transactions:
Address            AppHandl [nod-index] TranHdl  Locks  State  Tflag
0x000000022026D980 797      [000-00797] 2        108    WRITE  0x00000000
0x000000022026E600 806      [000-00806] 3        157    WRITE  0x00000000
0x000000022026F280 807      [000-00807] 4        90     WRITE  0x00000000
Tflag2     Firstlsn       Lastlsn        LogSpace   SpaceReserved
0x00000000 0x000001072262 0x0000010B2C8C 4518       95450
0x00000000 0x000001057574 0x0000010B3340 6576       139670
0x00000000 0x00000107CF0C 0x0000010B2FDE 3762       79266
TID            AxRegCnt   GXID
0x000000000451 1          0
0x0000000003E0 1          0
0x000000000472 1          0

예 10: 로그 사용 모니터링

db2pd -logs 명령은 데이터베이스에 대한 로그 사용 모니터링에 유용합니다. 다음 샘플 출력에 표시된 대로 Pages Written 값을 사용하여 로그 사용이 증가하고 있는지 여부를 판별할 수 있습니다.

Logs:
Current Log Number            0
Pages Written                 0
Cur Commit Disk Log Reads     0
Cur Commit Total Log Reads    0
Method 1 Archive Status       n/a
Method 1 Next Log to Archive  n/a
Method 1 First Failure        n/a
Method 2 Archive Status       n/a
Method 2 Next Log to Archive  n/a
Method 2 First Failure        n/a
Log Chain ID                  0
Current LSN                   0x0000000001F40010
Address            StartLSN       State      Size  Pages  Filename
0x00002B75E9E3D2D0 0000000001F40010 0x00000000 1000      1000      S0000000.LOG
0x00002B75E9E53D70 0000000002328010 0x00000000 1000      1000      S0000001.LOG
0x00002B75E9E545D0 0000000002710010 0x00000000 1000      1000      S0000002.LOG
이 출력을 사용하여 다음 두 가지 유형의 문제점을 식별할 수 있습니다.
  • 가장 최근의 로그 아카이브가 실패하면, Archive Status Failure 값으로 설정됩니다. 진행 중인 아카이브 실패가 있고 로그가 전혀 아카이브되지 않는다면, Archive Status First Failure 값으로 설정됩니다.
  • 로그 아카이브가 아주 느린 속도로 진행되는 경우, Next Log to Archive 값이 Current Log Number 값보다 작습니다. 아카이브 속도가 아주 느린 경우, 사용 중인 로그 스페이스가 부족할 수 있으며 이로 인해 데이터 변경이 데이터베이스에서 발생하지 못할 수 있습니다.

예 11: Sysplex 목록 보기

db2pd -sysplex 명령이 다음 샘플 출력을 표시하지 않는 경우, sysplex 목록을 보고하는 다른 유일한 방법은 DB2 추적을 사용하는 것입니다.

Sysplex List:
Alias:         HOST
Location Name: HOST1
Count:         1
IP Address      Port       Priority   Connections Status     PRDID
 1.2.34.56      400        1          0           0

예 12: 스택 추적 작성

Windows 운영 체제의 경우 db2pd -stack all 명령을, 또는 UNIX 운영 체제의 경우 -stack 명령을 사용하여 현재 데이터베이스 파티션의 모든 프로세스에 대한 스택 추적을 생성할 수 있습니다. 프로세스 또는 스레드가 루프 또는 정지 중이라고 예측되는 경우에는 이 명령을 반복적으로 사용할 수 있습니다.

다음 예에 표시된 대로 db2pd -stack eduid 명령을 실행하여 특정 엔진 디스패치 가능 단위(EDU)에 대한 현재 모든 스택을 확보할 수 있습니다.

  Attempting to dump stack trace for eduid 137.
  See current DIAGPATH for trapfile.

예를 들어, 모든 DB2 프로세스에 대한 호출 스택을 원할 경우 Windows 운영 체제에서는 db2pd -stack all 명령을 사용하십시오.

  Attempting to dump all stack traces for instance.
  See current DIAGPATH for trapfiles.

실제 노드가 여러 개인 파티션된 데이터베이스 환경을 사용 중인 경우, db2_all "; db2pd -stack all" 명령을 사용하여 모든 파티션에서 정보를 얻을 수 있습니다. 그러나 파티션이 동일한 시스템에서 모두 논리적 파티션인 경우, 보다 빠른 방법은 db2pd -alldbp -stacks를 사용하는 것입니다.

dumpdir 매개변수를 사용하여 특정 디렉토리 경로로 db2pdb -stacks 명령 출력 경로를 재지정하고 timeout 매개변수를 사용하여 특정 지속기간 동안만 출력 경로를 재지정할 수도 있습니다. 예를 들어, 모든 프로세스에 대한 스택 추적 출력의 경로를 30초 동안 /home/waleed/mydir로 재지정하려면 다음 명령을 실행하십시오.

db2pd -alldbp -stack all dumpdir=/home/waleed/mydir timeout=30

예 13: 데이터베이스 파티션에 대한 메모리 통계 보기

db2pd -dbptnmem 명령은 DB2 서버가 현재 사용 중인 메모리 양과 상위 레벨에서 해당 메모리를 사용 중인 서버 영역을 표시합니다.

다음은 AIX® 시스템에서 db2pd -dbptnmem 실행으로 인한 출력 예입니다.

Database Partition Memory Controller Statistics
Controller Automatic: Y
Memory Limit:   122931408KB
Current usage:     651008KB
HWM usage:         651008KB
Cached memory:     231296KB
이러한 데이터 필드 및 컬럼에 대한 설명은 다음과 같습니다.
Controller Automatic
메모리 제어기 설정을 표시합니다. instance_memory 구성 매개변수가 AUTOMATIC으로 설정된 경우 "Y" 값을 표시합니다. 이는 데이터베이스 관리자가 메모리 소비 상한값을 자동으로 판별함을 의미합니다.
Memory Limit
인스턴스 메모리 한계가 강제 실행되는 경우, instance_memory 구성 매개변수의 값은 사용할 수 있는 DB2 서버의 상한값입니다.
Current usage
서버가 현재 소비하고 있는 메모리의 양입니다.
HWM usage
db2start 명령이 실행될 때 데이터베이스 파티션이 활성화된 이후로 소비된 상위 워터 마크(HWM) 또는 최대 메모리 사용량입니다.
Cached memory
현재 사용되고 있지 않지만 향후 메모리 요청을 위해 성능상의 이유로 캐시된 현재 사용 양입니다.

다음은 AIX 운영 체제에서 db2pd -dbptnmem 실행으로 인한 샘플 출력의 연속입니다.

Individual Memory Consumers:
Name           Mem Used (KB)   HWM Used (KB)   Cached (KB)
===========================================================
APPL-DBONE       160000          160000        159616 
DBMS-name         38528           38528          3776 
FMP_RESOURCES     22528           22528             0 
PRIVATE           13120           13120           740 
FCM_RESOURCES     10048           10048             0 
LCL-p606416         128             128             0 
DB-DBONE         406656          406656         67200
DB2 서버 내 등록된 모든 메모리 "소비자"가 소비 중인 전체 메모리 양과 함께 나열됩니다. 컬럼 설명은 다음과 같습니다.
이름
메모리 소비자의 짧은 식별 이름. 예를 들면, 다음과 같습니다.
APPL-dbname
dbname 데이터베이스용으로 소비된 응용프로그램 메모리
DBMS-name
전역 데이터베이스 관리자 메모리 요구사항
FMP_RESOURCES
db2fmps와 통신하는 데 필요한 메모리
PRIVATE
기타 전용 메모리 요구사항
FCM_RESOURCES
FCM(Fast Communication Manager) 자원
LCL-pid
로컬 응용프로그램과 통신하는 데 사용된 메모리 세그먼트
DB-dbname
dbname 데이터베이스용으로 소비된 데이터베이스 메모리
Mem Used (KB)
소비자에게 현재 할당된 메모리 양
HWM Used (KB)
소비자가 사용한 메모리의 상위 워터 마크(HWM) 또는 최대 메모리
Cached (KB)
Mem Used (KB) 중에서, 현재 사용되고 있지 않지만 향후 메모리 할당에 즉시 사용할 수 있는 메모리 양

예 14: 인덱스 재구성 진행 모니터링

DB2 버전 9.7 Fixpack 2 이상의 Fixpack에서는 인덱스 재구성에 대한 진행 보고서에 다음과 같은 특성이 포함됩니다.
  • db2pd -reorgs index 명령은 파티션된 인덱스에 대한 인덱스 Reorg 진행을 보고합니다(파티션되지 않은 인덱스에 대한 지원이 도입된 수정팩 1).
  • db2pd -reorgs index 명령은 파티션 레벨에서 인덱스 Reorg의 모니터링을 지원합니다(즉, 단일 파티션을 재구성하는 동안).
  • 파티션되지 않은 인덱스 및 파티션된 인덱스에 대한 Reorg 진행이 별도의 출력으로 보고됩니다. 하나의 출력에 파티션되지 않은 인덱스에 대한 Reorg 진행이 표시되고 다음 출력에 각 테이블 파티션의 파티션된 인덱스에 대한 Reorg 진행이 표시되며, 각 출력에 하나의 파티션에 대한 인덱스 Reorg 통계만 보고됩니다.
  • 파티션되지 않은 인덱스가 먼저 처리된 후 파티션된 인덱스가 순차적으로 처리됩니다.
  • db2pd -reorgs index 명령은 출력에 파티션된 인덱스에 대한 다음과 같은 추가 정보 필드를 표시합니다.
    • MaxPartition - 처리되는 테이블에 대한 총 파티션 수입니다. 파티션 레벨 Reorg의 경우 단일 파티션만 재구성되므로MaxPartition에 항상 1 값이 사용됩니다.
    • PartitionID - 처리되는 파티션에 대한 데이터 파티션 ID입니다.
다음은 파티션 2와 함께 범위에 따라 파티션된 테이블에 대한 인덱스 Reorg 진행을 보고하는 db2pd -reorgs index 명령을 사용하여 획득한 출력의 예입니다.
참고: 첫 번째 출력은 파티션되지 않은 인덱스의 인덱스 Reorg 상태를 보고합니다. 다음 출력은 각 파티션에서 파티션된 인덱스의 인덱스 Reorg 상태를 보고합니다.
Index Reorg Stats:
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: -6       TableID: -32768
Schema: ZORAN    TableName: BIGRPT
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:03:55   End Time: 02/08/2010 23:04:04
Total Duration: 00:00:08
Prev Index Duration:  -
Cur Index Start: -
Cur Index: 0            Max Index: 2            Index ID: 0
Cur Phase: 0          ( -     )   Max Phase: 0
Cur Count: 0                      Max Count: 0
Total Row Count: 750000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2        TableID: 5
Schema: ZORAN    TableName: BIGRPT
PartitionID: 0      MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:04   End Time: 02/08/2010 23:04:08
Total Duration: 00:00:04
Prev Index Duration:  -
Cur Index Start: -
Cur Index: 0            Max Index: 2            Index ID: 0
Cur Phase: 0          ( -     )   Max Phase: 0
Cur Count: 0                      Max Count: 0
Total Row Count: 375000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2        TableID: 6
Schema: ZORAN    TableName: BIGRPT
PartitionID: 1      MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:08   End Time: 02/08/2010 23:04:12
Total Duration: 00:00:04
Prev Index Duration:  -
Cur Index Start: -
Cur Index: 0            Max Index: 2            Index ID: 0
Cur Phase: 0          ( -     )   Max Phase: 0
Cur Count: 0                      Max Count: 0
Total Row Count: 375000

예 15: 프로세서 시간 소모별 상위 EDU 표시 및 EDU 스택 정보 표시

-edus 매개변수 옵션을 사용하여 db2pd 명령을 실행하는 경우 출력에는 모든 EDU(Engine Dispatchable Unit)가 나열됩니다. EDU 출력은 인스턴스 레벨 또는 멤버 레벨과 같이 사용자가 지정하는 단위 레벨로 리턴될 수 있습니다. Linux 및 UNIX 운영 체제에 한하여 모든 EDU의 두 스냅샷이 사용자가 지정한 간격으로 분리되어 작성되도록 interval 매개변수 서브옵션을 지정할 수도 있습니다. interval 매개변수를 지정하는 경우 출력에 있는 2개의 추가 컬럼은 간격에 따라 프로세서 사용자 시간의 델타(USR DELTA 컬럼)와 프로세서 시스템 시간의 델타(SYS DELTA 컬럼)를 표시합니다.

다음 예에서는 5초 간격에 따라 프로세서 사용자 시간과 프로세서 시스템 시간의 델타가 제공됩니다.

$ db2pd -edus interval=5
Database Partition 0 -- Active -- Up 0 days 00:53:29 -- Date 06/04/2010 03:34:59
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID    TID            Kernel TID      EDU Name                            USR           SYS         USR DELTA    SYS DELTA
=============================================================================================================================
6957      6957           13889683        db2agntdp (SAMPLE  ) 0              58.238506     0.820466    1.160726     0.014721
6700      6700           11542589        db2agent (SAMPLE) 0                 52.856696     0.754420    1.114821     0.015007
5675      5675           4559055         db2agntdp (SAMPLE  ) 0              60.386779     0.854234    0.609233     0.014304
3088      3088           13951225        db2agntdp (SAMPLE  ) 0              80.073489     2.249843    0.499766     0.006247
3615      3615           2887875         db2loggw (SAMPLE) 0                 0.939891      0.410493    0.011694     0.004204
4900      4900           6344925         db2pfchr (SAMPLE) 0                 1.748413      0.014378    0.014343     0.000103
7986      7986           13701145        db2agntdp (SAMPLE  ) 0              1.410225      0.025900    0.003636     0.000074
2571      2571           8503329         db2ipccm 0                          0.251349      0.083787    0.002551     0.000857
7729      7729           14168193        db2agntdp (SAMPLE  ) 0              1.717323      0.029477    0.000998     0.000038
7472      7472           11853991        db2agnta (SAMPLE) 0                 1.860115      0.032926    0.000860     0.000012
3358      3358           2347127         db2loggr (SAMPLE) 0                 0.151042      0.184726    0.000387     0.000458
515       515            13820091        db2aiothr 0                         0.405538      0.312007    0.000189     0.000178
7215      7215           2539753         db2agntdp (SAMPLE  ) 0              1.165350      0.019466    0.000291     0.000008
6185      6185           2322517         db2wlmd (SAMPLE) 0                  0.061674      0.034093    0.000169     0.000100
6442      6442           2756793         db2evmli (DB2DETAILDEADLOCK) 0      0.072142      0.052436    0.000092     0.000063
4129      4129           15900799        db2glock (SAMPLE) 0                 0.013239      0.000741    0.000064     0.000001
2         2              11739383        db2alarm 0                          0.036904      0.028367    0.000009     0.000009
4386      4386           13361367        db2dlock (SAMPLE) 0                 0.015653      0.001281    0.000014     0.000003
1029      1029           15040579        db2fcms 0                           0.041929      0.016598    0.000010     0.000004
5414      5414           14471309        db2pfchr (SAMPLE) 0                 0.000093      0.000002    0.000000     0.000000
258       258            13656311        db2sysc 0                           8.369967      0.263539    0.000000     0.000000
5157      5157           7934145         db2pfchr (SAMPLE) 0                 0.027598      0.000177    0.000000     0.000000
1543      1543           2670647         db2fcmr 0                           0.004191      0.000079    0.000000     0.000000
1286      1286           8417339         db2extev 0                          0.000312      0.000043    0.000000     0.000000
2314      2314           14360813        db2licc 0                           0.000371      0.000051    0.000000     0.000000
5928      5928           3137537         db2taskd (SAMPLE) 0                 0.004903      0.000572    0.000000     0.000000
3872      3872           2310357         db2lfr (SAMPLE) 0                   0.000126      0.000007    0.000000     0.000000
4643      4643           11694287        db2pclnr (SAMPLE) 0                 0.000094      0.000002    0.000000     0.000000
1800      1800           5800175         db2extev 0                          0.001212      0.002137    0.000000     0.000000
772       772            7925817         db2thcln 0                          0.000429      0.000072    0.000000     0.000000
2057      2057           6868993         db2pdbc 0                           0.002423      0.001603    0.000000     0.000000
2828      2828           10866809        db2resync 0                         0.016764      0.003098    0.000000     0.000000

상위 프로세서 시간 소비자에 해당하는 EDU 관련 정보만 제공하고 리턴되는 출력의 양을 줄이려면 top 매개변수 옵션을 추가로 포함할 수 있습니다. 다음 예에서는 5초 간격에 따라 상위 5대 EDU만 리턴합니다. 스택 정보도 리턴되며 DUMPDIR(기본적으로 diagpath로 설정됨)에 지정된 디렉토리 경로에 별도로 저장되어 있음을 확인할 수 있습니다.

$ db2pd -edus interval=5 top=5 stacks
Database Partition 0 -- Active -- Up 0 days 00:54:00 -- Date 06/04/2010 03:35:30
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID    TID            Kernel TID     EDU Name                USR          SYS         USR DELTA    SYS DELTA
===============================================================================================================
3358      3358           2347127        db2loggr (SAMPLE) 0     0.154906     0.189223    0.001087     0.001363
3615      3615           2887875        db2loggw (SAMPLE) 0     0.962744     0.419617    0.001779     0.000481
515       515            13820091       db2aiothr 0             0.408039     0.314045    0.000658     0.000543
258       258            13656311       db2sysc 0               8.371388     0.264812    0.000653     0.000474
6700      6700           11542589       db2agent (SAMPLE) 0     54.814420    0.783323    0.000455     0.000310
$ ls -ltr
total 552
drwxrwxr-t    2 vbmithun build         256 05-31 09:59 events/
drwxrwxr-t    2 vbmithun build         256 06-04 03:17 stmmlog/
-rw-r--r--    1 vbmithun build       46413 06-04 03:35 1249522.3358.000.stack.txt
-rw-r--r--    1 vbmithun build       22819 06-04 03:35 1249522.3615.000.stack.txt
-rw-r--r--    1 vbmithun build       20387 06-04 03:35 1249522.515.000.stack.txt
-rw-r--r--    1 vbmithun build       50426 06-04 03:35 1249522.258.000.stack.txt
-rw-r--r--    1 vbmithun build      314596 06-04 03:35 1249522.6700.000.stack.txt
-rw-r--r--    1 vbmithun build       94913 06-04 03:35 1249522.000.processObj.txt

예 16: 에이전트 이벤트 메트릭 표시

db2pd 명령이 에이전트의 이벤트 메트릭 리턴을 지원합니다. 특정한 기간 동안 에이전트가 상태를 변경했는지 여부를 판별해야 하는 경우, event 옵션을 -agents 매개변수와 함께 사용하십시오. 리턴된 AGENT_STATE_LAST_UPDATE_TIME(틱 값) 컬럼에서는 에이전트에서 처리되는 이벤트가 변경된 마지막 시간을 보여줍니다. AGENT_STATE_LAST_UPDATE_TIME(틱 값)에 대해 이전에 가져온 값을 통해, 에이전트가 새 태스크로 이동했는지 여부나 확장된 기간 동안 동일한 태스크를 계속해서 처리하는지 여부를 판별할 수 있습니다.

db2pd –agents event
Database Partition 0 -- Active -- Up 0 days 03:18:52 -- Date 06/27/2011 11:47:10
Agents:
Current agents:      12
Idle agents:         0
Active coord agents: 10
Active agents total: 10
Pooled coord agents: 2
Pooled agents total: 2
AGENT_STATE_LAST_UPDATE_TIME(Tick Value)         EVENT_STATE  EVENT_TYPE  EVENT_OBJECT  EVENT_OBJECT_NAME 

2011-06-27-14.44.38.859785(5622972377924968075) IDLE WAIT REQUEST n/a 


http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/c0054595.html

728x90
728x90

Question

How do I set up the High-Performance Loader (HPL) Informix utility?

Cause

Informix DBAs and System Administrators usually find HPL a little bit tricky, due to its own shared memory management engine and specific command line instructions to handle the load and unload jobs control.

This document gathers a compilation of useful links and ease-of-use instructions to quickly set HPL ready to run.


Answer

Eventually, some may find the GUI option the best path, but this document intends to prepare the reader to set HPL in just a few steps, thru the command line interface.

1. First of all, you should choose a table to create the HPL job (and the onpload database):

  $ onpladm create job j_items -d "items.unl" -D stores -t items 

   Successfully created Job j_items

    where:
    As soon as the first job is created, the onpload database is created too, if is doens't exist already.
    If it does exist, you should rename it so it won't cause any trouble.

2. To execute the j_items job as an unload job, just issue the command below, using the -fu flag:

   $ onpload -j j_items -fu -l items.log -i 100000 -R $PWD/a
     
    where:

3. To use the same job as a load job, just issue the command below, changing the -fu flag by the -fl flag: 

   $ onpload -j j_items -fl -l items.log -i 100000 -R $PWD/a 
 
4. Obviously, no one would use HPL facility to unload/load a single table. The sections bellow show some SQL queries to generate the onpload commands for each table. You can use the DBAccess utility to execute these commands.

Don't forget to change the <dbname> variable for your database name, i.e.: stores_demo.
    select tabname from systables where tabid > 99 and tabtype = "T" into temp a;
    output to hpl_create_job.sh without headings
    select onpladm create job job_"||trim(tabname)||" -d '/tmp/"||trim(tabname)||".unl' -D <dbname> -t "||trim(tabname) from a    
    select tabname from systables where tabid > 99 and tabtype = "T" into temp a;
    output to hpl_create_job_delux.sh without headings
    select onpladm create job job_"||trim(tabname)||" -d '/tmp/"||trim(tabname)||".unl' -D <dbname> -t "||trim(tabname)||" -fc" from a    

For all the tables that has BLOB columns only Deluxe Mode can be used.

5. When all the shell scripts are done, you can clean them up, avoiding line feeds and weird characters which may cause a failure at execution time.

Follows attached, two scripts that might be used as cleaning tools:
    a. Use this tool to remove line feeds, name it join.sh:
      :join 
      /\\$/{N 
      s/\\\n/ / 
      b join 
      }

    b. Use this tool to remove blank lines, name it del_blank.sh:
      sed '/^$/d' $1
      Here's an example on its use:

      cat hpl_load_job.sh | sed -f join.sh > zz 
      sh del_blank.sh zz > zzz 
      mv zzz hpl_create_job.sh

And the final hpl_create_job.sh script is clean.

4. one important notice that should be taken care of is the following HPL environment variables:
 

http://www-01.ibm.com/support/docview.wss?uid=swg21587169

728x90
728x90

問題(概要)

DB2 が異常終了した場合の回復方法と、原因の調査に必要な資料の取得方法について記述します。

症状

ハードウェア障害や DB2 自身の障害などにより DB2 のインスタンスが異常終了し、トランザクションが続行できなくなることがあります。
インスタンスが異常終了すると、UNIX/Linux 環境の場合は db2sysc をはじめとする各 DB2 エンジン・プロセス、Windows 環境の場合は db2syscs.exe プロセスが終了します。

例えば、トランザクションがコミットされる前にこのような障害が発生すると、データベース内のデータが矛盾した、または使用不能な状態のままになっている可能性があります。このままではトランザクションの継続ができないため、クラッシュ・リカバリーによってデータベースを整合性があり使用可能な状態に戻す必要があります。

原因

インスタンスが異常終了する主な原因は以下のようなケースが考えられます。

解決方法

データベースを矛盾したまたは使用不能な状態から回復するために以下の手順を実施してください。


Unix/Linux 環境ではインスタンス・オーナーとしてログインして実行してください。
Windows 環境では Administrator としてログオンし、 DB2 コマンド・ウィンドウから実行してください。

  1. インスタンスを再起動します。

    db2start
  2. 障害発生時に未完了になっている作業単位があった場合には、データベースを整合性があり使用可能な状態に戻すためにクラッシュ・リカバリーが必要になります。
    自動再始動 (AUTORESTART) データベース構成パラメーターの値によって対応方法が異なるため、下記コマンドで設定を確認します。

    db2 get db cfg for <dbname>

    自動再始動有効         (AUTORESTART) = on

  3. 上記パラメーターの値により、データベースの異常終了後、アプリケーションがデータベースに接続するときにデータベース・マネージャーが自動的にデータベース再始動ユーティリティーを呼び出すかどうかが決まります。
    1. ON (デフォルト値) に設定している場合:
      データベース・マネージャーによって自動的にクラッシュ・リカバリーが実行されます。
    2. OFFに設定している場合:
      自動再始動は動作しません。クラッシュ・リカバリーが実行される必要がある (再始動される必要がある) データベースに接続を試みたアプリケーションは、SQL1015N エラーを受け取ることになります。この場合は、そのアプリケーションで RESTART DATABASE コマンドを発行し、データベースを再始動する必要があります。

      db2 restart database <dbname>
  4. クラッシュ・リカバリーが正常に完了すると db2diag.log に以下のような ADM1531E メッセージが記録されます。
    MESSAGE : ADM1531E Crash recovery has completed successfully.


なお、回復時に以下の事象が発生する可能性があります。

a) 異常終了後、db2start を実行したが、インスタンスを起動できない
b) クラッシュ・リカバリーが終わらない

a) 異常終了後、db2start を実行したが、インスタンスを起動できない
インスタンスの異常終了後、不正な IPC リソースが残っていることで、SQL1042C や SQL1072C が発生し、インスタンスの起動に失敗する場合があります。

対応方法
インスタンスの起動に失敗した場合には、以下手順にてインスタンスを強制終了後、IPC リソースを削除し、インスタンスを再起動してください。

[AIX]
  1. インスタンスを強制終了します。
    1. Enterprise Server Edition の場合、以下のコマンドでインスタンスを強制終了します。
      db2_kill
    2. Enterprise Server Edition 以外の場合 (db2_kill コマンドが存在しない場合)、以下のコマンドでインスタンスを強制終了します。
      db2nkill 0
  2. 不正な IPC リソースを解放します。
    1. IPC リソースを解放します。
      ipclean
    2. IPC リソースが残っているか確認します。
      ipcs -a | grep <インスタンス・オーナー名>
    3. IPC リソースが残っている場合には、以下コマンドで除去してください。
      ipcrm -q <msgid> (メッセージキューの場合。ipcs で先頭がqのもの) 
      ipcrm -m <shmid> 
      (共有メモリーの場合。ipcs で先頭がmのもの)
      ipcrm -s <semid> 
      (セマフォーの場合。ipcs で先頭がsのもの)

      ※ ipcs の出力結果を確認し、ipcrm コマンドではそれぞれメッセージキュー、共有メモリー、セマフォーの ID を指定してください。
  3. インスタンスを起動します。
    db2start

[Linux]
  1. インスタンスを強制終了します。
    1. Enterprise Server Edition の場合、以下のコマンドでインスタンスを強制終了します。
      db2_kill
    2. Enterprise Server Edition 以外の場合 (db2_kill コマンドが存在しない場合)、以下のコマンドでインスタンスを強制終了します。
      db2nkill 0
  2. 不正な IPC リソースを解放します。
    1. IPC リソースを解放します。
      ipclean
    2. IPC リソースが残っているか確認します。
      ipcs -q | grep <インスタンス・オーナー名>
      ipcs -m | grep 
      <インスタンス・オーナー名>
      ipcs -s | grep 
      <インスタンス・オーナー名>
    3. IPC リソースが残っている場合には、以下コマンドで除去してください。
      ipcrm -q <msgid> (メッセージキューの場合) 
      ipcrm -m <shmid> 
      (共有メモリーの場合)
      ipcrm -s <semid> 
      (セマフォーの場合)

      ※ ipcs の出力結果を確認し、ipcrm コマンドではそれぞれメッセージキュー、共有メモリー、セマフォーの ID を指定してください。
  3. インスタンスを起動します。
    db2start

[Windows]
  1. db2syscs.exe およびその子プロセスを強制終了します。
    1. 単一の DB2 製品と DB2 インスタンスのみの環境
      taskkill /f /im db2syscs.exe /t
    2. 複数インスタンスの環境
      1. DB2 インスタンスの PID を確認します。
        tasklist /svc /fi "imagename eq db2syscs.exe"
      2. DB2 インスタンスを終了します。
        taskkill /f /pid <DB2 インスタンスの PID> /t


        ※ /t オプションを指定しないとシステムを再起動までインスタンスを起動できないことがあります。
  2. インスタンスを起動します。
    db2start

b) クラッシュ・リカバリーが終わらない
更新処理をしていた場合に異常終了となった場合には、次回起動後にデータベースの再始動の際にクラッシュ・リカバリーが行われ、未コミット・トランザクションのロールバックなどが行われます。

対応方法
クラッシュ・リカバリーは異常終了後のデータベースを正常な状態に戻すために必要な処理です。途中で停止することはできず、クラッシュ・リカバリーが完了するのを待つ必要があります。
進行状況は、以下のコマンドで確認できます。
    db2 list utilities show detail


上記手順で復旧できない場合や、原因の調査が必要な場合は、IBM テクニカル・サポートへ連絡し、下記資料をご送付ください。

取得すべき資料
  1. 再現シナリオや、問題発生時の処理内容が分かっている場合には下記の情報をご送付ください。
  2. db2support (db2diag.log ファイル、 db2level や データベース構成情報、 トラップ・ファイル等が含まれます)

以下のURL内の手順をご参照の上、ご取得ください。

【db2support 取得手順 for UNIX(UNIX/Linux)】
http://www.ibm.com/jp/services/its/support/svcdoc/db2/db2support_u.html

【db2support 取得手順 for Windows】
http://www.ibm.com/jp/services/its/support/svcdoc/db2/db2support_w.html

db2support がすぐに取得できない場合は以下の資料をご取得ください。

http://www-01.ibm.com/support/docview.wss?uid=swg21503288

728x90
728x90

Question

Explanation of Withdrawal announcement and FAQ

Answer


The withdrawal announcement is difficult to understand. What is actually happening?

We are actually doing a variety of things to help consolidate or eliminate lightly or unused products. The following types of withdrawals are part of this announcement.
What is the impact to 11.50 Editions?

This withdrawal does not impact on-going support for 11.50. IBM will continue to support this version. With regard to 11.50, the withdrawal simply removes four 11.50 media packs from PPA.

I see many primary programs listed. Are these products being withdrawn entirely?

No. Actually, many of the affected parts are media parts. There are some license and support & subscription parts, as well. There are three primary part types affected:
  1. Parts starting with the letter “B” are media parts.
  2. Parts starting with the letter “D” are license and reinstatement parts.
  3. Parts starting with the letter “E” are Support & Subscription parts.

I see several DataBlades listed? Is Informix eliminating DataBlades altogether?

No. Some of the DataBlades are not as popular as others and several are now included in the database server by default. For instance, the Web, Spatial, and TimeSeries DataBlades are included by default. Both the Spatial and TimeSeries blades are auto-registered and ready to use out of the box. The Web Datablade is included in the manufacturing bundle and available for setup. For those customers that are actively using the Spatial and Web DataBlades, we will continue to offer support if you need it.

The Geodetic DataBlade looks like it is withdrawn altogether. Is this true?

No. We are withdrawing the Geodetic DataBlade from marketing, but we will continue to support customers that are actively using it. The Geodetic Datablade is a 3rd party DataBlade that is no longer available for purchase. We are currently working toward future possibilities for 3-D or Earth coordinates.

What products will be withdrawn from marketing and support?


Image Foundation
Withdrawing the Image Foundation DataBlade from marketing and announcing End of Support for 2H 2013. There is no replacement for this DataBlade.

Real Time Loader
Withdrawing the Informix Real Time Loader from marketing and announcing End of Support for 2H 2013. Current Informix Editions have an updated replacement to assist in the loading of TimeSeries data.

Informix Server Administrator
The Informix Server Administrator will be withdrawn from marketing and announcing End of Support in 2H 2013. Informix offers the Open Admin Tool for database monitoring. This tool is bundled with the Informix Editions and available for download.

Workgroup DataBlade Bundle
The Workgroup DataBlade Bundle will be withdrawn from marketing and announcing End of Support for 2H 2013. This product bundle will be reviewed and active DataBlades will be published to the DeveloperWorks web site.

What products will be withdrawn from marketing and have automatic migrations to replacement products?


Standard Engine (SE), SE Personal
We are NOT withdrawing Standard Engine, but rather consolidating several SE editions that were marketed in the past for specific end users. We are withdrawing some outdated media part numbers and SE Personal Edition from marketing and providing an automatic migration to Standard Engine Runtime. 

Online Extended Edition for Linux, online Personal Edition, online
We are NOT withdrawing Informix online, but rather consolidating several online editions that were marketed in the past for specific end users. 
Users who currently have online Extended Edition for Linux will automatically migrate to online Extended Edition. online Personal Edition users will automatically migrate to online Extended Edition.
We are announcing End of Support for Informix online on the Informix PLC web site for version 5.11. Version 5.20 is currently available.

What products will be withdrawn from marketing, but still supported?


Geodetic Datablade
Withdrawing the Geodetic blade from marketing. We will continue to provide support for end users that are actively using this data blade.

Web Datablade
Withdrawing the Web Datablade from marketing. This functionality is currently available in the latest Informix Editions. We will continue to provide support for this product for end users that are actively using this data blade.

Spatial Datablade
Withdrawing the Spatial Datablade from marketing. This functionality is currently available in the latest Informix Editions. We will continue to provide support for this product for end users that are actively using this data blade.

11.50 Informix Editions (Enterprise, Workgroup, Express, Choice, Growth, Ultimate, Warehouse)
We are withdrawing the 11.50 Informix Editions from marketing. Existing users will be able to continue renewing support and migrate to 11.70 Informix Editions.

What older versions of an active product will be withdrawn from marketing?


Connect, Connect Runtime
Withdrawing version 3.0 and 3.5 media parts. Latest versions of 3.70 are available for Connect and Connect Runtime.

Client SDK
Withdrawing version 3.0 and 3.5 media parts. Latest versions of 3.70 are available for Client SDK.

JDBC
Withdrawing version 3.0 and 3.5 media parts. Latest versions of 3.70 are available for JDBC.

XPS
Withdrawing version 8.50. Version 8.51 is the latest available release. Our Informix PLC web site will be updated accordingly.

Excalibur Text Datablade
Withdrawing version 1.30. Version 1.31 is the latest available release. Our Informix PLC web site will be updated accordingly.

What products will announce EOS that have already been withdrawn from marketing?


Informix online
Informix online 5.11 has previously been removed from marketing. We are flagging EOS for Informix online 5.11 on our product life cycle web page.
Informix online 5.20 is currently available.

I-Star
I-Star has previously been removed from marketing. We are flagging EOS for I-Star 5.11 on our product life cycle web page.
The I-Star capabilities are incorporated into Informix Editions.

C-ISAM
Version 7.26 is the most current available release. We are flagging version 7.25 for EOS on our product life cycle web page.


http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=AN&subtype=CA&htmlfid=897/ENUS912-147&appname=USN

728x90

+ Recent posts