By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,004 Members | 1,296 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,004 IT Pros & Developers. It's quick & easy.

XA oddness....

P: n/a
Has anyone seen this one before?

I have an application which was working through an XA Transaction
Manager. This applicaiton did one database update, committed (twice)
and then ended. The XA TM performed the commits and closed down
cleanly.

I now have several locks in my database on the specific table the
application was updating which show these entries in the snapshot:
Application handle = 0
Application ID =
GA6471C5.C4E4.0609F5215329
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.C4E4.0609F5215329
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected
Application handle = 0
Application ID = GA6471C5.P4CE.
050156170414
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.P4CE.050156170414
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected
There are a few more, but you get the idea. Have I somehow uncovered a
means to zombie database activity? I am running UDB 8.2 on AIX 5.3.

The issue is, as the locks show, the application ended. The handle
associated with it is now internally tracked as zero. How do I get rid
of these? The FORCE APPLICATION(0) does not work. It gives me an
error:
db2 =force application (0)
SQL1230W At least one agent id specified could not be forced.

As if the id of 0 isn't valid. When I do a snapshot of applications
(or LIST APPLICATIONS SHOW DETAIL), they don't show either so I
suspect some validation routine is in the way.

Help!
Dec 17 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
On Dec 17, 9:21 pm, TheAndroid <a_w_ab...@yahoo.comwrote:
Has anyone seen this one before?

I have an application which was working through an XA Transaction
Manager. This applicaiton did one database update, committed (twice)
and then ended. The XA TM performed the commits and closed down
cleanly.

I now have several locks in my database on the specific table the
application was updating which show these entries in the snapshot:
Application handle = 0
Application ID =
GA6471C5.C4E4.0609F5215329
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.C4E4.0609F5215329
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected

Application handle = 0
Application ID = GA6471C5.P4CE.
050156170414
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.P4CE.050156170414
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected

There are a few more, but you get the idea. Have I somehow uncovered a
means to zombie database activity? I am running UDB 8.2 on AIX 5.3.

The issue is, as the locks show, the application ended. The handle
associated with it is now internally tracked as zero. How do I get rid
of these? The FORCE APPLICATION(0) does not work. It gives me an
error:
db2 =force application (0)
SQL1230W At least one agent id specified could not be forced.

As if the id of 0 isn't valid. When I do a snapshot of applications
(or LIST APPLICATIONS SHOW DETAIL), they don't show either so I
suspect some validation routine is in the way.

Help!
There are no locks in the output you provided (I assume you did a
"snapshot for applications"). Try opening a clp and do an update
without commiting, then take a snapshot and you will see the
difference.

/Lennart
Dec 18 '07 #2

P: n/a
On Dec 18, 3:04 am, Lennart <Erik.Lennart.Jons...@gmail.comwrote:
On Dec 17, 9:21 pm, TheAndroid <a_w_ab...@yahoo.comwrote:
Has anyone seen this one before?
I have an application which was working through an XA Transaction
Manager. This applicaiton did one database update, committed (twice)
and then ended. The XA TM performed the commits and closed down
cleanly.
I now have several locks in my database on the specific table the
application was updating which show these entries in the snapshot:
Application handle = 0
Application ID =
GA6471C5.C4E4.0609F5215329
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.C4E4.0609F5215329
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected
Application handle = 0
Application ID = GA6471C5.P4CE.
050156170414
Sequence number = 0001DBMTPMBM
C2LPROD
Application name = MBMTransactionManag
GA6471C5.P4CE.050156170414
CONNECT Authorization ID = C2LPROD
Application status = Transaction Ended
Status change time = Not Collected
Application code page = 819
Total wait time (ms) = Not Collected
There are a few more, but you get the idea. Have I somehow uncovered a
means to zombie database activity? I am running UDB 8.2 on AIX 5.3.
The issue is, as the locks show, the application ended. The handle
associated with it is now internally tracked as zero. How do I get rid
of these? The FORCE APPLICATION(0) does not work. It gives me an
error:
db2 =force application (0)
SQL1230W At least one agent id specified could not be forced.
As if the id of 0 isn't valid. When I do a snapshot of applications
(or LIST APPLICATIONS SHOW DETAIL), they don't show either so I
suspect some validation routine is in the way.
Help!

There are no locks in the output you provided (I assume you did a
"snapshot for applications"). Try opening a clp and do an update
without commiting, then take a snapshot and you will see the
difference.
Ooops, I realize now that maybe this whas not what you where asking
about. Sorry if that is the case

/Lennart

Dec 18 '07 #3

P: n/a
Lennart,
Thanks for the help. You were on the right track!
It turns out that if the TM calls xa_close without calling xa_end,
xa_commit (or xa_rollback) and a UOW is active, the UDB XA interface
flat abandons the UOW without rolling it back.
So, indeed, I have created zombie applications holding locks. The
only way to clear them (at least for me) was to db2stop and db2start
the database. At that point, the UDB engine rolls back UOW and closes
the locks as part of its startup.
Dec 18 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.