Database Polling

Hi All,
I would like to poll certain databases with some standard query at say 2sec intervals or even real time. I would like to do the same for multiple databases and based on the query ultimately monitor metrics of certain qualifying records created, updated etc. Typically this would be intensive and could hamper performance of the application that is referencing the databases. I am sure many of you might have experienced this kind of scenario and I would appreciate if you could share the same.
I am of the understanding that the jdbc drivers are properly tuned and if we ensure that the queried columns tables are properly indexed, it would reduce any possible latencies. We do have Enterprise Manager's, Data Guard and we have considered copying them over to another database and derive metrics. We may ultimately go this route, but it does not solve the issue of real time monitoring. I would like to hear any alternative and unique approaches and appreciate your input.
Regards

Hi
I'm responding to this with my BPM hat on (about the only hat I've got).
Tell us more about your use case if you get a minute. As much as it pains me to say this, but BPM might not be the best solution to what you're trying to do.
Just going on what you've posted here, polling a database at subsecond intervals or recognizing database changes realtime might be a better fit for another technology built specifically for this.
Others on this forum will probably have a better idea, but depending on what it is that you're trying to do you might want to look at CEP (Complex Event Processing) Server technology. This has the capability to collect feeds from hundreds of different sources (database feeds are supported) with zero latency (ok - very little latency).
Here's where BPM might come into play in this scenario. Once an event (e.g. some row on one of your tables changes) is caught, the CEP server could then push the information into an Oracle BPM process. A couple weeks ago, I used this technique to create a new work item instance in an Oracle BPM process and then used it to communicate with an existing work item instance (alerting the instance that the order items in the order had changed and how they changed) via the API into Oracle BPM.
Not trying to push CEP on you, but the second I saw "realtime" in your post it came to mind. Sure there are other options others will suggest.
Dan
Edited by: Daniel Atwood on Mar 19, 2009 10:33 AM

Similar Messages

  • Database Poller issues in Clustered env

    Hi,
    I am running Oracle BPEL 10.1.3.4 on top of Weblogic version 9.x in a clustered env. I created a simple database poller BPEL process (for target table in Oracle database) with below parameters:
    Max Raise Size: 1
    Max Transaction Size: 2
    Polling Interval:30
    Distributed Polling is enabled
    All other BPEL engine and domain level parameters have default values.
    In my clustered env two instances of database poller BPEL process are running on diff nodes. Now I populated my table with 1000 records in one go. According to parameters I expect:
    - In each polling interval max 2 record will be processed by database poller BPEL process running on single node. And there will be 2 instances of this bpel process as max raise size is 1. Same I expect for database poller BPEL process running on another node. So overall 4 records should be processed in each polling interval and 4 instances of BPEL processes should be visible in BPEL console. But in actual its always 2.
    Is I am missing something here? Won't the load balancer distributes records to BPEL processes on both nodes equally?
    Also then I raise Max transaction size to higher value e.g. 20. But in this case after processing nearly 1/3 rd of records, the BPEL process stopped picking up any further records. Is there any known issue where Adapter stops picking any further database records if transaction size limit is higher?
    thanks
    Ankit
    Edited by: AnkitAggarwal on 22-Feb-2010 03:36

    Hi Ankit,
    I have Oracle BPEL env11.1.1.2.0 clustered over 2 nodes.
    I am facing a similar issue. In my scenario I have Bpel (with DB poller) and its deployed on the cluster. And I am connected to DB via Multi data source (MDS-1) with only one datasource (DS-1) configured in it.
    So whenever I update the table which is being polled, in some cases I have TWO instances and in some cases I have ONE Instance running. My requirement is to have only one instance running every time the DB poller is initiatied.
    Kindly help me out.
    Thank You
    Best Regards
    Prasanth

  • Database polling performance issues

    I am using Database polling to detect database changes for OLTP application.
    my doubts are
    1) will it affect performance of OLTP application
    2) If so what would be the impact on OLTP application
    3) How we can improve performance
    4) any link to get more idea about this.

    1) will it affect performance of OLTP application
    No IT WONT AFFECT BECAUSE oltp Aapplication has
    Transactions that involve small amounts of data
    * Indexed access to data
    * Many users
    * Frequent queries and updates
    * Fast response times
    2) If so what would be the impact on OLTP application
    N/A
    3) How we can improve performance
    Do not poll the table for 30 secs interval poll for atleast 45 secs intervals
    4) any link to get more idea about this.
    N/A

  • Database polling process

    I have created a bpel database polling process to process a single table and use a logical update (mark a column as processed). The table will contain many unprocessed records at any time. I have setup the polling interval 5 Sec and records unlimited for each polling interval and in the process i am calling a stored procedure to insert same data into another database.
    My doubts
    But It fetches only one record and different instance is created for every Row. Is it normal process?
    Why it takes only record after using unlimited option?
    why i am asking this means i don't want to call stored procedure for each and every record.
    I'm using MS SQL Server 2005.
    any one pls let me know what is happening inside.

    Depends on how you define performance. DBs are generally designed for this kind of load so you then need to look at the middleware. The concern I always have is how big can this message get. If it can potentially grow big, I would say over 10MB then you could run into trouble if you haven't tuned for that, 1 10MB file could hang your whole system if not tuned (extreme case to make a point). If you have it running row by row it may take more time but they will go though. Without knowing more about your environment I can't comment too much more, e.g. patterns, hardware, load etc.
    Also polling isn't the most effective way long term to invoke a message. If the table is going to grow large I would look at partitioning as that select statement will deteriorate over time as you don't delete the records once read. ( I'm just trying to give you things to think about it may not be relevant your your site)
    cheers
    James

  • Can we put multiple Database Polling within the asynchronous process

    Hi,
    Can we put multiple Database polling within the the same asynchronous BPEL process.
    There will be multiple Receive activities to receive the data from the poller.
    Saptarishi

    Hi Peter,
    I am using 10.1.3.4 and cannot use ESB/mediator.
    For the 2nd option,
    I have tried to put multiple receive's to poll data from a table but it does not work(it waits at the 2nd Receive). Let me try to elaborate the issue a bit.
    I have created a table for polling.
    The table has 3 columns :- transaction_id, status, is_read
    is_read is kept to implement the logical delete strategy of DB polling.
    What I need to do is to maintain a single instance of BPEL to maintain a transaction(which is uniquely identified by transaction_id).
    The BPEL should track the different stages of the transaction, i.e whenever a new row is inserted in the table with the updated status for a transaction, it must find the correct instance(by co-relating the transaction_id) and go to the next step (wait for the next receive activity) until all the steps of the transaction is completed.
    In the code, I created a correlation set consisting of transaction_id(only). The property transaction_id has an alias to the inbound variable's payload.
    In the first Receive, I checked the "create instance" checkbox. Also the correlation set is initialized.
    From next Receive onwards the correlation set is checked.
    The polling frequency is 5 secs.
    The first Receive works fine and the process is instantiated. But it waits at the 2nd Receive indefinitely.
    It will be very helpful if you can try this once. If you feel this is not the right approach, please guide me.
    Thanks and Regards,
    Saptarishi

  • Database Poller to start the control flow

    I am relatively new to BPEL/SOA. I need your help in the design process
    I have a design as following:
    I have to essentially bring data from DB2 database into Siebel. On the Siebel side I have the Webservices created.
    1. rowid, tablename, isTheRowProcessed, timestamp.is the structure of my polling table's structure.
    The tablename column will tell me which application table has been updated/inserted with new data.
    2. The Database Poller will poll the Polling table every minute and see there is a new row. The BPEL will read the tablename column and fetch the name of the table.
    3. Depending on the name of the tablename, a specific Web Service will be invoked which will insert the data into the Siebel system.
    for example, if the new row is:
    10 TableA NotRead 8/19/2012 10:10:10
    The poller should the read above and make it "10 TableA Read 8/19/2012 10:10:10"
    Then WebServiceA should be invoked with some data.
    Here is My question:
    Should it be Async BPEL process or Synchronous process that should have the Poller?
    Will Poller kick start sub BPEL processes?

    I have a DB poller which has only one row (always just one row) and the Poller would update flag to N from Y.
    The DBPoller is set to run every two seconds. I have a flag that is initially set by human to Y. The Poller will flip the value of the flag to N (from Y) and initiate a one-way BPEL process and if the BPEL process will set the Flag back to Y if successful. If the BPEL process fails then the BPEL process will leave the value of the flag to N and the BPEL process sends a mail to the users about the failure. The users after fixing the issue (may be some of the Web Services called by the BPEL are unavailable), will set the flag to Y and the process will continue.
    The above intention is supposed to create create an instance id only after entire BPEL is executed. The poller is configured to execute every 2 seconds.
    instance_id starttime BPEL Execution time
    1 5:00:00 30 seconds
    2 5:00:02 20 seconds
    3 5:00;04 25 seconds
    The above is the scenario is my current execution.
    I thought that the second instance would start at 5:00:30 because the flag value would be N from 5:00:00 to 5:00:30 and the BPEL process would set the flag's value to Y at the end of execution of the BPEL process (instance 1). But, to my surprise 2nd instance is starting at 5:00:02 (just because the poller is configured to run every 2 seconds). Even if the poller is configured to run every 2 seconds the poller should not create BPEL process because the Poller at 5:00:02 should see the flag value of N (The poller should only create an instance if the flag's value is Y).
    Please clarify this behavior.

  • Database Polling: Parent-Child Relation

    Hi all,
    We are experiencing problem while picking multiple records from child table while polling from the database.
    Summary:
    Parent table: Temp1 : Columns- Id,Name,Status
    Child Table: Temp2 : Columns- Id,Item
    Now lets say data present in table are
    Temp1 Table :- 1,'abhi','N'
    Temp2 Table :- 1,'pen'
    1,'pencil'
    I have used 1:M Relationship. I have kept a polling on parent table for column status. (Logical Delete)
    Problem:
    Now what is happening is that, from Child Table (Temp2) only first record got picked up 2 times..and record from Temp1 Table was being picked correctly.....
    Can anybody help me how to resolve this issues....its bit urgent.
    Thanks in advance.
    Thanks,
    Abhishek

    Hi sunil,
    Thanks for the reply. Relationship defined was correct.
    I got the solution for this problem. Actually the primary key on child table was not set correctly. For such scenarios we need to have composite key on child table. when I make that, it started working.
    Note that the composite key value has to be unique in the childs table.
    Wow!!!
    Thanks,
    Abhishek...
    Edited by: Abhishek saurabh on Jul 31, 2009 8:14 PM

  • Database Polling in Jdev

    Hi,
    I have created BPEL process that continuously polling on View present on database at certain interval.
    here i am using logical delete operation while polling for new or changed records so that will update certrain field on table.
    but my view has only Read permission(Not want to change this) so i can't update the field that's why this polling functionality is not working after deploy on BPEL console.
    so can anyone will help me on how i can fire only select query with specified interval of time to read the view data only? is there anyother way around to fire select query at certain interval without updating?
    your help will be appreciated.
    Thanks
    Sagar

    I'm not yet familiar with 11g - so forgive me if this is not valid in that release. But for 10.1.3 ...
    Another option - if you can't (or just don't want to) affect data in the DB is to use some other mechanism to kick off your BPEL process on a regular time interval - and then just do a normal inbound select operation against your table to search for records to process.
    I've been trying out a new scheme - where I use a file adapter as the polling mechanism to kick off the BPEL process (using a polling interval of maybe a minute). The file on the server that its polling for can be anything - as I don't actually use the contents of the file in the process. At the end of the BPEL process, I use another file adapter to place a new file in the polling directory - to be found by the polling file adapter on the next polling cycle. You could also accomplish this in other ways - but this seemed like a pretty simple way to kick off a BPEL process on a regular time interval.
    Just an idea ...
    I do wish BPEL had a simple way to schedule a process to invoke itself on a set interval. Perhaps in a future release? Or even in 11?
    Rod

  • Current DateTime in Database polling 'WHERE Clause'

    Hi,
    I am trying to explore the usage of polling option with Database adapter in SOA Suite 11g.
    I am doing a sample process which will poll the data from a database table which has 2 fields, one is ID and the other one is UpdatedDate which is of type TIMESTAMP. I am trying to delete the records after polling, whose UpdatedDate is less than the current date. I am using the where clause in polling option to set the condition of UpdatedDate < CurrentDate.
    The problem is I am not getting, how to get the current date in the right side of the expression. To provide the right side option, we have 3 options of Literal, Query and parameter. I have tried will all the options; when I am trying with Literal, the right side is updated with Null value.
    Could any one help me to resolve this issue. I need the value of current dateTime as the right side expression of the where clause.
    Thanks.

    Hi,
    You're maybe over complicating this... The DbAdapter should be able to delete processed records automatically for you since you use one of the defined polling strategies...
    http://docs.oracle.com/cd/E28280_01/integration.1111/e10231/adptr_db.htm#CHDEFACG
    Cheers,
    Vlad

  • Database Polling Fails when target database re-started

    Hi
    I have a problem with a BPEL process that is polling records from the database. I noticed that no records had been picked up in a while and that no errors were being caught by the process. When i checked the domain log I could see that the error below had occurred and was retrying. I found out that the target SQLServer database had been restarted, but as far as I was aware the connection should refresh once the database restarts.
    This is quite a concern for my client who is querying the stability of the SOA suite. they frequently restart their SQL Server database and do not want to have to refresh connections to solve the problem from the application server each time. They are currenlty using 10.1.3.3.0 of the SOA suite software so the connection should be reintiated when the target database is started again.
    Does any one have any idea why this error is occuring??
    <2008-03-18 18:34:16,987> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml
    <2008-03-18 18:34:17,007> <WARN> <default.collaxa.cube.activation> <Database Adapter::Inbound>
    ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [readProjectCodes], Descriptor name: [readProjectCodes.EFolder]. Polling the database for events failed on this iteration. [Caused by: Broken pipe]
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: I/O Error: Broken pipeError Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder).
         at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:461)
         at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:376)
         at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:633)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:576)
         at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:416)
         at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:272)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: I/O Error: Broken pipeError Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder)
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:581)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:441)
         at oracle.toplink.threetier.ServerSession.executeCall(ServerSession.java:457)
         at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:174)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:481)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:825)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:803)
         at oracle.toplink.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:473)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:811)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:620)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:779)
         at oracle.toplink.queryframework.ReadAllQuery.execute(ReadAllQuery.java:451)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.tip.adapter.db.inbound.DestructivePollingStrategy.poll(DestructivePollingStrategy.java:347)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:505)
         ... 5 more
    Caused by: java.sql.SQLException: I/O Error: Broken pipe
         at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1052)
         at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)
         at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:777)
         at net_sourceforge_jtds_jdbc_JtdsPreparedStatement_Proxy.executeQuery()
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:744)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:516)
         ... 23 more
    Caused by: java.net.SocketException: Broken pipe
         at java.net.SocketOutputStream.socketWrite0(Native Method)
         at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
         at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
         at java.io.DataOutputStream.write(DataOutputStream.java:90)
         at net.sourceforge.jtds.jdbc.SharedSocket.sendNetPacket(SharedSocket.java:671)
         at net.sourceforge.jtds.jdbc.RequestStream.putPacket(RequestStream.java:560)
         at net.sourceforge.jtds.jdbc.RequestStream.flush(RequestStream.java:508)
         at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1039)
         ... 28 more
    <2008-03-18 18:34:47,265> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml
    <2008-03-18 18:34:47,270> <WARN> <default.collaxa.cube.activation> <Database Adapter::Inbound>
    ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [readProjectCodes], Descriptor name: [readProjectCodes.EFolder]. Polling the database for events failed on this iteration. [Caused by: Invalid state, the Connection object is closed.]
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Invalid state, the Connection object is closed.Error Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder).
         at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:461)
         at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:376)
         at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:633)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:576)
         at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:416)
         at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:272)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Invalid state, the Connection object is closed.Error Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder)
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:581)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:441)
         at oracle.toplink.threetier.ServerSession.executeCall(ServerSession.java:457)
         at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:174)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:481)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:825)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:803)
         at oracle.toplink.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:473)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:811)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:620)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:779)
         at oracle.toplink.queryframework.ReadAllQuery.execute(ReadAllQuery.java:451)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.tip.adapter.db.inbound.DestructivePollingStrategy.poll(DestructivePollingStrategy.java:347)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:505)
         ... 5 more
    Caused by: java.sql.SQLException: Invalid state, the Connection object is closed.
         at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1634)
         at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:2328)
         at net_sourceforge_jtds_jdbc_ConnectionJDBC3_Proxy.prepareStatement()
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1216)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1170)
         at oracle.toplink.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:591)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:491)
         ... 23 more
    <2008-03-18 18:35:17,633> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml

    I work with ditchTwentyThree. We are still getting this problem.
    To clarify, the situation is that when we use the BPEL Database Adapter to Poll a SQL Server Database we get the behaviour that if the database is not available, the retry policy is referenced and the polling retries every 30 seconds. All good so far. However, when the Database becomes available again the polling still fails in the same way - until the SQL Server Database Connection is manually refreshed through EM. The behaviour we would expect is for the Polling to reinitiate as soon as the SQL Server becomes available without any manual intervention.
    We have configured the DB Adapter retry policies in the same way as we have done for polling an Oracle database (all this works well with Oracle).
    Can anyone help or confirm that this has been successfully achieved on other projects with the DB Adapter accessing MS SQL Server.
    Any tips appreciated.
    Thanks,
    Mark.

  • Database Polling Strategy: Time portion of Date/Time not propogated to BPEL

    Hi,
    I have a simple BPEL process that uses a last update date polling strategy using a helper table. The table I'm going against is a simple, three column table, as defined below:
    CREATE TABLE XXSI_TEST_PRODUCTS
    ID VARCHAR2 (32) NOT NULL,
    DESCRIPTION VARCHAR2 (32),
    LAST_UPDATED DATE
    The helper table is as follows:
    CREATE TABLE XXSI_PRODUCT_SEQUENCING
    TABLE_NAME VARCHAR2 (32),
    LAST_UPDATED DATE
    The issue I am having is when the adapter picks up the updated rows from the XXSI_TEST_PRODUCTS, that it picks up the date portion of the date datatype fine. (i.e., I can see the value in the audit flow of the BPEL console) However, the time portion of the datatype is always 00:00:00.
    Could anyone suggest what the issue is here?
    Thanks
    Aashish

    To add to this earlier note. I can get this to work with the olite database connection, but not Oracle (JDBC) thin driver. Should I be using the Type 2 OCI driver? If so, what should I use?

  • Database polling adapter within an asynchronous BPEL process

    Hi,
    I have a requirement to poll a database table withing an asynchronous process. The reason I want to use a receive within an asynchronous BPEL is because the process needs to be notified many times thru polling. So might need many receive activities.
    I have developed a process as described below :-
    1. Created an asynchronous process.
    2. Created a Database adapter for polling a table. Logical delete strategy is being used.
    3. Have put a receive activity from the DB Adapter created.
    4. Created a correlation set consisting of a single property(String)
    5. Created a property alias to refer to
    a. the input string of the asynchronous process. (unique for this process)
    b. the input from the database adapter (unique for this process)
    I initiate this process from the console. Then I inserted a record the table with proper inputs.
    But the BPEL waits indefinitely at the receive activity.
    When I try to poll the table from an empty BPEL process, it works perfectly fine.
    Could someone please help me here.
    Thanks in advance
    Saptarishi

    Hi,
    Could someone pls answer this query.
    Regards,
    Saptarishi

  • Database Polling - Using Update a Sequence File - Not working

    Hi All,
    We need to use the Database Adapter Polling feature to poll a table for inserts and updates. In the database configuration page of "After Read" , we have used "Update a Sequencing File".
    But the process is not being triggered. Any one has successfully tried this option.
    Do we need to do any additional configurations ?
    Please respond. Its urgent.
    Thanks,
    Sayama

    If this is your first time working with the Property Loader I recommend the following steps:
    - Save the Sequence File and go to Tools-> Import/Export Properties…
    - Set the Data Location to be a File (You can change it later if you need to use a Database).
    - Enter the file path.
    - Select a File Format.
    - Go to the Properties Tab and from the Available properties list (tree) select your global variable. The global variable should appear in the selected properties list.
    - Click the Export Button.
    - If you go back to the Source Destination File and click on View File you will notice that the file you selected was generated and that it has a special format.
    You will identify the name of your variable under <File Globals> and the variable value under ‘Variable Value’.
    Change the variable value to whatever value you want and save the file.
    - Now, if you click the Import Button, the tool will get the value from the source file and set the edit-time copy of the sequence global variable to the value you entered in the file.
    - Click the Done button and go and check the value of the sequence global variable. The value should be the value you entered in the file.

  • SOA database poller

    Hi All,
    I am using a DB poller to read records from the table.
    The problem is the DB poller picks the records randomly but I want it to process records by creation_date.
    Here is my configuration.
    <endpoint-activation portType="XX_ptt" operation="receive">
        <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
          <property name="DescriptorName" value="TestPoller.Test"/>
          <property name="QueryName" value="TestPollerSelect"/>
          <property name="MappingsMetaDataURL" value="TestPoller-or-mappings.xml"/>
          <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
          <property name="PollingInterval" value="5"/>
          <property name="MaxRaiseSize" value="1"/>
          <property name="MaxTransactionSize" value="10"/>
          <property name="SequencingColumn" value="CREATION_DATE"/>
          <property name="NumberOfThreads" value="3"/>
          <property name="ReturnSingleResultSet" value="false"/>
          <property name="MarkReadColumn" value="RECORD_STATUS"/>
          <property name="MarkReservedValue" value="R${weblogic.Name-2}-${IP-2}"/>
          <property name="MarkReadValue" value="PROCESSED"/>
          <property name="MarkUnreadValue" value="NEW"/>
        </activation-spec>
    Thanks,
    Prasanna

    Ok,
    When you say it is random did you mean that sometimes, you adapter process rows not in the right sequence ?
    If yes, you should see this part of the official documentation :
    When polling the database for events, you can order the returned rows by the selected column by using the Order By list. The best practice is to choose <No Ordering>, as message ordering regardless is not guaranteed without extra configuration.
    I suspect that you have to setup your adapter differently in order to keep the right sequence. I have not the time to check if the answer is in the documentation but I guess that having 3 threads is at least one of the reason.
    regards,
    mathieu

  • Distributed Polling Not working for Sybase Database poller Proxy

    I am using a Proxy service which is polling records from a sybase database. When I tried to deploy this proxy in a clustered environment I noticed sometimes it is polling the same record twice. So I tried to enable distributed polling in my proxy by adding *<lock-mode>lock-no-wait</lock-mode>* in my topplink_mapping.xml file. But activating this change resulted error in the log file stating "Incorrect syntax near 'NOWAIT'".
    Later on I found out that it is a known issue ...for reference check [http://www.oracle.com/technetwork/middleware/docs/aiasoarelnotesps5-1455925.html|http://www.oracle.com/technetwork/middleware/docs/aiasoarelnotesps5-1455925.html] with bug # 13405718.
    So I am stuck here...and no solution yet.
    Any suggestion??

    You can Emulate AQ functionality for any Non-Oracle Database where sometimes the *Clustered DB-Adapter[Poller]* polls the same record more than once.
    Say, you need to poll 'status' column of table 'A' for a status 'POLL_IT'
    1. Create a Table 'DUMMY_AQ' matching required column signatures from table 'A'
    2. Create a Trigger on table 'A' for copying the row content on Insert or Update for status 'POLL_IT' in to 'DUMMY_AQ' table;
    3. Poll DUMMY_AQ with Row Level Read lock & Delete On Read , that way it will is ensured that so that only One Instance of your Clustered DB Adapter can have visibility to any newly inserted row having status 'POLL_IT' .

Maybe you are looking for