Informix User Forum 2005 Moving Forward With Informix Unix DB2 Navigation for an Informix DBA Kate Tomchik Lead DBA / The Home Depot Atlanta, Georgia December 8-9, 2005 DB2 Navigation for an Informix DBA Informix Users Cheat Sheet for Unix DB2 Support First rule of DBA support When user calls with a problem verify the database is up. If not restart it. If it is, get permission to bounce it. DB2 Instances running > db2ilist #-- not always set up cpainp95:/opt/hd/db/db2/instance/adfi11> db2ilist adis32 adis33 adfi11 > Ps -ef | grep db2sysc | grep -v grep cpainp95: /home/lkt01> ps -ef | grep db2sysc | grep -v grep adfi11 876768 917730 0 Jul 27 - 0:09 db2sysc 0 adis33 1056790 1392730 0 Jul 27 - 0:09 db2sysc 0 adis32 1933360 2170886 0 Aug 12 - 0:01 db2sysc 0 Typical DB2 processes cpainp95: /home/lkt01> ps -fu adfi11 | grep db2 adfi11 647364 876768 0 Jul 27 - 0:36 db2gds 0 adfi11 786632 876768 0 Jul 27 - 0:04 db2ipccm 0 adfi11 811222 647364 0 Aug 13 - 0:04 db2dlock (DAD014FI) 0 adfi11 876768 917730 0 Jul 27 - 0:09 db2sysc 0 adfi11 901346 876768 0 Jul 27 - 0:00 db2syslog 0 adfi11 934120 647364 0 Jul 27 - 0:00 db2srvlst 0 adfi11 983280 876768 0 Jul 27 - 0:00 db2tcpcm 0 adfi11 999672 876768 0 Jul 27 - 0:00 db2resync 0 adfi11 1016056 876768 0 Jul 27 - 0:00 db2spmrsy 0 adfi11 1040638 647364 0 Jul 27 - 0:00 db2spmlw 0 adfi11 1261798 647364 0 Aug 13 - 0:06 db2loggw (DAD014FI) 0 adfi11 1327176 786632 0 Jul 27 - 2:42 db2agent (instance) 0 adfi11 1491052 647364 0 Jul 27 - 0:02 db2cart 0 adfi11 1556610 647364 0 Jul 27 - 1:19 db2agent (DAD014FI) 0 adfi11 1564804 647364 0 Jul 27 - 0:03 db2agent (idle) 0 adfi11 1753190 647364 0 Aug 13 - 0:00 db2pfchr 0 adfi11 1884196 647364 0 Aug 13 - 0:00 db2event (DB2DETAILDEADLOCK) 0 adfi11 2015258 647364 0 Aug 13 - 0:00 db2pfchr 0 adfi11 2023660 647364 0 Aug 13 - 0:00 db2loggr (DAD014FI) 0 adfi11 2433208 647364 0 Aug 13 - 0:00 db2pclnr 0 Start an Instance >oninit # --- in Informix > db2start #--- run as id of instance cpaiad28: /opt/hd/db/db2/> su – remm60 cpaiad28: /opt/hd/db/db2/instance/remm60> db2start 08-16-2005 13:28:17 0 0 SQL1063N DB2START processing was successful. SQL1063N DB2START processing was successful. Start an Instance (con’t) cpaiad28: UID remm60 remm60 remm60 remm60 remm60 remm60 remm60 remm60 remm60 remm60 remm60 /opt/hd/db/db2/instance/remm60> ps -fu remm60 PID PPID C STIME TTY TIME CMD 1335306 7127088 0 13:28:16 - 0:00 db2ipccm 0 1687694 7192802 0 13:18:55 pts/0 0:00 -ksh 1695826 4866232 0 13:28:17 - 0:00 db2srvlst 0 2252828 7127088 0 13:28:17 - 0:00 db2spmrm 0 3645576 4866232 0 13:28:17 - 0:00 db2resyn 0 4530428 1687694 1 13:28:24 pts/0 0:00 ps -fu remm60 4603946 7127088 0 13:28:16 - 0:00 db2tcpcm 0 4628634 7127088 0 13:28:16 - 0:00 db2tcpcm 0 4866232 7127088 0 13:28:16 - 0:00 db2gds 0 6955014 4866232 0 13:28:17 - 0:00 db2spmlw 0 7127088 4997122 0 13:28:16 - 0:00 db2sysc 0 Stop an Instance > onmode -ky # --- in informix > db2stop # --- run as userid of instance cpaiad28: /opt/hd/db/db2/instance/remm60 > db2stop 08-16-2005 13:22:17 0 0 SQL1064N DB2STOP processing was successful. SQL1064N DB2STOP processing was successful. > ps -fu remm60 UID PID PPID C STIME TTY TIME CMD remm60 1687694 7192802 0 13:18:55 pts/0 0:00 -ksh remm60 4538434 1687694 1 13:27:02 pts/0 0:00 ps –fu remm60 Hard Kill an Instance (bad way) Informix: > ps -ef | grep oninit # --- find #1 owned process > kill -9 {PID} DB2: > ps -ef | grep db2sysc {0} # --- 0 process for multiprocessor engine > kill -9 {PID} Db2_kill (less corruption risk) > db2_kill # db2 utility cpaiad28: /opt/hd/db/db2/instance/remm60> db2_kill cpaiad28: ipclean: Removing DB2 engine and client's IPC resources for remm60. cpaiad28: db2nkill [] completed ok 2nd Rule of DBA Support If one user is stopping a 100 users from getting to their tables, Kill the Offending Process. >db2 list applications show detail # identify bad process and get the Appl. Handle and Coordinator PID/Thread. db2 force appliction {AH} # similar to onmode –z {PID} in Informix 3rd Rule – Check the log files >{db2path} / db2dump / db2diag.log cpainp95:/opt/hd/db/db2/instance/adfi11/sqllib/db2dump> ls -l total 10352 -rw-rw-rw- 1 adfi11 sysadm 4821 Jul 27 07:46 adfi11.nfy -rw-rw-rw- 1 adfi11 sysadm 46803 Jul 27 12:04 db2diag.log -rw-r----- 1 adfi11 sysadm 5242044 Jul 27 07:36 db2eventlog.000.crash db2diag.log – main log of database activity adfi11.nfy file contains notifications. db2eventlog.000 files are similar to /tmp/af files since they are created during database errors but they are not readable. Send to IBM when opening a PMR. Adis32.nfy (v8 file) ADM7514W Database manager has stopped. ^^ 2004-04-02-18.57.12.883227 Instance:adis32 PID:573572(db2star2) TID:1 Appid:none base sys utilities startdbm Probe:911 Node:000 ADM7513W Database manager has started. ^^ 2005-11-02-13.12.15.570194 Instance:adis32 Node:000 PID:2457760(db2agent (CQMASTR2) 0) TID:1 Appid:*LOCAL.adis32.0800F2181219 database monitor sqm.evmgr::log_ev_err Probe:2 Database:DAD036IS ADM2004E The Event Monitor "DB2DETAILDEADLOCK" was not activated because there was not enough storage space in the database monitor heap. To remedy this problem, increase the MON_HEAP_SZ DBM configuration parameter and restart the instance. Db2diag.log ADM7513W Database manager has started. 2005-08-02-15.01.16.014367 Instance:adis32 Node:000 PID:2318574(db2agent (DAD033IS) 0) TID:1 Appid:*LOCAL.adis32.0003D2190114 database utilities sqlubcka Probe:0 Database:DAD033IS Starting a full database backup. 2005-08-02-15.01.53.519377 Instance:adis32 Node:000 PID:2318574(db2agent (DAD033IS) 0) TID:1 Appid:*LOCAL.adis32.0003D2190114 database utilities sqlubcka Probe:128 Database:DAD033IS Estimated size of backup in bytes: 0x0FFFFFFFFFFF5008 : 0x0000000008489000 .....H.. 2005-08-02-15.01.53.524680 Instance:adis32 Node:000 PID:2318574(db2agent (DAD033IS) 0) TID:1 Appid:*LOCAL.adis32.0003D2190114 database utilities sqlubcka Probe:128 Database:DAD033IS Actual size of backup in bytes: 0x0FFFFFFFFFFF5010 : 0x0000000008405000 .....@P. 2005-08-02-15.01.53.529787 Instance:adis32 Node:000 PID:2318574(db2agent (DAD033IS) 0) TID:1 Appid:*LOCAL.adis32.0003D2190114 database utilities sqlubcka Probe:130 Database:DAD033IS Backup Complete. When all else fails - Call Support IBM support calls create PMRs {Problem Management Record} You will want already have the following: 1) Hardware type and operating system version >uname –a #ex AIX 5.1 2) DB2 version 3) Configuration file, environment variables 4) Ability to send the log files via ftp to IBM. Version of DB2 > su - adfi11 # enter password > db2level cpainp95:/opt/hd/db/db2/instance/adfi11> db2level DB21085I Instance "adfi11" uses "32" bits and DB2 code release SQL08013" with level identifier "02040106". Informational tokens are "DB2 v8.1.1.24", "s030728", "U488481", and FixPak "3". Product is installed at "/usr/opt/db2_08_01". DB2 Environment Variables cpainp95:> env | grep DB2 DB2INSTANCE=adfi11 cpainp95:> db2set -all [i] DB2COMM=tcpip [i] DB2AUTOSTART=YES [g] DB2_EEE_LICENSE_POLICY=1125904201 875456 [g] DB2ADMINSERVER=db2as View the Configuration File Informix >view $INFORMIXDIR/etc/onconfig >view $INFORMIXDIR/etc/sqlhosts DB2 > db2 get dbm cfg | more #--- you scroll through the file. Updates cannot be made directly to the file, you use a utility > db2 update dbm cfg using {parameter} {value} Current path similar to >echo $INFORMIXDIR but each instance has a different location > db2path cpainp95:/opt/hd/db/db2/instance/adfi11> db2path /opt/hd/db/db2/instance/adfi11/sqllib Advanced Beginning Functions Recommendation: Take a class if you really need to work in UDB DB2. Warning: The beginning class shows everything through a GUI interface. The following shows the basics using command line functions. Databases for an Instance Must run as the instance owner: > db2 "list db directory" System Database Directory Number of entries in the directory = 1 Database 1 entry: Database alias Database name Local database directory Database release level Comment Directory entry type Catalog node number = DPR060TA = DPR060TA = /opt/hd/db/db2/dbdir/dpr060ta = 9.00 = = Indirect =0 Database Connection State > db2 "get connection state" Database Connection State Connection state = Connectable and Unconnected Connection mode = Local database alias = Database name = Connect to a Database Informix > dbaccess {database} {command.sql} Gives error if the instance has not been started > db2 connect to dpr060ta Database Connection Information Database server = DB2/6000 7.2.6 SQL authorization ID = REMM60 Local database alias = DPR060TA Instance creation You must have root access to create You must have user ids created for each instance, where as in Informix you could always just use Informix You may also create a fenced user id for the instance. This ID does not have system administration (sysadm) privileges > db2icrt -u {instance fenced id} {instance} Some parameters in the DBM Database Manager Configuration Node type = Enterprise Server Edition with local and remote clients Diagnostic error capture level (DIAGLEVEL) = 3 Notify Level (NOTIFYLEVEL) = 2 Diagnostic data directory path (DIAGPATH) = /opt/hd/db/db2/instance/adis32/sqllib/db2dump Default database path (DFTDBPATH) = /opt/hd/db/db2/instance/adis32 Max number of existing agents (MAXAGENTS) = 400 TCP/IP Service name (SVCENAME) = adis32 No. of int. communication buffers(4KB) (FCM_NUM_BUFFERS) = 4096 Make a Backup Db2 “backup db {database} {online} {incremental} use {adsm} Multipartition: Db2_all “<<+0<db2 backup db {database} {online} {incremental} use {adsm} Example Db2 “ backup db dpr060mm online use adsm” Check quality of the backup Checksum: Db2adutl verify full taken at {datetime} db {database} Example: Db2adutl verify full taken at 20040512171343 db dpr010sa Get list of past backups > db2 list history backup all for {database} Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID -- --- ------------------ ---- --- ------------ ------------ -------------B D 20050927020010001 N A S0000509.LOG S0000510.LOG ---------------------------------------------------------------------------Contains 7 tablespace(s): 00001 SYSCATSPACE 00002 WCSDATA4K 00003 WCSINDEX4K 00004 WCSDATA8K 00005 WCSINDEX8K 00006 WCSDATA16K 00007 WCSINDEX16K ---------------------------------------------------------------------------Comment: DB2 BACKUP DPR010SA ONLINE Start Time: 20050927020010 End Time: 20050927020043 ---------------------------------------------------------------------------00013 Location: adsm/libtsm.a Restore Database command Db2 “restore database {database} use {tsm} taken at {date/time} NOTE: This is the start time from the history output. Example Restore Get last good backup date/time: >db2 list history backup all for dpr010sa Check attached users: >db2 list applications Force users off: db2 force applications all Run restore as nohup: >nohup db2 “restore database dpr010sa use tsm taken 20040512171343” Verify completed: >db2 “connect to dpr010sa” Run SQL Against a table db2 connect to {database} Db2 “select * from {table-name} Example: >db2 “select substr(tabname,1,18) as table_name from syscat.tables where type=‘T’ order by 1” # gets system tables External SQL file for run Create a file that contains each SQL command separated by a “;” cpaita28: /usr/ra/bin> cat count.sql > select count(*) from syscat.tables where type='T'; > select count(*) from syscat.indexes; Run an sql file: >db2 –tvf {sql file} –z {output file} Example: >db2 –tvf count.sql –z count.out Some Important System Tables Prefix with owner/schema syscat Tables Indexes Dbauth Tabauth Dependancies Tablespaces tbspaceauth Data space issues db2 “list tablespaces” Tablespaces for Current Database Tablespace ID Name Type Contents State Detailed explanation: Normal =0 = SYSCATSPACE = System managed space = Any data = 0x0000 Tablespace ID Name Type Contents State Detailed explanation: Normal =1 = TEMPSPACE1 = System managed space = Temporary data = 0x0000 Tablespace ID Name Type Contents State Detailed explanation: Normal =2 = USERSPACE1 = System managed space = Any data = 0x0000 Data space issues User created tablespace: Tablespace ID Name Type Contents State Detailed explanation: Normal =3 = PR001TAAQB = Database managed space = Any data = 0x0000 System managed space: automatic expansions up to the max size of the file system. Database managed space: dba allocates additional space Data space – Detailed information > db2 “list tablespaces show detail” | more Tablespace ID Name Type Contents State Detailed explanation: Normal Total pages Useable pages Used pages Free pages High water mark (pages) Page size (bytes) Extent size (pages) Prefetch size (pages) Number of containers =3 = PR001TAAQB = Database managed space = Any data = 0x0000 = 100000 = 99968 = 99968 =0 = 99968 = 4096 = 32 = 32 =1 ##Includes used pages information and page size for additional allocations. Add disk space Expand the containers for a tablespace. >alter tablespace {tbspacename} extend (all containers {expand amount}); #Every container is expanded the same amount and data is blanced across all containers. Expand amount is in pages. Can take many minutes. Get Stored Procedure SQL Db2 “export to {filename} of del select text from syscat.procedures where procname=‘{ProcName}’” Example >db2 “export to filename.sql of del select text from syscat.procedures where procname=‘ADJUSTINV’” # creates procedure code in filename.sql Informix User Forum 2005 Moving Forward With Informix Unix DB2 Navigation for an Informix DBA Kate Tomchik Kate_Tomchik@HomeDepot.com kate@iiug.org Atlanta, Georgia December 8-9, 2005