Unix DB2 Navigation for an Informix DBA
Upcoming SlideShare
Loading in...5
×
 

Unix DB2 Navigation for an Informix DBA

on

  • 884 views

 

Statistics

Views

Total Views
884
Views on SlideShare
884
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Db2sysc is the main process. One exists for each DB2 instance running.
  • DIAGLEVEL, NOTIFYLEVEL Value from 1 to 10 that instructs the engine on the severity of errors to log in the db2diag.log and the {instance}.nfy files. DIAGPATH, DFTDBPATH Show directory names for the error logging and the database files MAXAGENTS User connection limits SVCENAME Name as listed in the /etc/services file for this port. (Similar to sqlhosts file entries for Informix)

Unix DB2 Navigation for an Informix DBA Unix DB2 Navigation for an Informix DBA Presentation Transcript

  • Unix DB2 Navigation for an Informix DBA Kate Tomchik Lead DBA / The Home Depot Informix User Forum 2005 Moving Forward With Informix 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: /opt/hd/db/db2/instance/remm60> ps -fu remm60
    • UID PID PPID C STIME TTY TIME CMD
    • remm60 1335306 7127088 0 13:28:16 - 0:00 db2ipccm 0
    • remm60 1687694 7192802 0 13:18:55 pts/0 0:00 -ksh
    • remm60 1695826 4866232 0 13:28:17 - 0:00 db2srvlst 0
    • remm60 2252828 7127088 0 13:28:17 - 0:00 db2spmrm 0
    • remm60 3645576 4866232 0 13:28:17 - 0:00 db2resyn 0
    • remm60 4530428 1687694 1 13:28:24 pts/0 0:00 ps -fu remm60
    • remm60 4603946 7127088 0 13:28:16 - 0:00 db2tcpcm 0
    • remm60 4628634 7127088 0 13:28:16 - 0:00 db2tcpcm 0
    • remm60 4866232 7127088 0 13:28:16 - 0:00 db2gds 0
    • remm60 6955014 4866232 0 13:28:17 - 0:00 db2spmlw 0
    • remm60 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
  • 2 nd 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
  • 3 rd 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 Node:000
    • PID:573572(db2star2) TID:1 Appid:none
    • base sys utilities startdbm Probe:911
    • 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 [email_address]
    • 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:
    • Hardware type and operating system version >uname –a #ex AIX 5.1
    • DB2 version
    • Configuration file, environment variables
    • 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=1125904201875456
    • [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 = DPR060TA
    • Database name = DPR060TA
    • Local database directory = /opt/hd/db/db2/dbdir/dpr060ta
    • Database release level = 9.00
    • Comment =
    • Directory entry type = Indirect
    • Catalog node number = 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 = 0
    • Name = SYSCATSPACE
    • Type = System managed space
    • Contents = Any data
    • State = 0x0000
    • Detailed explanation:
    • Normal
    • Tablespace ID = 1
    • Name = TEMPSPACE1
    • Type = System managed space
    • Contents = Temporary data
    • State = 0x0000
    • Detailed explanation:
    • Normal
    • Tablespace ID = 2
    • Name = USERSPACE1
    • Type = System managed space
    • Contents = Any data
    • State = 0x0000
    • Detailed explanation:
    • Normal
  • Data space issues
    • User created tablespace:
    • Tablespace ID = 3
    • Name = PR001TAAQB
    • Type = Database managed space
    • Contents = Any data
    • State = 0x0000
    • Detailed explanation:
    • Normal
    • 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 = 3
    • Name = PR001TAAQB
    • Type = Database managed space
    • Contents = Any data
    • State = 0x0000
    • Detailed explanation:
    • Normal
    • Total pages = 100000
    • Useable pages = 99968
    • Used pages = 99968
    • Free pages = 0
    • High water mark (pages) = 99968
    • Page size (bytes) = 4096
    • Extent size (pages) = 32
    • Prefetch size (pages) = 32
    • Number of containers = 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
  • Unix DB2 Navigation for an Informix DBA Kate Tomchik [email_address] [email_address] Informix User Forum 2005 Moving Forward With Informix Atlanta, Georgia December 8-9, 2005