Oracle Deadlock analysis
Is there a good book or document that covers IN DETAIL how to analysis both 60 and 2040 deadlock dumps. I have downloaded the metalink documents and for simple deadlock situations they work great.
I have, however, encountered dumps that did not provide straight forward information. The Metalink support analysis offered little help and I understand this is beyond the scope of their responsibility.
I did get help from a DBA on the metalink forum and by deduction something like "since you do not use Materialized View and IOT and there is no second table in the dump it must be Init Trans" he helped me resolve the problem by analysis of the dump file.
Now I have a weird 4020 error that makes little sense.
I would really like to learn how to read these dumps myself. There must be information somewhere. The Metalink Analysis pointed me to the White Papers mentioned above but our deadlocks are rarely that simple because we are careful to avoid them in our code.
If you know of any detailed information please let me know.
Thank You.
Is there a good book or document that covers IN DETAIL how to analysis both 60 and 2040 deadlock dumps. I have downloaded the metalink documents and for simple deadlock situations they work great.
I have, however, encountered dumps that did not provide straight forward information. The Metalink support analysis offered little help and I understand this is beyond the scope of their responsibility.
I did get help from a DBA on the metalink forum and by deduction something like "since you do not use Materialized View and IOT and there is no second table in the dump it must be Init Trans" he helped me resolve the problem by analysis of the dump file.
Now I have a weird 4020 error that makes little sense.
I would really like to learn how to read these dumps myself. There must be information somewhere. The Metalink Analysis pointed me to the White Papers mentioned above but our deadlocks are rarely that simple because we are careful to avoid them in our code.
If you know of any detailed information please let me know.
Thank You.
Similar Messages
-
Bursting 2 Oracle BI Analysis type Data Set
Hi
We have 2 Oracle BI Analysis type Data Set.We are able to burst but in the email we just recieve only email attachement with only header(only column headings) ( in
excel/pdf output without any data.
But when we import the report xml and load into xml into template we are able to preview data in excel or PDF format.
Could you Please answer as soon as possible
Thanks
Niteshedit BI Analysis and remove any FILTER USING etc... save analysis and then try in BIP to add the BI Analysis data set.
-
Oracle 10g analysis workspace manager
I'm looking for a weblink to install Oracle 10g analysis workspace manager.
I'm not sure whether it's available for free download.
Can someone help me?..
Thanks,
BhagatHey;
Thanks again for the response. I tried dropping the repository and got a whole bunch of errors. While attempting to enable the sysman account, I realized that my password contained some characters that have special meaning for oracle and I think that's what was throwing it. The errors with the repository convinced me to try one more reinstall. Bit overkill, perhaps, but that's the whole point of a practice box. Once the database was up and running, teh enterprise manager is fully functional.
Now that I think about it, I wonder if that password could be responsible for my other schema issue as well...
Thanks again; I appreciate your time and patience.
Doug O'Leary -
*** 2003-12-25 01:02:42.782
*** SESSION ID:(12.3) 2003-12-25 01:02:42.732
DEADLOCK DETECTED
No current SQL statement being executed.
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
I have an application causing an Oracle deadlock with the following trace/dump. The app uses a single transaction to insert a record (containing a blob col) and then select it for update to use the blob col ref to add the blob value. Transaction commit/rollback is explicit after success/failure.
My question is, given that the trace file indicates the same process/session for the waiter and the blocker, can a single running app instance w/a single session and transaction, block itself? if so, what conditions produce such a deadlock...
Thanks for any help,
-Dean Palamides
Resource Name process session holds waits process session holds waits
TX-00010016-00000882 12 12 X 12 12 S
session 12: DID 0001-000C-00000002 session 12: DID 0001-000C-00000002
Rows waited on:
Session 12: obj - rowid = 00003152 - AAAAAAAADAAD45hAAA
(dictionary objn - 12626, file - 3, block - 1019489, slot - 0)
Information on the OTHER waiting sessions:
End of information on OTHER waiting sessions.Hi Dean:
We've had a similar problem (but doesn't manifest consistently), also single-thread, via JDBC "thin" onto Oracle 9.2.0.1.0... there's a MetaLink note, 130214.1, that shows the same symptom with Oracle 8.0 when MAX_TRANS of the LOB index is too low. I suspect in our case the INI_TRANS is too low (at 2), but LOB index storage parameters cannot be set in Orcle 9 - it's automatic.
Were you using JDBC? Is the problem the same when you use PL/SQL's DBMS_LOB.xxx procedures? What Oracle version do you have? Was it BLOB or CLOB? Is the failure consistent?
If I get any joy from Oracle support, I'll post it here... please let me know any particulars you have (such as above) about your problem. -
Oracle Deadlock Weblogic 8.1 sp4, Oracle 8i, StuckThreadMaxTime
It will be very helpful if you can suggest on the deadlock issue....
Application was fine for more than 6 months, all of a sudden Appplication goes down after throwing Oracle deadlock exception and after which all thread are hung and no ideal thread available to process incoming request.
We are using weblogic 8.1 sp4 and Oracle 8.1.7
"<WebLogicServer> <BEA-000337> <ExecuteThread: '19' for queue: 'weblogic.kernel.Default' has been busy for "1,209" seconds working on the request "Http Request: /requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>"
Attaching part of Thread dump and Jdbc log:
"ExecuteThread: '24' for queue: 'weblogic.kernel.Default'" daemon prio=10 tid=0006a308 nid=37 lwp_id=17700 runnable [0x574e400
0..0x574e34c0]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:134)
at oracle.net.ns.Packet.receive(Unknown Source)
at oracle.net.ns.DataPacket.receive(Unknown Source)
at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:971)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:941)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:432)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:783)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2885)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2976)
- locked <79098e48> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <5d00fca0> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4103)
- locked <79098e48> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <5d00fca0> (a oracle.jdbc.driver.T4CConnection)
at weblogic.jdbc.wrapper.PreparedStatement.execute(PreparedStatement.java:102)
at com.compoundrequester.dataobjects.DeliveryDO.creatOrderOnSubmitRequest(DeliveryDO.java:157)
at com.compoundrequester.servlets.RequestConfirmedServlet.processInitialScreen(RequestConfirmedServlet.java:
264)
at com.compoundrequester.servlets.RequestConfirmedServlet.service(RequestConfirmedServlet.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
at com.compoundrequester.servlets.AbstractRequesterServlet.forwardTo(AbstractRequesterServlet.java:140)
at com.compoundrequester.servlets.RequestInformationServlet.processSubmitRequest(RequestInformationServlet.j
ava:312)
JDBC log stream started at Mon Sep 10 03:00:51 EDT 2007
DriverManager.initialize: jdbc.drivers = null
JDBC DriverManager initialized
registerDriver: driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
DriverManager.getDriver("jdbc:oracle:thin:@prd-coats.prius.jnj.com:1601:CMIP1")
trying driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
getDriver returning driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
registerDriver: driver[className=weblogic.jdbc.jts.Driver,weblogic.jdbc.jts.Driver@8864af]
registerDriver: driver[className=weblogic.jdbc.pool.Driver,weblogic.jdbc.pool.Driver@c787d7]
registerDriver: driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@1051922]
DriverManager.getConnection("jdbc:oracle:thin:@ncsprd04.rar.ncsus.jnj.com:1573:cosmprp4")
trying driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
DriverManager.deregisterDriver: oracle.jdbc.driver.OracleDriver@1051922
getConnection returning driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
registerDriver: driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@1402772]
DriverManager.getConnection("jdbc:oracle:thin:@ncsprd04.rar.ncsus.jnj.com:1573:cosmprp4")
trying driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
DriverManager.deregisterDriver: oracle.jdbc.driver.OracleDriver@1402772
getConnection returning driver[className=oracle.jdbc.driver.OracleDriver,oracle.jdbc.driver.OracleDriver@893e69]
SQLException: SQLState(null) vendor code(17110)
java.sql.SQLException: execution completed with warning
at oracle.jdbc.driver.DatabaseError.newSqlException(DatabaseError.java:80)
at oracle.jdbc.driver.DatabaseError.newSqlException(DatabaseError.java:98)
java.sql.SQLException: Error (-60) caught executing stored procedure: ORA-00060: deadlock detected while waiting for resource
at com.compoundrequester.dataobjects.AbstractRequestorDataObject.checkStoredProcedure(AbstractRequestorDataObject.java:91)We solved the deadlock after changing code.
Issue is, when Submit button is clicked, it calls requestconfirmed servlet, which in turn calls a proceduer and gets stuck, we tested the same proceduer on development server, but on production it gives the following error, some how database is not processing requests fast enough...
<Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '20' for queue: 'weblogic.kernel.Default' has been busy for "821" seconds working on the request "Http Request: /us/requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
<Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '21' for queue: 'weblogic.kernel.Default' has been busy for "825" seconds working on the request "Http Request: /us/requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
<Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '22' for queue: 'weblogic.kernel.Default' has been busy for "1,125" seconds working on the request "Http Request: /us/requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
<Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '23' for queue: 'weblogic.kernel.Default' has been busy for "1,425" seconds working on the request "Http Request: /us/requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
<Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '24' for queue: 'weblogic.kernel.Default' has been busy for "1,121" seconds working on the request "Http Request: /us/requestconfirmed", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
Below is thread dump
Full thread dump [Wed Sep 19 11:58:59 EDT 2007] (Java HotSpot(TM) Server VM 1.4.2 1.4.2.05-040917-18:54-PA_RISC2.0 PA2.0 (aCC_AP) mixed mode):
"ListenThread.Default" prio=10 tid=0007a318 nid=62 lwp_id=24967 runnable [0x56d54000..0x56d544c0]
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
- locked <5d2455d8> (a java.net.PlainSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:454)
at java.net.ServerSocket.accept(ServerSocket.java:425)
at weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:26)
at weblogic.t3.srvr.ListenThread.accept(ListenThread.java:735)
at weblogic.t3.srvr.ListenThread.run(ListenThread.java:301)
"OracleTimeoutPollingThread" daemon prio=8 tid=01ddf950 nid=61 lwp_id=24114 waiting on condition [0x568cb000..0x568cb4c0]
at java.lang.Thread.sleep(Native Method)
at oracle.jdbc.driver.OracleTimeoutPollingThread.run(OracleTimeoutPollingThread.java:144)
"Thread-8" prio=8 tid=0007aa20 nid=60 lwp_id=24110 waiting on condition [0x5694c000..0x5694c4c0]
at java.lang.Thread.sleep(Native Method)
at com.jandj.rwjpri.us.release.REL1.run(REL1.java:221)
at java.lang.Thread.run(Thread.java:534)
"Thread-7" daemon prio=8 tid=0007a8b8 nid=59 lwp_id=24107 waiting on condition [0x569cd000..0x569cd4c0]
at java.lang.Thread.sleep(Native Method)
at com.jandj.rwjpri.us.sessiontracker.usSessionTracker.run(usSessionTracker.java:171)
at java.lang.Thread.run(Thread.java:534)
"Thread-6" prio=10 tid=0007a750 nid=58 lwp_id=24088 in Object.wait() [0x56a4e000..0x56a4e4c0]
at java.lang.Object.wait(Native Method)
- waiting on <5cfb8c18> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:429)
- locked <5cfb8c18> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:382)
"weblogic.health.CoreHealthMonitor" daemon prio=8 tid=0007a5e8 nid=57 lwp_id=24022 waiting on condition [0x56acf000..0x56acf4c0]
at java.lang.Thread.sleep(Native Method)
at weblogic.t3.srvr.CoreHealthMonitorThread.run(CoreHealthMonitorThread.java:128)
"Thread-5" prio=10 tid=0007a480 nid=56 lwp_id=24020 in Object.wait() [0x56b50000..0x56b504c0]
at java.lang.Object.wait(Native Method)
- waiting on <5cd1cdc0> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:429)
- locked <5cd1cdc0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:382)
"LDAPConnThread-0 ldap://NCSUSRAEBZWLA01:5001" daemon prio=10 tid=0007a1b0 nid=53 lwp_id=23989 runnable [0x56cd3000..0x56cd34c0]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:134)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
- locked <5cc37d78> (a java.io.BufferedInputStream)
at netscape.ldap.ber.stream.BERElement.getElement(BERElement.java:101)
at netscape.ldap.LDAPConnThread.run(LDAPConnThread.java:538)
at java.lang.Thread.run(Thread.java:534)
"VDE Transaction Processor Thread" prio=10 tid=00079ee0 nid=51 lwp_id=23986 in Object.wait() [0x56dd5000..0x56dd54c0]
at java.lang.Object.wait(Native Method)
- waiting on <5cc0c2c8> (a com.octetstring.vde.backend.standard.TransactionProcessor)
at java.lang.Object.wait(Object.java:429)
at com.octetstring.vde.backend.standard.TransactionProcessor.waitChange(TransactionProcessor.java:365)
- locked <5cc0c2c8> (a com.octetstring.vde.backend.standard.TransactionProcessor)
at com.octetstring.vde.backend.standard.TransactionProcessor.run(TransactionProcessor.java:212)
"ExecuteThread: '2' for queue: 'weblogic.admin.RMI'" daemon prio=10 tid=0007a048 nid=50 lwp_id=23985 in Object.wait() [0x56e56000..0x56e564c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5cb6f4f0> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '1' for queue: 'weblogic.admin.RMI'" daemon prio=10 tid=00079c10 nid=49 lwp_id=23984 in Object.wait() [0x56ed7000..0x56ed74c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5cb6efc8> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '0' for queue: 'weblogic.admin.RMI'" daemon prio=10 tid=00079d78 nid=48 lwp_id=23983 in Object.wait() [0x56f58000..0x56f584c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5cb6ea80> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=00079aa8 nid=47 lwp_id=23978 waiting for monitor entry [0x56fd9000..0x56fd94c0]
at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:93)
- waiting to lock <5ca5efe0> (a java.lang.String)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=00079940 nid=46 lwp_id=23977 waiting for monitor entry [0x5705a000..0x5705a4c0]
at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:93)
- waiting to lock <5ca5efe0> (a java.lang.String)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=000797d8 nid=45 lwp_id=23976 runnable [0x570db000..0x570db4c0]
at weblogic.socket.PosixSocketMuxer.poll(Native Method)
at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:100)
- locked <5ca5efe0> (a java.lang.String)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
"weblogic.security.SpinnerRandomSource" daemon prio=10 tid=00079670 nid=44 lwp_id=23974 in Object.wait() [0x5715c000..0x5715c4c0]
at java.lang.Object.wait(Native Method)
- waiting on <5ca48110> (a java.lang.Object)
at java.lang.Object.wait(Object.java:429)
at weblogic.security.SpinnerRandomBitsSource.run(SpinnerRandomBitsSource.java:60)
- locked <5ca48110> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:534)
"weblogic.time.TimeEventGenerator" daemon prio=10 tid=00079508 nid=43 lwp_id=23973 in Object.wait() [0x571dd000..0x571dd4c0]
at java.lang.Object.wait(Native Method)
- waiting on <5ca46690> (a weblogic.time.common.internal.TimeTable)
at weblogic.time.common.internal.TimeTable.snooze(TimeTable.java:272)
- locked <5ca46690> (a weblogic.time.common.internal.TimeTable)
at weblogic.time.common.internal.TimeEventGenerator.run(TimeEventGenerator.java:118)
at java.lang.Thread.run(Thread.java:534)
"ExecuteThread: '4' for queue: 'weblogic.kernel.System'" daemon prio=10 tid=000793a0 nid=42 lwp_id=23972 in Object.wait() [0x5725e000..0x5725e4c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5ca45e18> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '3' for queue: 'weblogic.kernel.System'" daemon prio=10 tid=00079238 nid=41 lwp_id=23971 in Object.wait() [0x572df000..0x572df4c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5ca45958> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '2' for queue: 'weblogic.kernel.System'" daemon prio=10 tid=000790d0 nid=40 lwp_id=23970 in Object.wait() [0x57360000..0x573604c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5ca45498> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '1' for queue: 'weblogic.kernel.System'" daemon prio=10 tid=00078f68 nid=39 lwp_id=23969 in Object.wait() [0x573e1000..0x573e14c0]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5ca44fd8> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '0' for queue: 'weblogic.kernel.System'" daemon prio=10 tid=00078e00 nid=38 lwp_id=23968 in Object.wait() [0x57462000..0x574624c0]
at java.lang.Object.wait(Native Method)
- waiting on <5ca44b18> (a weblogic.kernel.ExecuteThread)
at java.lang.Object.wait(Object.java:429)
at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:153)
- locked <5ca44b18> (a weblogic.kernel.ExecuteThread)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
"ExecuteThread: '24' for queue: 'weblogic.kernel.Default'" daemon prio=10 tid=00078c98 nid=37 lwp_id=23967 runnable [0x574e4000..0x574e34c0]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:134)
at oracle.net.ns.Packet.receive(Unknown Source)
at oracle.net.ns.DataPacket.receive(Unknown Source)
at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:971)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:941)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:432)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:783)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2885)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2976)
- locked <5d4c8b68> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <5d01e348> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4103)
- locked <5d4c8b68> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <5d01e348> (a oracle.jdbc.driver.T4CConnection)
at weblogic.jdbc.wrapper.PreparedStatement.execute(PreparedStatement.java:102)
at com.jnj.jjprd.compoundrequester.dataobjects.DeliveryDO.creatOrderOnSubmitRequest(DeliveryDO.java:157)
at com.jnj.jjprd.compoundrequester.servlets.RequestConfirmedServlet.processInitialScreen(RequestConfirmedServlet.java:264)
at com.jnj.jjprd.compoundrequester.servlets.RequestConfirmedServlet.service(RequestConfirmedServlet.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
at com.jnj.jjprd.compoundrequester.servlets.AbstractRequesterServlet.forwardTo(AbstractRequesterServlet.java:140)
at com.jnj.jjprd.compoundrequester.servlets.RequestInformationServlet.processSubmitRequest(RequestInformationServlet.java:312)
at com.jnj.jjprd.compoundrequester.servlets.RequestInformationServlet.service(RequestInformationServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
"ExecuteThread: '23' for queue: 'weblogic.kernel.Default'" daemon prio=10 tid=00078b30 nid=36 lwp_id=23966 runnable [0x57565000..0x575644c0]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:134)
at oracle.net.ns.Packet.receive(Unknown Source)
at oracle.net.ns.DataPacket.receive(Unknown Source)
at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:971)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:941)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:432)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:783)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2885)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2976)
- locked <7a880610> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <7a880958> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4103)
- locked <7a880610> (a oracle.jdbc.driver.T4CCallableStatement)
- locked <7a880958> (a oracle.jdbc.driver.T4CConnection)
at weblogic.jdbc.wrapper.PreparedStatement.execute(PreparedStatement.java:102)
at com.jnj.jjprd.compoundrequester.dataobjects.DeliveryDO.creatOrderOnSubmitRequest(DeliveryDO.java:157)
at com.jnj.jjprd.compoundrequester.servlets.RequestConfirmedServlet.processInitialScreen(RequestConfirmedServlet.java:264)
at com.jnj.jjprd.compoundrequester.servlets.RequestConfirmedServlet.service(RequestConfirmedServlet.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
at com.jnj.jjprd.compoundrequester.servlets.AbstractRequesterServlet.forwardTo(AbstractRequesterServlet.java:140)
at com.jnj.jjprd.compoundrequester.servlets.RequestInformationServlet.processSubmitRequest(RequestInformationServlet.java:312)
at com.jnj.jjprd.compoundrequester.servlets.RequestInformationServlet.service(RequestInformationServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
vs
Edited by sw_vishal at 09/25/2007 10:29 AM -
We are having severe problems with deadlocks in Oracle. We have a web-based student online course registration system that gets hit hard at the precise minute registration starts, then proceeds to generate between 100-200 trace files within 10 minutes, bringing the database to a near standstill. Every trace file contains the same SQL statement and I tried reorganizing the table referenced in the statement, allocating 100 initrans slots. This did not help at all. The application vendor is looking at their PL/SQL source, but denies that they have a problem. Does anyone have any suggestions?
Any input would be much appreciated,
Regards,
Don MorseTo solve deadlocks, the developer must ensure that in every transaction of the application, the tables are updated in same order.
That is:
Transaction 1
UPDATE T1
UPDATE T2
COMMIT
Transaction 2
UPDATE T1
UPDATE T2
COMMIT
And also, if you have multiple updates to the same table across the code of your application, they must be in the same order also.
Transaction 1
UPDATE T1 WHERE COL=1
UPDATE T1 WHERE COL=2
COMMIT
Transaction 2
UPDATE T1 WHERE COL=1
UPDATE T1 WHERE COL=2
COMMIT
If you cant be sure of the order, you can make more frecuent COMMIT, but be sure the database doesn't go inconsistent. -
Oracle deadlock - how to use "synchronised" keyword in a transaction?
Hi,
I use WL6.1 SP4, Oracle 8.1.6, with some Java objects which execute a
lot
of SQL queries (mixed update, insert and select) using plain JDBC
calls,
and Weblogic connection pools. These objects are called by servlets.
I experienced recently deadlocks when two users call the object at the
same
time (See error below).
I execute the queries using "synchronized" keyword in the following
way:
synchronized (this)
conConnection.setAutoCommit(false);
executeTransaction(myStatement);
conConnection.commit();
executeTransaction is overriden in sub-classes and is the method which
executes
all the queries.
It calls methods in other objects. These methods are not declared as
synchronized.
1) Should they?
2) Should I use the keyword "synchronized" in another way?
3) This part of code is also called when I do only "select"
statements. I guess
it should only be synchronized when we do "update" and "insert" which
could lead
to a deadlock?
4) Do you have any idea why this deadlock occurs as I use the
"synchronized"
keyword, and one thread should wait until the other one has finished?
Thanks for any idea,
Stéphanie
----------------- error:
<ExecuteThread: '4' for queue: 'default'> <> <> <000000> <SQL request
sent to database: UPDATE PARTICIPANT par SET par.PARTICIPANTLASTRANK =
4 WHERE par.IDPARTICIPANT = 8983566>
<ExecuteThread: '11' for queue: 'default'> <> <> <000000> <SQL request
sent to database: UPDATE PARTICIPANT par SET par.PARTICIPANTLASTRANK =
6 WHERE par.IDPARTICIPANT = 8983570>
ORA-00060: deadlock detected while waiting for resource
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:796)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:872)
at weblogic.jdbc.rmi.internal.StatementImpl.executeUpdate(StatementImpl.java:89)
at weblogic.jdbc.rmi.SerialStatement.executeUpdate(SerialStatement.java:100)
at bfinance.framework.EDBBLBean.executeSQL(EDBBLBean.java:299)Hi Stepanie,
I'd try to group update statement together. Usually it helps.
Regards,
Slava Imeshev
"Stephanie" <[email protected]> wrote in message
news:[email protected]...
Thanks for your answer.
In the case you describe, is there a way to ensure that tx-2 waits for
tx-1
to be finished before beginning?
My transaction which causes the problem is the following (simplified):
UPDATE tableA SET islast=0 WHERE externalid=myid;
for (int i=0; i< aVector.size(); i++) {
INSERT INTO tableA (id, islast, ranking, externalid) (SELECT
SEQ_tableA.nextval, 1, 0, myid);
UPDATE tableA SET ranking = /*calculated ranking */
WHERE externalid=myid AND islast=1;
UPDATE tableB ....
commit;
tx-1 and tx-2 execute this transaction at the same time. tx-1 begins
The deadlock appears when tx-2 executes the second UPDATE tableA
query.
I don't see how I can avoid to execute these two update queries, so if
I can find another way to prevent deadlock, it would be great!
Stéphanie
Joseph Weinstein <[email protected]_this> wrote in message
news:<[email protected]_this>...
Stephanie wrote:
Hi,
I use WL6.1 SP4, Oracle 8.1.6, with some Java objects which execute a
lot
of SQL queries (mixed update, insert and select) using plain JDBC
calls,
and Weblogic connection pools. These objects are called by servlets.
I experienced recently deadlocks when two users call the object at the
same
time (See error below).Hi. The error you are getting isn't necessarily from a lack ofsynchronization
of your java objects. It has to do with the order in which you accessDBMS
data. You are getting ordinary DBMS deadlocks, which are caused when
two DBMS connections each have a lock the other wants, in order toproceed.
The DBMS will quickly discover this and will kill one transaction inorder to
let the other one proceed:
time 0: tx-1 and tx-2 have started.....
time 1: tx-1: update tableA set val = 1 where key = 'A'
time 2: tx-2: update tableB set val = 2 where key = 'B'
time 3: tx-1: update tableB set val = 1 where key = 'B' (waitsbecause tx-2 has the row
locked)
time 4: tx-2: update tableA set val = 2 where key = 'A' (waitsbecause tx-1 has the row
locked)
This is a deadlock. The solution is to organize your application code sothat every
transaction accesses the data in the same order, eg: update tableAfirst, then update tableB.
This will prevent deadlocks.
Joe Weinstein at BEA
I execute the queries using "synchronized" keyword in the following
way:
synchronized (this)
conConnection.setAutoCommit(false);
executeTransaction(myStatement);
conConnection.commit();
executeTransaction is overriden in sub-classes and is the method which
executes
all the queries.
It calls methods in other objects. These methods are not declared as
synchronized.
1) Should they?
2) Should I use the keyword "synchronized" in another way?
3) This part of code is also called when I do only "select"
statements. I guess
it should only be synchronized when we do "update" and "insert" which
could lead
to a deadlock?
4) Do you have any idea why this deadlock occurs as I use the
"synchronized"
keyword, and one thread should wait until the other one has finished?
Thanks for any idea,
Stéphanie
----------------- error:
<ExecuteThread: '4' for queue: 'default'> <> <> <000000> <SQL request
sent to database: UPDATE PARTICIPANT par SET par.PARTICIPANTLASTRANK =
4 WHERE par.IDPARTICIPANT = 8983566>
<ExecuteThread: '11' for queue: 'default'> <> <> <000000> <SQL request
sent to database: UPDATE PARTICIPANT par SET par.PARTICIPANTLASTRANK =
6 WHERE par.IDPARTICIPANT = 8983570>
ORA-00060: deadlock detected while waiting for resource
at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
atoracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
atoracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
atoracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047
atoracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
atoracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java
:2709)
atoracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:796)
atweblogic.jdbc.pool.Statement.executeUpdate(Statement.java:872)
atweblogic.jdbc.rmi.internal.StatementImpl.executeUpdate(StatementImpl.java:89
atweblogic.jdbc.rmi.SerialStatement.executeUpdate(SerialStatement.java:100)
at bfinance.framework.EDBBLBean.executeSQL(EDBBLBean.java:299) -
Oracle deadlocks on delete statement
I had a package procedure that deletes from a inline-view. It worked well and didn't create any database locks, looked like this:
PROCEDURE serverdisconnect(pCode1 NUMERIC, pCode2 NUMERIC) IS
BEGIN
DELETE FROM
SELECT cl.* FROM CurrentLogins cl, Accounts a
WHERE cl.Code1 = pCode1
AND cl.Code2 = pCode2
AND cl.Code = a.code
AND a.Type = 'lplayer'
ORDER BY a.code
COMMIT;
END serverdisconnect;I slightly changed the procedure to look like following, and deadlocks started to come:
PROCEDURE ServerDisconnect(pCode1 NUMERIC, pCode2 NUMERIC, pChannelServerCode CurrentLogins.ChannelServerCode%TYPE, pDeleteList OUT cursor_type)
IS
vDeleteList sys.ODCINumberList;
BEGIN
DELETE FROM
SELECT cl.* FROM CurrentLogins cl, Accounts a
WHERE cl.Code1 = pCode1
AND cl.Code2 = pCode2
AND cl.Code = a.code
AND cl.ChannelServerCode = pChannelServerCode
AND cl.Code = a.code
AND a.Type = 'lplayer'
) RETURNING Code
BULK COLLECT INTO vDeleteList;
OPEN pDeleteList FOR
SELECT * FROM TABLE(vDeleteList);
COMMIT;
END ServerDisconnect;As you see the main difference in the delete statement is that i removed "ORDER BY"-clause? Can really such data ordering plays a role with dead locking? Does the data records be always ordered with ORDER-BY-clause same way always to avoid deadlock? Why i started to get deadlock after changing the procedure?
I have Oracle 10g.Yes, typo, i fixed initial post now.
Delete will be technically done on table CurrentLogins, using that inline-view.
I will move the Commit to proper place as you suggested.
but still i don't understand why deadlocks started to occure.
Maybe really the answer is having "order by" clause, which solves the deadlocks?
See this link:
http://www.oracle-base.com/articles/misc/Deadlocks.php
>
To resolve the issue, make sure that rows in tables are always locked in the same order.
>
Does it says that i always have to have "order by" sentence included into my delete statement?
Relationships between tables:
alter table CURRENTLOGINS
add constraint FK_CURRENTLOGINS_ACCOUNTS foreign key (CODE)
references ACCOUNTS (CODE);Maybe ORDER-BY really solves deadlocks then, see:
http://www.dbasupport.com/forums/archive/index.php/t-50438.html
>
Add an explicit ORDER BY to the select, and it will probably go away.
>
Edited by: CharlesRoos on Sep 9, 2010 6:05 AM -
Troubleshooting tuxedo services .. related to Oracle deadlock errors
Afternoon all,
I support an application that allows API calls to tuxedo services using messages comprised of FML fields. Our application sits on an OracleDB that is experiencing deadlock issues, one of the tuxedo servers involved in the deadlock is one that advertises services accessed by the API calls so I'm trying to rule it out as the source.
Is there any way to trace/log the services in detail so that I can tie the deadlocks directly to a call of a tuxedo service?
I've looked into TMTRACE, but I'm not sure this is going to give me the detail I need.
Changing application code is not an option unfortunately.
Thanks,
AdamHi Todd,
Thanks for the quick response.
Aplogies for the ignorance, but what do you mean by XA / local database transaction?
Our architecture is such that a tuxedo server, that offers the services our APIs talk to, makes the Oracle updates. Is that XA or local?
Oracle's logging and deadlock messages show me what the updates are, but I'm trying to make sure 100% that an API called service is instigating that update.
Hope that is clear enough!
Cheers,
Adam
Todd Little wrote:
Hi Adam,
Are the Tuxedo services using XA transactions or only local database transactions? The reason I ask is that TSAM offers the ability to track XA transactions and might be able to tell you what's happening. It can also track services and call paths, i.e., complete end-to-end call tracking from a Tuxedo client, through intervening servers (services).
If you are not using XA transactions, I'm afraid there isn't a lot that Tuxedo can provide you as Tuxedo is unaware of the underlying database requests. In fact, if you aren't using XA transactions, Tuxedo doesn't even know a database is involved it the processing of requests.
I would think you should be able to trace things from the database side, but you'd have to ask that question over in the database forums as I'm not familiar enough with what tracing/debugging facilities on the database side to give you much help.
Regards,
Todd Little
Oracle Tuxedo Chief Architect -
hi,
i am using oracle 11g in windows 2003 server. i stimulated oracle dead lock but i want a script which should show me whether the lock is dead lock or normal lock etc......
Plz can anyone tell me what all the tables i should use to get the information?????
Thanks in advanceThere is no query to check for deadlocks - since deadlocks are handled (or resolved immediately) by Oracle kernel.
For transactional locks, you can query V$lock, v$locked_object, dba_blockers. -
Best Oracle DB Analysing utility
Hai Experts,
I need a Software , to help the Oracle Database Optimization...(such a as statspack analyser/details of long sql operations...etc..)
so please give me the details of the best tools available in the market (Free/Paid software)..
regards,
jp
Edited by: jp@valapad on Mar 17, 2010 1:23 AMHi
V 11.1.0.7
AWR , ADDM , SPA , DBMS_ADVISOR , DBMS_SQLTUNE .....
EE and separate license is required to use them
T -
Javascript error in Oracle BI analysis
Hi all,
I am getting the following js error when i am creating analyses.
this error happens when i drag and drop column from subject area to selected column panel.
And nothing happen rather than showing column.
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MALC)
Timestamp: Tue, 30 Oct 2012 08:28:12 UTC
Message: 'kmsgPickerUIJSCantAddColumns' is undefined
Line: 1
Char: 1781
Code: 0
URI: http://127.0.0.1:9704/analytics/res/b_mozilla/picker.js
Message: 'kmsgPickerUIJSCantAddColumns' is undefined
Line: 1
Char: 1781
Code: 0
URI: http://127.0.0.1:9704/analytics/res/b_mozilla/picker.jsHi prassu,
Thanks for reply,
we don't change anything. we don't even know where it is.
can u tell me location of the file that i can replace?
this start happens after we change ip address of BI server.
same problem happens on any browser.
With Regards,
WP -
Hi All,
I have installed Oracle Express server & OSA Server in my Sun solaris server machine,where my oracle 8.0 database is running and Oracle Express client & OSA client in another machine(Working in Windows 95 platform). I have done all basic settings properly. Further,it is allowing to create dimensions using Relational Access Manager in client machine. But,I am getting SNAPI error, while trying to connect OSA server from OSA client.
Can you please help me.
Thanks in advance.
swamiYou'll probably get more responses to this if it's posted under "Business Intelligence". This forum is specifically for users of Oracle Projects applications (Project Costing, Project Billing, etc.).
-
Deadlock Analysis help required
Hi,
In our environment we received an deadlock as below. Could any one please help me understand the cause of this deadlock. This occurred on SQL Server 2005 Sp4. Update stats and reindexing occurs daily once in the night.
<EVENT_INSTANCE>
<EventType>DEADLOCK_GRAPH</EventType>
<PostTime>2014-10-16T03:01:56.317</PostTime>
<SPID>21</SPID>
<TextData>
<deadlock-list>
<deadlock victim="process4445978">
<process-list>
<process id="process4445978" taskpriority="0" logused="18444" waitresource="KEY: 61:72057599368822784 (ef00451cf601)" waittime="1965" ownerId="31549861052"
transactionname="INSERT" lasttranstarted="2014-10-16T03:01:54.317" XDES="0x5cfd1faa50" lockMode="S" schedulerid="23" kpid="66500" status="suspended" spid="98" sbid="0"
ecid="0" priority="0" transcount="1" lastbatchstarted="2014-10-16T03:01:54.297" lastbatchcompleted="2014-10-16T03:01:54.293" clientapp="IMPT" hostname="IMPT" hostpid="328" loginname="sa"
isolationlevel="read committed (2)" xactid="31549861052" currentdb="61" lockTimeout="4294967295" clientoption1="134348832" clientoption2="49192">
<executionStack>
<frame procname="DBName.dbo.CheckTAR" line="11" stmtstart="892" stmtend="2416" sqlhandle="0x03003d00cecb4b0b1b9d5a00f09f00000000000000000000">
select @bking = cting.bking_id,
@company = bking.company_code,
@dest = bking.bking_dest_type,
@bking_type = isnull( bking_type, 'B' ),
@travel_type = cting.cting_travel_type,
@best = IsNull( cting_offered_local, 0.00 ),
@pub = IsNull( cting_regular_local, 0.00 ),
@reason = cting_reason_code,
@reason_acc = reason_code_acc,
@account_code = cting.account_code,
@ticket = IsNull( cting.cting_ticket_number, '' ),
@basefare = cting.service_sell_local
from bking, cting
where bking.agency_id = cting.agency_id
and bking.bking_id = cting.bking_id
and cting.cting_unique = @cting
and cting.agency_id = @agency_id
-- if BSP cting, ticket number is required </frame>
<frame procname="DBName.dbo.cn_ai_cting" line="70" stmtstart="6180" stmtend="6324" sqlhandle="0x03003d0072a4ec0aa86f5800c5a300000100000000000000">
select @tar = dbo.CheckTAR( @agency_id, @cting )
-- Missing TAR </frame>
<frame procname="DBName.dbo.tr_cting_iu" line="259" stmtstart="26016" stmtend="26124" sqlhandle="0x03003d00ab3a29741fa27201b8a300000000000000000000">
exec cn_ai_cting @agency_id, @bking, @cting </frame>
<frame procname="adhoc" line="1" stmtstart="2608" sqlhandle="0x0200000042b0400dc6178184082a38472f12940cda29b1a3">
INSERT INTO [cting]([agency_id],[bking_id],[cting_unique],[currency_code],[iata_code],[account_code],[service_cost_basis],[service_cost_amount],[service_cost_exchange],[service_cost_local],[service_sell_basis],[service_sell_amount],[service_sell_exchange],[service_sell_local],[cting_total_discount],[cting_total_tax],[cting_total_override],[cting_override_amount],[cting_override_percent],[cting_rebate_amount],[cting_rebate_percent],[service_sell_voucher],[cting_received],[cting_remitted],[cting_payment_due],[cting_reason_code],[cting_region],[cting_cost_centre],[office_code],[cting_carrier],[cting_designator],[cting_ticket_number],[cting_conjunction],[cting_ticket_sold],[cting_ticket_cash],[cting_ticket_cash_tax],[cting_ticket_credit],[cting_ticket_credit_tax],[cting_company],[cting_discount_percent],[cting_tax_percent],[cting_commission_percent],[cting_commission_amount],[cting_fop_card],[cting_fop_account],[credit_display],[cting_status],[user
</frame>
<frame procname="adhoc" line="1" sqlhandle="0x020000004752571d04c3e3b7c69eff6934faf515098b050f">
INSERT INTO cting ( agency_id , bking_id , cting_unique , currency_code , iata_code , account_code , service_cost_basis , service_cost_amount , service_cost_exchange , service_cost_local , service_sell_basis , service_sell_amount , service_sell_exchange , service_sell_local
, cting_total_discount , cting_total_tax , cting_total_override , cting_override_amount , cting_override_percent , cting_rebate_amount , cting_rebate_percent , service_sell_voucher , cting_received , cting_remitted , cting_payment_due , cting_reason_code ,
cting_region , cting_cost_centre , office_code , cting_carrier , cting_designator , cting_ticket_number , cting_conjunction , cting_ticket_sold , cting_ticket_cash , cting_ticket_cash_tax , cting_ticket_credit , cting_ticket_credit_tax , cting_company , cting_discount_percent
, cting_tax_percent , cting_commission_percent , cting_commission_amount , cting_fop_card , cting_fop_account , credit_display , cting_status , users </frame>
</executionStack>
<inputbuf>
INSERT INTO cting ( agency_id , bking_id , cting_unique , currency_code , iata_code , account_code , service_cost_basis , service_cost_amount , service_cost_exchange , service_cost_local , service_sell_basis , service_sell_amount , service_sell_exchange , service_sell_local
, cting_total_discount , cting_total_tax , cting_total_override , cting_override_amount , cting_override_percent , cting_rebate_amount , cting_rebate_percent , service_sell_voucher , cting_received , cting_remitted , cting_payment_due , cting_reason_code ,
cting_region , cting_cost_centre , office_code , cting_carrier , cting_designator , cting_ticket_number , cting_conjunction , cting_ticket_sold , cting_ticket_cash , cting_ticket_cash_tax , cting_ticket_credit , cting_ticket_credit_tax , cting_company , cting_discount_percent
, cting_tax_percent , cting_commission_percent , cting_commission_amount , cting_fop_card , cting_fop_account , credit_display , cting_status , user </inputbuf>
</process>
<process id="process17627438" taskpriority="0" logused="21992" waitresource="KEY: 61:72057599368822784 (fa00dbccee86)" waittime="1981" ownerId="31549861037"
transactionname="INSERT" lasttranstarted="2014-10-16T03:01:54.313" XDES="0x2bb7a58850" lockMode="S" schedulerid="4" kpid="86920" status="suspended" spid="75" sbid="0"
ecid="0" priority="0" transcount="1" lastbatchstarted="2014-10-16T03:01:54.293" lastbatchcompleted="2014-10-16T03:01:54.290" clientapp="IMPT" hostname="IMPT" hostpid="2264" loginname="sa"
isolationlevel="read committed (2)" xactid="31549861037" currentdb="61" lockTimeout="4294967295" clientoption1="134348832" clientoption2="49192">
<executionStack>
<frame procname="DBName.dbo.CheckTAR" line="11" stmtstart="892" stmtend="2416" sqlhandle="0x03003d00cecb4b0b1b9d5a00f09f00000000000000000000">
select @bking = cting.bking_id,
@company = bking.company_code,
@dest = bking.bking_dest_type,
@bking_type = isnull( bking_type, 'B' ),
@travel_type = cting.cting_travel_type,
@best = IsNull( cting_offered_local, 0.00 ),
@pub = IsNull( cting_regular_local, 0.00 ),
@reason = cting_reason_code,
@reason_acc = reason_code_acc,
@account_code = cting.account_code,
@ticket = IsNull( cting.cting_ticket_number, '' ),
@basefare = cting.service_sell_local
from bking, cting
where bking.agency_id = cting.agency_id
and bking.bking_id = cting.bking_id
and cting.cting_unique = @cting
and cting.agency_id = @agency_id
-- if BSP cting, ticket number is required </frame>
<frame procname="DBName.dbo.cn_ai_cting" line="70" stmtstart="6180" stmtend="6324" sqlhandle="0x03003d0072a4ec0aa86f5800c5a300000100000000000000">
select @tar = dbo.CheckTAR( @agency_id, @cting )
-- Missing TAR </frame>
<frame procname="DBName.dbo.tr_cting_iu" line="259" stmtstart="26016" stmtend="26124" sqlhandle="0x03003d00ab3a29741fa27201b8a300000000000000000000">
exec cn_ai_cting @agency_id, @bking, @cting </frame>
<frame procname="adhoc" line="1" stmtstart="2608" sqlhandle="0x0200000042b0400dc6178184082a38472f12940cda29b1a3">
INSERT INTO [cting]([agency_id],[bking_id],[cting_unique],[currency_code],[iata_code],[account_code],[service_cost_basis],[service_cost_amount],[service_cost_exchange],[service_cost_local],[service_sell_basis],[service_sell_amount],[service_sell_exchange],[service_sell_local],[cting_total_discount],[cting_total_tax],[cting_total_override],[cting_override_amount],[cting_override_percent],[cting_rebate_amount],[cting_rebate_percent],[service_sell_voucher],[cting_received],[cting_remitted],[cting_payment_due],[cting_reason_code],[cting_region],[cting_cost_centre],[office_code],[cting_carrier],[cting_designator],[cting_ticket_number],[cting_conjunction],[cting_ticket_sold],[cting_ticket_cash],[cting_ticket_cash_tax],[cting_ticket_credit],[cting_ticket_credit_tax],[cting_company],[cting_discount_percent],[cting_tax_percent],[cting_commission_percent],[cting_commission_amount],[cting_fop_card],[cting_fop_account],[credit_display],[cting_status],[user
</frame>
<frame procname="adhoc" line="1" sqlhandle="0x02000000dbecfc160f5260e7011ee92610cf7802483d2cff">
INSERT INTO cting ( agency_id , bking_id , cting_unique , currency_code , iata_code , account_code , service_cost_basis , service_cost_amount , service_cost_exchange , service_cost_local , service_sell_basis , service_sell_amount , service_sell_exchange , service_sell_local
, cting_total_discount , cting_total_tax , cting_total_override , cting_override_amount , cting_override_percent , cting_rebate_amount , cting_rebate_percent , service_sell_voucher , cting_received , cting_remitted , cting_payment_due , cting_reason_code ,
cting_region , cting_cost_centre , office_code , cting_carrier , cting_designator , cting_ticket_number , cting_conjunction , cting_ticket_sold , cting_ticket_cash , cting_ticket_cash_tax , cting_ticket_credit , cting_ticket_credit_tax , cting_company , cting_discount_percent
, cting_tax_percent , cting_commission_percent , cting_commission_amount , cting_fop_card , cting_fop_account , credit_display , cting_status , users </frame>
</executionStack>
<inputbuf>
INSERT INTO cting ( agency_id , bking_id , cting_unique , currency_code , iata_code , account_code , service_cost_basis , service_cost_amount , service_cost_exchange , service_cost_local , service_sell_basis , service_sell_amount , service_sell_exchange , service_sell_local
, cting_total_discount , cting_total_tax , cting_total_override , cting_override_amount , cting_override_percent , cting_rebate_amount , cting_rebate_percent , service_sell_voucher , cting_received , cting_remitted , cting_payment_due , cting_reason_code ,
cting_region , cting_cost_centre , office_code , cting_carrier , cting_designator , cting_ticket_number , cting_conjunction , cting_ticket_sold , cting_ticket_cash , cting_ticket_cash_tax , cting_ticket_credit , cting_ticket_credit_tax , cting_company , cting_discount_percent
, cting_tax_percent , cting_commission_percent , cting_commission_amount , cting_fop_card , cting_fop_account , credit_display , cting_status , user </inputbuf>
</process>
</process-list>
<resource-list>
<keylock hobtid="72057599368822784" dbid="61" objectname="DBName.dbo.cting" indexname="_dta_index_cting_66_1872829834__K104_K2_K1_5_13_21_25_65_71_72_122" id="lock2fdfacb00"
mode="X" associatedObjectId="72057599368822784">
<owner-list>
<owner id="process4445978" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process17627438" mode="S" requestType="wait" />
</waiter-list>
</keylock>
<keylock hobtid="72057599368822784" dbid="61" objectname="DBName.dbo.cting" indexname="_dta_index_cting_66_1872829834__K104_K2_K1_5_13_21_25_65_71_72_122" id="lock1a0c079a80"
mode="X" associatedObjectId="72057599368822784">
<owner-list>
<owner id="process17627438" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process4445978" mode="S" requestType="wait" />
</waiter-list>
</keylock>
</resource-list>
</deadlock>
</deadlock-list>
</TextData>
<TransactionID />
<LoginName>sa</LoginName>
<StartTime>2014-10-16T03:01:56.317</StartTime>
<ServerName>SQLInstName</ServerName>
<LoginSid>AQ==</LoginSid>
<EventSequence>31666061849</EventSequence>
<IsSystem>1</IsSystem>
<SessionLoginName />
</EVENT_INSTANCE>
Thanks,
PK>Do newer versions of SQL Server have more deadlocks than SQL2K and SQL7 versions?
No. There have been improvements to reduce them, especially RCSI which enables readers to not use locks. SQL 2014 introduced Memory-Optimized tables which are lock-free and latch-free and use true optimistic concurrency.
I have so far used neither, and neither is a guaranty.
The problem I kept running into is SQL Server not treating statements as atomic, and there was NOTHING I could do to change that, hence when you mentioned using applocks instead I recognized the situation.
But needing to use an applock like that means SQL Server's basic concurrency logic is broken.
I'm wondering if older versions did more work inside of atomic boundaries, certainly the code was generated in larger chunks than since 2005.
In the old days it was not uncommon for an application to handle and retry on deadlocks, treating them like an optimistic concurrency failure. You can see the legacy of this in that it still requires a trace flag to log deadlock details.
But SQL Server application development practice has evolved (right everyone ?) to treat deadlocks as bugs, and investigate and remediate them. The incidence is lower and the remediation options are more effective.
I went back and put retry logic into our apps, it wasn't a great solution but it was workable - for some cases.
Of course all optimistic locking apps are supposed to handle situations where collisions occur, but few do. That's a topic for another discussion, but in practice it's rare and mostly harmless. It seems there are more cases where deadlocks occur
and they are often more obscure when they do.
>SQL Server ... does the right thing all by itself as long as you follow some minimal best practices.
Mostly it does. For instance here the deadlock was caused by some really questionable design choices.
Are you referring here to the trigger? I don't really see a complete diagnosis here. I assume it's the nonatomic operations of his inserts, exactly what I'm talking about. And when that happens, it's not clear that either snapshot or memory
resident tables, will prevent the occurrence.
"Mostly" only in the probabilistic case of collisions rarely happening.
That the collisions need not happen in that they should be handled by normal locking procedures, is the issue.
Josh -
Deadlock when deleting from rsstatmanpsa during DSO activation
We are experiencing intermittent Oracle deadlocks during DSO activation in our BI system. The deadlocks occur when the following SQL statement is executed:
delete from rsstatmanpsa where
partnr >= l_s_status-rnr_sid and
psa = l_s_status-dta.
This is at line 83 of the SET STATUS method of class CL_RSSM_STATMAN. (See below for runtime error details.)
When these errors occur the background job for the DSO activation is cancelled with the message ABAP/4 processor: DBIF_RSQL_SQL_ERROR. Strangely, when this occurs as part of a process chain, the status of the process variant does not get updated until/unless someone displays the process chain log, at which point the status changes and follow-on events are triggered. In other words, the process chain does not seem to be receiving word that the DSO activation process has abended, so we do not receive alerts that a problem has occurred.
Has anyone else experienced this issue?
Thanks,
Bob
P.S. We are running BI 7.0, Patch Level 15 on Oracle 10.2.0.4.0
Runtime Errors DBIF_RSQL_SQL_ERROR
Exception CX_SY_OPEN_SQL_DB
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught
in
procedure "SET_STATUS" "(METHOD)", nor was it propagated by a RAISING clause.
How to correct the error
Database error text........: "ORA-00060: deadlock detected while waiting for
resource"
Internal call code.........: "[RSQL/DELE/RSSTATMANPSA ]"
Please check the entries in the system log (Transaction SM21).
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"DBIF_RSQL_SQL_ERROR" "CX_SY_OPEN_SQL_DB"
"CL_RSSM_STATMAN===============CP" or "CL_RSSM_STATMAN===============CM008"
"SET_STATUS"
If you cannot solve the problem yourself and want to send an error
notification to SAP, include the following information:
1. The description of the current problem (short dump)
To save the description, choose "System->List->Save->Local File
(Unconverted)".
2. Corresponding system log
Display the system log by calling transaction SM21.
Restrict the time interval to 10 minutes before and five minutes
after the short dump. Then choose "System->List->Save->Local File
(Unconverted)".
3. If the problem occurs in a problem of your own or a modified SAP
program: The source code of the program
In the editor, choose "Utilities->More
Utilities->Upload/Download->Download".
4. Details about the conditions under which the error occurred or which
actions and input led to the error.
The exception must either be prevented, caught within proedure
"SET_STATUS" "(METHOD)", or its possible occurrence must be declared in the
RAISING clause of the procedure.
To prevent the exception, note the following:
Information on where terminated
Termination occurred in the ABAP program "CL_RSSM_STATMAN===============CP" -
in "SET_STATUS".
The main program was "RSPROCESS ".
In the source code you have the termination point in line 83
of the (Include) program "CL_RSSM_STATMAN===============CM008".
The program "CL_RSSM_STATMAN===============CP" was started as a background job.
Job Name....... "BI_PROCESS_ODSACTIVAT"
Job Initiator.. "ALEREMOTE"
Job Number..... 05302800
The termination is caused because exception "CX_SY_OPEN_SQL_DB" occurred in
procedure "SET_STATUS" "(METHOD)", but it was neither handled locally nor
declared
in the RAISING clause of its signature.
The procedure is in program "CL_RSSM_STATMAN===============CP "; its source
code begins in line
1 of the (Include program "CL_RSSM_STATMAN===============CM008 ".
Source Code Extract
Line
SourceCde
53
if i_with_internal_check is initial.
54
l_s_status = i_s_status.
55
call function 'RSSM_GET_TIME'
56
importing
57
e_timestamps = l_s_status-ts_last_changed.
58
if l_s_status-ts_proc_started <= '10000101000000'.
59
l_s_status-ts_proc_started = l_s_status-ts_last_changed.
60
endif.
61
if l_s_status_exist is initial.
62
insert rsstatmanstatus from l_s_status.
63
if sy-subrc <> 0.
64
message x000.
65
endif.
66
else.
67
modify rsstatmanstatus from l_s_status.
68
if sy-subrc <> 0.
69
message x000.
70
endif.
71
endif.
72
delete from rsstatmanpart where
73
rnr = l_s_status-rnr and
74
dta = l_s_status-dta and
75
dta_type = l_s_status-dta_type.
76
select single * from rsstatmanpsa into l_s_psa where
77
rnr = l_s_status-rnr and
78
psa = l_s_status-dta.
79
if sy-subrc = 0.
80
delete from rsmdatastate_psa where
81
psa = l_s_status-dta and
82
type = l_s_status-dta_type.
>>>>>
delete from rsstatmanpsa where
84
partnr >= l_s_status-rnr_sid and
85
psa = l_s_status-dta.
86
else.
87
select single * from rsmdatastate_psa into l_ds_psa where
88
psa = l_s_status-dta and
89
type = l_s_status-dta_type.
90
if sy-subrc = 0 and l_ds_psa-sid_checked > l_s_status-rnr_sid.
91
delete from rsmdatastate_psa where
92
psa = l_s_status-dta and
93
type = l_s_status-dta_type.
94
delete from rsstatmanpsa where
95
partnr >= l_s_status-rnr_sid and
96
psa = l_s_status-dta.
97
endif.
98
endif.
99
if i_with_commit = 'X'.
100
call function 'DB_COMMIT'.
101
endif.
102
endif.Walter,
Thanks for the suggestion. This is the same recommendation I just received from SAP.
We are currently in the midst of regression testing for a major release, so cannot implement these corrections immediately. I'll post again after we implement the corrections and let you know if they solve our problem.
Thanks again.
Bob
Maybe you are looking for
-
''duplicate of https://support.mozilla.com/en-US/questions/902677'' This site shows Greek letters and Greek words by calling for the Windows Symbol font. The page(s) involved display correctly in Internet Explorer, but not in Firefox 3.6.1 or 8.1. In
-
SQL to Oracle Migraton - Unable to create source model in Migration Workben
We are trying to use Oracle Migration Workbench utility to transfer data from SQL to Oracle. when we start creating the source model we get the following error :- failed to load source model ora-01401 inserted value too large for column.. this is the
-
Best monitor for MacBook Pro (Late 2012)
After searching Apple's knowledge base (reference: Using 4K displays and Ultra HD TVs with Mac computers - Apple Support), it appears that MacBook Pro (Late 2012 model) does not support 4K monitors, correct? If this is the case, what's the best monit
-
I think i deleted disk utility and i dont know how to get it back. help!!
im trying to find my disk utilitys and its not showing up anywhere, i think i might of deleted it by accident, how do i get it back?
-
Phishing email - how do i remove any possible malware or virus that may attack my computer?
I recieved an email from which i now realise was of the phishing type. I claimed to be from USPS , told me the postal code was wrong , gave me a parcel number which i couldnt track and an attchament whiuch i unfortunately opened.The file within wa