|   | 
	 
  
    | 
RSS Feed - WebSphere MQ Support
 | 
RSS Feed - Message Broker Support
 |   
 
  
	     | 
	 | 
   
 
  
	|  DB transactionality in API exit | 
	« View previous topic :: View next topic »  | 
   
  
  	
	  
		
		
		  | Author | 
		  Message
		 |  
		
		  | yashgt | 
		  
		    
			  
				 Posted: Mon Aug 31, 2015 9:10 pm    Post subject: DB transactionality in API exit | 
				     | 
			   
			 
		   | 
		 
		
		   Apprentice
 
 Joined: 11 Nov 2014 Posts: 38
  
  | 
		  
		    
			  
				Hi,
 
 
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.0.1/com.ibm.mq.amqzag.doc/fa20000_.htm
 
This links states that the exit function can operate in the application's unit of work.
 
 
Imagine the application starts a UOW:
 
MQPUT a message to a queue
 
Insert a record in table T1 of a DB
 
 
Also, we have a Put_After exit function that also inserts a record in table T2 of the same DB. 
 
 
As per the above link Webesphere MQ acting as a XA Transaction Manager, will treat the insertion into T1 and T2 as a single XA transaction. 
 
 
My question is, will DB2 treat the two insertions as a single transaction?
 
 
Regards,
 
Yash | 
			   
			 
		   | 
		 
		
		  | Back to top | 
		  
		  	
		   | 
		 
		
		    | 
		 
		
		  | Vitor | 
		  
		    
			  
				 Posted: Tue Sep 01, 2015 4:54 am    Post subject: Re: DB transactionality in API exit | 
				     | 
			   
			 
		   | 
		 
		
		    Grand High Poobah
 
 Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA 
  | 
		  
		    
			  
				
   
	| yashgt wrote: | 
   
  
	| My question is, will DB2 treat the two insertions as a single transaction? | 
   
 
 
 
How have you configured DB2 to participate in the XA transaction?
 
 
Or "post the switch files" if you prefer.    _________________ Honesty is the best policy.
 
Insanity is the best defence. | 
			   
			 
		   | 
		 
		
		  | Back to top | 
		  
		  	
		   | 
		 
		
		    | 
		 
		
		  | yashgt | 
		  
		    
			  
				 Posted: Wed Sep 02, 2015 9:35 pm    Post subject: QM.ini | 
				     | 
			   
			 
		   | 
		 
		
		   Apprentice
 
 Joined: 11 Nov 2014 Posts: 38
  
  | 
		  
		    
			  
				
   
	| Code: | 
   
  
	ExitPath:
 
   ExitsDefaultPath=/var/mqm/exits
 
   ExitsDefaultPath64=/var/mqm/exits64
 
#*                                                                 *#
 
#*                                                                 *#
 
Log:
 
   LogPrimaryFiles=3
 
   LogSecondaryFiles=2
 
   LogFilePages=4096
 
   LogType=CIRCULAR
 
   LogBufferPages=0
 
   LogPath=/var/mqm/log/TESTQM!MQM/
 
   LogWriteIntegrity=TripleWrite
 
Service:
 
   Name=AuthorizationService
 
   EntryPoints=14
 
ServiceComponent:
 
   Service=AuthorizationService
 
   Name=MQSeries.UNIX.auth.service
 
   Module=amqzfu
 
   ComponentDataSize=0
 
XAResourceManager:
 
    Name=TESTDB
 
    SwitchFile=db2swit
 
    XAOpenString=TESTDB,test,test123,toc=t,hold_cursor=t
 
    ThreadOfControl=THREAD
 
ApiExitLocal:
 
    Sequence=100
 
    Function=EntryPoint
 
    Module=/home/me/myApiExit/libamqsaxe
 
    Name=SampleApiExit | 
   
 
 | 
			   
			 
		   | 
		 
		
		  | Back to top | 
		  
		  	
		   | 
		 
		
		    | 
		 
		
		  | Vitor | 
		  
		    
			  
				 Posted: Thu Sep 03, 2015 4:19 am    Post subject: Re: DB transactionality in API exit | 
				     | 
			   
			 
		   | 
		 
		
		    Grand High Poobah
 
 Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA 
  | 
		  
		    
			  
				
   
	| Vitor wrote: | 
   
  
	
   
	| yashgt wrote: | 
   
  
	| My question is, will DB2 treat the two insertions as a single transaction? | 
   
 
 
 
How have you configured DB2 to participate in the XA transaction?
 
 
Or "post the switch files" if you prefer.    | 
   
 
 
 
Ok, so that's the MQ configuration. What about the DB2....? _________________ Honesty is the best policy.
 
Insanity is the best defence. | 
			   
			 
		   | 
		 
		
		  | Back to top | 
		  
		  	
		   | 
		 
		
		    | 
		 
		
		  | yashgt | 
		  
		    
			  
				 Posted: Mon Sep 07, 2015 3:59 am    Post subject:  | 
				     | 
			   
			 
		   | 
		 
		
		   Apprentice
 
 Joined: 11 Nov 2014 Posts: 38
  
  | 
		  
		    
			  
				Is there any specific parameter you would want to look at in the DB2 configuration?
 
 
Here is the configuration:
 
 
       Database Configuration for Database mydb
 
 
 Database configuration release level                    = 0x0f00
 
 Database release level                                  = 0x0f00
 
 
 Database territory                                      = US
 
 Database code page                                      = 819
 
 Database code set                                       = ISO8859-1
 
 Database country/region code                            = 1
 
 Database collating sequence                             = UNIQUE
 
 Alternate collating sequence              (ALT_COLLATE) = 
 
 Number compatibility                                    = OFF
 
 Varchar2 compatibility                                  = OFF
 
 Date compatibility                                      = OFF
 
 Database page size                                      = 4096
 
 
 Statement concentrator                      (STMT_CONC) = OFF
 
 
 Discovery support for this database       (DISCOVER_DB) = ENABLE
 
 
 Restrict access                                         = NO
 
 Default query optimization class         (DFT_QUERYOPT) = 5
 
 Degree of parallelism                      (DFT_DEGREE) = 1
 
 Continue upon arithmetic exceptions   (DFT_SQLMATHWARN) = NO
 
 Default refresh age                   (DFT_REFRESH_AGE) = 0
 
 Default maintained table types for opt (DFT_MTTB_TYPES) = SYSTEM
 
 Number of frequent values retained     (NUM_FREQVALUES) = 10
 
 Number of quantiles retained            (NUM_QUANTILES) = 20
 
 
 Decimal floating point rounding mode  (DECFLT_ROUNDING) = ROUND_HALF_EVEN
 
 
 Backup pending                                          = NO
 
 
 All committed transactions have been written to disk    = NO
 
 Rollforward pending                                     = NO
 
 Restore pending                                         = NO
 
 
 Multi-page file allocation enabled                      = YES
 
 
 Log retain for recovery status                          = NO
 
 User exit for logging status                            = NO
 
 
 Self tuning memory                    (SELF_TUNING_MEM) = ON
 
 Size of database shared memory (4KB)  (DATABASE_MEMORY) = AUTOMATIC(126520)
 
 Database memory threshold               (DB_MEM_THRESH) = 10
 
 Max storage for lock list (4KB)              (LOCKLIST) = AUTOMATIC(11872)
 
 Percent. of lock lists per application       (MAXLOCKS) = AUTOMATIC(97)
 
 Package cache size (4KB)                   (PCKCACHESZ) = AUTOMATIC(31821)
 
 Sort heap thres for shared sorts (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(1419)
 
 Sort list heap (4KB)                         (SORTHEAP) = AUTOMATIC(283)
 
 
 Database heap (4KB)                            (DBHEAP) = AUTOMATIC(2321)
 
 Catalog cache size (4KB)              (CATALOGCACHE_SZ) = 157
 
 Log buffer size (4KB)                        (LOGBUFSZ) = 1130
 
 Utilities heap size (4KB)                (UTIL_HEAP_SZ) = 5000
 
 Buffer pool size (pages)                     (BUFFPAGE) = 1000
 
 SQL statement heap (4KB)                     (STMTHEAP) = AUTOMATIC(8192)
 
 Default application heap (4KB)             (APPLHEAPSZ) = AUTOMATIC(256)
 
 Application Memory Size (4KB)             (APPL_MEMORY) = AUTOMATIC(40000)
 
 Statistics heap size (4KB)               (STAT_HEAP_SZ) = AUTOMATIC(4384)
 
 
 Interval for checking deadlock (ms)         (DLCHKTIME) = 10000
 
 Lock timeout (sec)                        (LOCKTIMEOUT) = -1
 
 
 Changed pages threshold                (CHNGPGS_THRESH) = 80
 
 Number of asynchronous page cleaners   (NUM_IOCLEANERS) = AUTOMATIC(2)
 
 Number of I/O servers                   (NUM_IOSERVERS) = AUTOMATIC(3)
 
 Index sort flag                             (INDEXSORT) = YES
 
 Sequential detect flag                      (SEQDETECT) = YES
 
 Default prefetch size (pages)         (DFT_PREFETCH_SZ) = AUTOMATIC
 
 
 Track modified pages                         (TRACKMOD) = NO
 
 
 Default number of containers                            = 1
 
 Default tablespace extentsize (pages)   (DFT_EXTENT_SZ) = 32
 
 
 Max number of active applications            (MAXAPPLS) = AUTOMATIC(40)
 
 Average number of active applications       (AVG_APPLS) = AUTOMATIC(1)
 
 Max DB files open per application            (MAXFILOP) = 61440
 
 
 Log file size (4KB)                         (LOGFILSIZ) = 1024
 
 Number of primary log files                (LOGPRIMARY) = 13
 
 Number of secondary log files               (LOGSECOND) = 12
 
 Changed path to log files                  (NEWLOGPATH) = 
 
 Path to log files                                       = /home/devcit/devcit/NODE0000/SQL00025/LOGSTREAM0000/
 
 Overflow log path                     (OVERFLOWLOGPATH) = 
 
 Mirror log path                         (MIRRORLOGPATH) = 
 
 First active log file                                   = 
 
 Block log on disk full                (BLK_LOG_DSK_FUL) = NO
 
 Block non logged operations            (BLOCKNONLOGGED) = NO
 
 Percent max primary log space by transaction  (MAX_LOG) = 0
 
 Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
 
 
 Percent log file reclaimed before soft chckpt (SOFTMAX) = 520
 
 
 HADR database role                                      = STANDARD
 
 HADR local host name                  (HADR_LOCAL_HOST) = 
 
 HADR local service name                (HADR_LOCAL_SVC) = 
 
 HADR remote host name                (HADR_REMOTE_HOST) = 
 
 HADR remote service name              (HADR_REMOTE_SVC) = 
 
 HADR instance name of remote server  (HADR_REMOTE_INST) = 
 
 HADR timeout value                       (HADR_TIMEOUT) = 120
 
 HADR target list                     (HADR_TARGET_LIST) = 
 
 HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC
 
 HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = 0
 
 HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0
 
 HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0
 
 
 First log archive method                 (LOGARCHMETH1) = OFF
 
 Archive compression for logarchmeth1    (LOGARCHCOMPR1) = OFF
 
 Options for logarchmeth1                  (LOGARCHOPT1) = 
 
 Second log archive method                (LOGARCHMETH2) = OFF
 
 Archive compression for logarchmeth2    (LOGARCHCOMPR2) = OFF
 
 Options for logarchmeth2                  (LOGARCHOPT2) = 
 
 Failover log archive path                (FAILARCHPATH) = 
 
 Number of log archive retries on error   (NUMARCHRETRY) = 5
 
 Log archive retry Delay (secs)         (ARCHRETRYDELAY) = 20
 
 Vendor options                              (VENDOROPT) = 
 
 
 Auto restart enabled                      (AUTORESTART) = ON
 
 Index re-creation time and redo index build  (INDEXREC) = SYSTEM (RESTART)
 
 Log pages during index build            (LOGINDEXBUILD) = OFF
 
 Default number of loadrec sessions    (DFT_LOADREC_SES) = 1
 
 Number of database backups to retain   (NUM_DB_BACKUPS) = 12
 
 Recovery history retention (days)     (REC_HIS_RETENTN) = 366
 
 Auto deletion of recovery objects    (AUTO_DEL_REC_OBJ) = OFF
 
 
 TSM management class                    (TSM_MGMTCLASS) = 
 
 TSM node name                            (TSM_NODENAME) = 
 
 TSM owner                                   (TSM_OWNER) = 
 
 TSM password                             (TSM_PASSWORD) = 
 
 
 Automatic maintenance                      (AUTO_MAINT) = ON
 
   Automatic database backup            (AUTO_DB_BACKUP) = OFF
 
   Automatic table maintenance          (AUTO_TBL_MAINT) = ON
 
     Automatic runstats                  (AUTO_RUNSTATS) = ON
 
       Real-time statistics            (AUTO_STMT_STATS) = ON
 
       Statistical views              (AUTO_STATS_VIEWS) = OFF
 
       Automatic sampling                (AUTO_SAMPLING) = OFF
 
     Automatic statistics profiling    (AUTO_STATS_PROF) = OFF
 
       Statistics profile updates        (AUTO_PROF_UPD) = OFF
 
     Automatic reorganization               (AUTO_REORG) = OFF
 
 
 Auto-Revalidation                          (AUTO_REVAL) = DEFERRED
 
 Currently Committed                        (CUR_COMMIT) = ON
 
 CHAR output with DECIMAL input        (DEC_TO_CHAR_FMT) = NEW
 
 Enable XML Character operations        (ENABLE_XMLCHAR) = YES
 
 WLM Collection Interval (minutes)     (WLM_COLLECT_INT) = 0
 
 Monitor Collect Settings
 
 Request metrics                       (MON_REQ_METRICS) = BASE
 
 Activity metrics                      (MON_ACT_METRICS) = BASE
 
 Object metrics                        (MON_OBJ_METRICS) = EXTENDED
 
 Routine data                             (MON_RTN_DATA) = NONE
 
   Routine executable list            (MON_RTN_EXECLIST) = OFF
 
 Unit of work events                      (MON_UOW_DATA) = BASE
 
   UOW events with package list        (MON_UOW_PKGLIST) = OFF
 
   UOW events with executable list    (MON_UOW_EXECLIST) = OFF
 
 Lock timeout events                   (MON_LOCKTIMEOUT) = NONE
 
 Deadlock events                          (MON_DEADLOCK) = WITHOUT_HIST
 
 Lock wait events                         (MON_LOCKWAIT) = NONE
 
 Lock wait event threshold               (MON_LW_THRESH) = 5000000
 
 Number of package list entries         (MON_PKGLIST_SZ) = 32
 
 Lock event notification level         (MON_LCK_MSG_LVL) = 1
 
 
 SMTP Server                               (SMTP_SERVER) = 
 
 SQL conditional compilation flags         (SQL_CCFLAGS) = 
 
 Section actuals setting               (SECTION_ACTUALS) = NONE
 
 Connect procedure                        (CONNECT_PROC) = 
 
 Adjust temporal SYSTEM_TIME period (SYSTIME_PERIOD_ADJ) = NO
 
 Log DDL Statements                      (LOG_DDL_STMTS) = NO
 
 Log Application Information             (LOG_APPL_INFO) = NO
 
 Default data capture on new Schemas   (DFT_SCHEMAS_DCC) = NO
 
 Database is in write suspend state                      = NO | 
			   
			 
		   | 
		 
		
		  | Back to top | 
		  
		  	
		   | 
		 
		
		    | 
		 
		
		  | 
		    
		   | 
		 
	   
	 | 
   
 
  
	     | 
	 | 
	Page 1 of 1 | 
   
 
 
 
  
  	
	  
		
		  
 
  | 
		  You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
  | 
  		 
	   
	 | 
   
 
  	 | 
	  |