DB Adapter polling on cluster

Hi
Installation:
SOA Suite installed on cluster.
SOA Suite 10.1.3.3 MLR11
DB 10g
Problem (Metalink Service Request: 7237226.994 )
An ESB flow is polling on a table and doing a logical delete (update on a table when polled by using the markedread, markedreserved, markedunread properties). The problem that we are facing is that each node is polling the records and it start per node an ESB. As result each data to process is dubbeld.
We want to prevent this by using in the MarkReservedValue-property (MINE${instance}) and MarkReadValue-property (READ${instance}) where "${instance}" refers to the node who polls the record.
At runtime when polling the READ[undef:instance] value is inserted into our column who indicates that the record is polled or not. How can we make sure that the ${instance} is getting the correct value at runtime?
This is how my polling is defined.
<binding name="DBINT010PollingAdapterService_binding" type="tns:DBINT010PollingAdapterService_ptt">
<pc:inbound_binding/>
<operation name="receive">
<jca:operation
ActivationSpec="oracle.tip.adapter.db.DBActivationSpec"
DescriptorName="DBINT010PollingAdapterService.XxcmApdbInvoiceHeaders"
QueryName="DBINT010PollingAdapterService"
PollingStrategyName="LogicalDeletePollingStrategy"
MarkReadFieldName="STATUS"
MarkReadValue="READ${instance}"
MarkReservedValue="MINE${instance}"
MarkUnreadValue="NN"
SequencingFieldName="INVOICE_UNIQUE_ID"
MaxRaiseSize="1"
MaxTransactionSize="unlimited"
PollingInterval="60"
NumberOfThreads="1"
UseBatchDestroy="false"
ReturnSingleResultSet="false"
MappingsMetaDataURL="DBINT010PollingAdapterService_toplink_mappings.xml" />
<input/>
</operation>
</binding>
Regards
Edited by: OGROEF on Nov 5, 2008 9:07 PM
Edited by: OGROEF on Dec 15, 2008 4:21 PM

The following entry:
<MESSAGE>
<HEADER>
<TSTZ_ORIGINATING>2008-12-11T17:50:20.119+01:00</TSTZ_ORIGINATING>
<COMPONENT_ID>tip</COMPONENT_ID>
<MSG_TYPE TYPE="TRACE"></MSG_TYPE>
<MSG_LEVEL>16</MSG_LEVEL>
<HOST_ID>u514603.cmcdev.be</HOST_ID>
<HOST_NWADDR>10.151.70.3</HOST_NWADDR>
<MODULE_ID>esb.server.service.impl.inadapter</MODULE_ID>
<THREAD_ID>18</THREAD_ID>
<USER_ID>orasoad</USER_ID>
</HEADER>
<CORRELATION_DATA>
<EXEC_CONTEXT_ID><UNIQUE_ID>10.151.70.3:11323:1229014220014:8</UNIQUE_ID><SEQ>0</SEQ></EXEC_CONTEXT_ID>
</CORRELATION_DATA>
<PAYLOAD>
<MSG_TEXT>JCA: &lt;oracle.tip.adapter.db.TopLinkLogger log> SELECT UNIQUE_SUPPLIER_ID, SUPPLIER_NAME, SUPPLIER_NUMBER, NUMBER_TYPE, CM_SUPPLIER_TYPE, VAT_REGISTRATION_NUM, M_NUMBER, ADM_ID, OFB_PARTY_ID, CENTURY, LANGUAGE, ATTRIBUTE_CATEGORY, SPARE6, SPARE8, SPARE9, SPARE10, SPARE11, SPARE12, SPARE13, SPARE14, SPARE15, STATUS, ERROR_CODE, FILE_ID FROM XXCM.XXCM_AP_SUPPLIERS WHERE (STATUS = ?) ORDER BY UNIQUE_SUPPLIER_ID ASC FOR UPDATE NOWAIT
     bind => [MINE[undef:instance]]
</MSG_TEXT>
</PAYLOAD>
</MESSAGE>
can be found in $ORACLE_HOME/j2ee/oc4j_soa/log/oc4j_soa_default_group_1/oc4j/*.xml
Regards

Similar Messages

  • DB adapter polling in OSB

    1. In a clustered environemnt, we need to use "Distributed polling" in DB adapter to make sure the multiple cluster instances are not polling for the database at the sametime. If "Distributed polling" can achieve that, what is the need to have singleton property set for the DB adapter in the composite.xml
    2. For achieving DB adapter polling in osb, we need to create the adapter in bpel and then export them to osb project. In such OSB project, where do we set the singleton property ?

    Thanka Ananth.
    I assume active-passive cluster setup means,
    there will be a cluster with only one osb or bpel managed server (active cluster)
    There wil be another cluster with only one osb or bpel managed server (passive cluster).
    so when there is some data inserted into the database, there will be only one managed server (available on active cluster) will be available to poll for the recored. Passive man server does not poll for this record. I assume this is the default behaviour. If such is the case, then what is the use of setting this singleton property ?

  • DB polling in cluster environment?

    Hi all,
    I have a DB adapter polling a table in a 2 node clustered environment. For each row it polls it is creating 2 instances on two servers and this is is causing issues when i call 3 rd party web service with identical data....i tried checking distributed polling in adapter config and also 'singleton' property in composite.xml, but still it creates duplicate instances some times and not all the times....Could some one suggest some thing for resolving this...
    Thanks

    parameter looks fine.  I too faced similar problem with DBAdapter in cluster.  Later I realized that the above parameters were set in the wrong place.  I think this might be an issue with the relationship you create between tables.  Hence you need to identify the right place to set the above parameters. Look up my toplink file
    <reference-class>XXXXXXX</reference-class>
                      <refresh>false</refresh>
                      <remote-refresh>false</remote-refresh>
                      <cache-usage>primary-key</cache-usage>
                      <lock-mode>none</lock-mode>
                      <container xsi:type="list-container-policy">
                         <collection-type>java.util.Vector</collection-type>
                      </container>
                   </query>
                   <query name="XXXXXX" xsi:type="read-all-query">
                      <reference-class>XXXXXX</reference-class>
                      <refresh>false</refresh>
                      <remote-refresh>false</remote-refresh>
                      <lock-mode>none</lock-mode>
                      <container xsi:type="list-container-policy">
                         <collection-type>java.util.Vector</collection-type>
                      </container>
                   </query>
    In the above sample, you could notice the remote-refresh parameters are present twice.  When I enabled 'Distributed Polling' option, the parameters were set in the italics instead of in the text which is bold.  After I modified the toplink file, it works fine as expected. Hopes it clarifies you.
    rgds
    sen

  • File Adapter polls all the files from the directory when deployed again

    Hi,
    File Adapter polls all the files from the inbound directory irrespective of the timestamp when deployed again.
    For ex. when the BPEL process with file adapter is deployed, it starts polling the directory based on the timestamp as and when the directory is written with the files. I did not opt for deleting the files after read by the File Adapter.
    But, when BPEL process is modified and deployed again, this time, the file adapter picks up all the files in the inbound directory and doesn't consider the timestamp.
    My guess is that it should not pick all the files but based on timestamp only.
    I guess I can observe the same behavior if I bounce the Application Server also
    Do I have an option to achieve this?
    Thanks,
    Sasi Bhushan.

    try this:
    1- create a File object for the directory. (look at isDirectory() )
    2- create a File[] that represents the files in that directory. (.listFiles())
    3- if (file[x].isDirectory()) {recursive method call;}
    4- else {
    process file;
    If you want more help--do some work on it, and come back with specific questions relating to specific lines in your code and specific error messages you've been receiving.

  • OSB DB Adapter Polling Issue

    Hello Everybody,
    Requirement
    I am doing DB Adapter polling in OSB.I have a db adapter which polls order table whenever there is a record with status='N'.The OSB component is on single node of Weblogic Server.
    1.The db adapter picks the order data with status='N' in the proxy service
    2.It transforms to webservice xsd
    3.Invokes a webservice.
    4.The webservice returns acknowledgement number.
    5.The order table should be updated with status 'Z' and attribute1=acknowledgement number
    OSB Service Design
    1.Proxy service calls business service to poll the order table
    2.Converts the payload to the xsd format required by target
    3.Invokes the webservice on target
    4.Receives acknowledgement number
    5.calls a plsql procedure which updates all the records within this batch with the acknowledgement number and status='Z'
    My configurations in db adapter
    Logical delete option in db adapter.
    Unread Value :'N'
    Read Value : 'A'
    Polling frequency : 300 seconds
    no of databse rows per XML document : 10
    Database rows per transaction : 10
    Issue
    1.My process after getting the acknowledgement number it updates the status with Z and attribute1=acknowledgement number.At the of this transaction I am seeing that the status is being updated by
    the adapter to 'A' based on read value.I want the read value only to be updated initially but as soon as my OSB process picks it for further processing it should not update again.How can i prevent
    the status from getting updated to 'A'.
    2.I have 40 records in order table.Per the database rows per transaction it should process 10 records at a time and for each batch of 10 i should get one acknowledgement number.Instead i see that
    all the 40 records are updated with the same acknowledgement number.Kindly help as to how I can resolve this situation.
    Thanks & Regards,
    Radha

    Hi Arik,
    I tried setting the property(idempotent) in jca file of the polling adapter and it gave me below error.Kindly help
    <adapter-config name="EBS_FETCHDATA" adapter="Database Adapter" wsdlLocation="EBS_FETCHDATA.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/DB/newebs" UIConnectionName="EBS" adapterRef=""/>
    <endpoint-activation portType="EBS_FETCHDATA_ptt" operation="receive">
    <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
    <property name="DescriptorName" value="EBS_FETCHDATA.XxcmfOtmOrderHdrIfaceTmp"/>
    <property name="QueryName" value="EBS_FETCHDATASelect"/>
    <property name="MappingsMetaDataURL" value="EBS_FETCHDATA-or-mappings.xml"/>
    <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
    <property name="MarkReadColumn" value="OTM_INTERFACE_STATUS"/>
    <property name="MarkReadValue" value="A"/>
    <property name="MarkUnreadValue" value="N"/>
    <property name="PollingInterval" value="60"/>
    <property name="MaxRaiseSize" value="10"/>
    <property name="MaxTransactionSize" value="300"/>
    <property name="NumberOfThreads" value="1"/>
    <property name="ReturnSingleResultSet" value="false"/>
    <property name="idempotent" value="false"/>
    </activation-spec>
    </endpoint-activation>
    </adapter-config>
    ---------------------ERROR---------------
    Invalid JCA transport endpoint configuration, exception: javax.resource.ResourceException: BINDING.JCA-12532 Cannot set JCA WSDL Property. Error while setting JCA WSDL Property. Property setIdempotent is not defined for oracle.tip.adapter.db.DBActivationSpec Please verify the spelling of the property.
    Thanks,
    Radha

  • FIle adapter polling at a particular time

    Hi,
    I want to pull a file say  at 12.00 am  always from a FTP server.
    Is there any scheduler in XI where in I can start the adapter polling without manually activating the file adapter at 12.00 am
    Thanks,
    Sachin

    HI,
    As of now File Adapter doesnot support this. Refer SAP Note 821267 Question No 18.
    There is some workaround is there. Using BPM etc..
    Regards,
    Moorthy

  • BPEL: invalid namespace error with DB adapter polling and java embedding

    Hello
    I'm using bpel 10.1.3.1.0, and I'm experiencing the following problem: I'm am not able to use the SetTitle() function in a process which polls for records using the db adapter.
    Steps to reproduce the problem:
    - I create a very simple bpel process which poll for records in a table.
    - I deploy it, write manually a record in the polled table and the process start.
    - I can see the record picked up through the visual flow in the console
    - everything looks ok and the process ends correctly
    - now I add a java embedding activities just after the receive
    - I set the instance title like this: setTitle("Go");
    - redeploy, write a record in the polled table and the process start.
    - but the process ends in error with the following message "XMLDOMException has been thrown. invalid namespace for prefix xmlns"
    And there is no way to make it work. Consider:
    If I put the same java embedding activity in another process, for example a simple asynchronous process which just copy the input to the output, and I run from the console, the instance title is set as I want ("Go")
    If I remove the three lines from the polling process
    <bpelx:exec name="Java_Embedding_1" language="java" version="1.3">
    <![CDATA[setTitle("Go");]]>
    </bpelx:exec>
    then the process is executed correctly again. I add them again and then namespace error.
    Whatever statement I put in the java embedding activity (for example a string concatenation or even just a comment I have the same result: invalid namespace for prefix xmlns.
    Does anybody has a suggestion to evercome the problem? I need to set the title because its a mess to find out which instance processed a specific record.
    Thanks by
    Paolo

    I made a lot of further tests, and I can say the problem is related only to the database adapter polling mechanism.
    If I create an asynchronous process, with any kind of database activity (for example select) I can set the title normally.
    If I create a process which start with database table polling, then I cannot use the java embedding.
    try this:
    - create BPEL empty project
    - drop a database adapter service and follow the wizard:
    - select a connection (I tried both oracle or sqlserver connection)
    - select "poll for new or changed record"
    - select any table empty or with few record inside (1 or 2)
    - press next 4 times
    - chose delete record after read (press next)
    - chose order by "no ordering" in polling options (press next 2 times)
    - now drop a receive activity on the process, and connect with the polling partner link
    - drop a java embedding and write any valid java statement
    - deploy; if the table is empty, write a recod in the table
    - the process is instantiated, but the it fails in the --> receive <-- activity with "invalid namespace" error

  • Database Adapter Polling

    I am using Jdeveloper 10.1.3.1.0 to do the database polling. The adapter polls two tables joined by the foreign key.Then it will update the status code as logic deletion. However, when I tried to set the database rows per xml document to 1 on step 10 of 11 of the polling options. However, when I tried to set database row per transaction to 50, it won't allow me. My understanding is that this 50 will set the database commit every 50 records. The wizard basically stopped there. Only after I changed it to unlimited, it proceeded.Can anybody help me?

    Hi,
    The triggering instances will not depend on the Database rows/transaction but will only depend on the Database rows/xml document.
    Database rows/transaction is internal to the DB and the DB adapter.
    If u keep Database rows/transaction as 200 and no. of rows/ xml document as 100 and 1000 rows are to be processed, then it will create 10 instances.
    However if you have 1000 rows for processing DB adapter will run a cursor in a loop to pick up 200 rows from the 1000
    rows 5 times (this is a batch setting between DB and the DB adapter and will distribute the load of picking 1000 rows at a time into 5 transactions) and then these 200 rows will be distributed into 2 BPEL instances of 100 rows (this is a batch setting between DB adapter and BPEL).
    Hope this clarifies.
    With Regards,
    Harshwardhan

  • Instances created before db adapter poll completes.

    Hi,
    We have been seeing a couple of instances where these instances seem to have been created before the database adapter could finish off it's polling cycle.
    The DB Adapter in our case does a logical delete and updates a column with 'Y', the timestamp of which is updated in another column of the same table.The instance when it gets created goes and updates another timestamp in the same table.
    The problem is that in some cases the timestamp of instance is greater than the timestamp of database adapter leading to other issues.
    Can anyone explain what is happening here and any possible resolution for the same.
    Thanks,
    Shishir

    Hi Shishir,
    If I understand your scenario correctly then below happens:
    DB Adapter polls a table and picks up the records for processing. After picking up it internally updates a particular column (logical delete) as configured in Adapter configuration. Then in BPEL Adapter process there is a step where you update another column in same table (timestamp). And when you see Adapter process instance in BPEL console, you observed that BPEL process instance creation timestamp > update database column timestamp for the processed record.
    Is this your problem? If yes then its a normal behavior.
    When the BPEL Adapter process is instantiated then its in memory and is only dehydrated when transaction is committed, in other words the in memory BPEL instance will be persisted to BPEL internal database when the process is finished or if it encounters explicit checkpoint or wait kind of activities. And when this BPEL process is dehydrated that is the process instance creation time which you see on BPEL Console.
    Please let me know if this clarifies your problem or otherwise explain me further if I understood it wrong.
    Thanks.
    Regards,
    Ankit A.
    http://fusionmusings.blogspot.com
    Edited by: AnkitAggarwal on Apr 14, 2010 2:00 AM

  • DB adapter polls all the records regardless of the MaxTransactionSize

    Hi All,
    I have a requirement that I need to poll only 10 records per minutes from DB2 database, regardless of how many ever records in the database at the time of the polling. I used the DB polling with custom sql, to fetch only first 10 records, as well as MaxTransactionSize set to 10 and PollingInterval to 60 (sec), PollingStrategy as LogicalDeletePollingStrategy. But when I test it out, if I have 100 records in the database, it updated all 100 records with the MarkReadValue and gave me all 100 records. I tried with disabling the SkipLocking as well, but doesn't seem to work. I also tried using the throttling in DB adapter in the composite.xml, but though the composites are showing up one by one based on the throttling time interval, in the database, it updated all the records right away, which is unacceptable as per business logic. Can someone please guide me how I can implement this? Thanks in advance.
    Note: I am using SOA 11.1.1.5. In 10.1.3.4, we have implemented this and it is working well, but can't make it to work in 11.1.1.5.
    Hruthayah

    Thanks for responding, Narsing.
    Please Note that MaxRaiseSize property doesn't behave the same in Database Adapter as it does in File Adapter Polling...
    MaxTransactionSize = Database Rows Per Transaction
    MaxRaiseSize = Database Rows Per XML Document
    In Database Adapter, MaxRaiseSize means the maximum number of records it can get in an XML Document...Yes, I do understand that, and that is why since I want one record per each instance, I have MaxRaiseSize set to 1.
    in the steps of configuring DB Adapter, you can select the 'Do Synchronous Post to BPEL' option in the 'Operation Type' screen in the adapter configuration wizard. This will generate an empty response message type for output variable. In the BPEL process add the reply activity at the end of the process by selecting output variable and also add the reply activities in the end of catch and catch all blocks in the exception handling.I had done what you have suggested. But I have seen two issue.
    1. Although only one instance is being showing up for the first time in EM, in database, all the records are being marked as "Reserved". (which is unacceptable as per the business requirement)
    2. Next instances are showing up right after first one is done. (meaning, all the instances are showing up one by one without waiting for the polling interval)
    Is this because of the DB2 database? I even tried updating the "PoolingService-or-mappings.xml" file to include the custom sql so that it will exactly fetch first 10 records.
    <query name="EOneEvents" xsi:type="read-all-query">
    <timeout>0</timeout>
    +<call xsi:type="sql-call">+
    +<sql>SELECT E1GS2A, E1VALU, E1UKID, E1ACTN, E1AA20, E1GPSP, E1LL, E1GS1A, E1GS1B, E1HBST1, E1HBST2, E1HBST3, E1HBST4, E1HBST5, E1CRTU, E1CRTJ, E1CRTT, E1WRKSTNID, E1HBOPID, E1UPMB, E1UPMJ, E1UPMT, E1JOBN, E1PID FROM F57MTE01 WHERE ((E1GS2A = 'LOT') AND (E1GPSP = '0')) ORDER BY E1CRTJ, E1CRTT ASC fetch first 3 rows only</sql>+
    +</call>+
    <reference-class>PollingService.F57mte01</reference-class>
    <cache-usage>primary-key</cache-usage>
    <lock-mode>none</lock-mode>
    <container xsi:type="list-container-policy">
    <collection-type>java.util.Vector</collection-type>
    </container>
    </query>
    </queries>
    I would appreciate if you can guide me if I am doing something wrong here.
    Hruthayah

  • DB Adapter polling is stopped because of SQLServerException

    Hi
    I am doing a DB adapter polling to MS SQL server database. If I am decreasing my polling frequency too low say 5 seconds, I am getting the below error some times and the polling process is getting stopped.
    Query name: [Poll_xworlds_eventsSelect], Descriptor name: [Poll_xworlds_events.XworldsEvents]. Polling the database for events failed on this iteration.
    Caused by com.microsoft.sqlserver.jdbc.SQLServerException: Lock request time out period exceeded..
    This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-1222" to your deployment descriptor (i.e. weblogic-ra.xml). This polling process will shut down, unless the fault is related to processing a particular row, in which case polling will continue but the row will be rejected (faulted).
    Also can anybody tell me how to add this in weblogic-ra.xml and which weblogic-ra.xml. this is 11g.
    Thanks.

    Changing the retryInterval and retryCount for that adapter process solved the problem. Thanks. I assume there's no bad side effects if I set this to keep trying for an hour or so? That's how long the target DB may be down for backups.
    Thanks,
    Lon

  • Throttling using JMS Adapter poller threads

    Hi,
    We are trying to realize the throttling using JMS Adapter poller threads mechanism
    I came across this http://docs.oracle.com/cd/E14571_01/core.1111/e10108/adapters.htm (15.5 Oracle SOA JMS Adapter Tuning )
    adapter.jms.receive.threads
    Here is my configuration. I tried both the options listed below but none works for me.
    option 1 - here property is of type string
    <service name="JMSDelayMsgRead" ui:wsdlLocation="JMSDelayMsgRead.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/jms/JMSDelayMessage/JMSDelayMessage/JMSDelayMsgRead#wsdl.interface(Consume_Message_ptt)"/>
    <binding.jca config="JMSDelayMsgRead_jms.jca">
    <property name="adapter.jms.receive.threads" type="xs:string" many="false">4</property>
    </binding.jca>
    </service>
    option 2 - Here property is of type integer
    <service name="JMSDelayMsgRead" ui:wsdlLocation="JMSDelayMsgRead.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/jms/JMSDelayMessage/JMSDelayMessage/JMSDelayMsgRead#wsdl.interface(Consume_Message_ptt)"/>
    <binding.jca config="JMSDelayMsgRead_jms.jca">
    <property name="adapter.jms.receive.threads" type="xs:integer" many="true" override="may">4</property>
    </binding.jca>
    </service>
    I tried minimumDelayBetweenMessages parameter for throttling (which is based on time delay) and it works as expected but poller threads mechansim is more suitable for my situation.
    Here is my environment details
    I'm on SOA 11.1.1.4
    JMS Adapter consuming from a Topic (IBM MQ)
    Durable Subscription
    Can any one help me get throttling using poller threads working?
    Please let me know if you need further details about my configuration / logs etc.
    I posted this in two other forums but didn't get any responses on them so posting it here. I apologize for the repetition of this post in multiple forums.
    Thanks & Regards
    shashi

    Hi Raks,
    Check this note for JNDI configuration..
    802754
    "If a 3rd party JMS provider should be used then usually the "Name of JNDI initial context factory" must be adjusted. I.e. com.sap.engine.services.jndi.InitialContextFactoryImpl must be replaced by some.other.vendor.jms.jndi.InitialContextFactory In addition it is necessary to deploy the jar that contains the some.other.vendor.jms.jndi.InitialContextFactory with the aii_af_jmsproviderlib.sda SDA file. In addition, you must extend the server/provider.xml deployment descriptor in the relevant way. Refer to Chapter 11 of the XI 3.0 Configuration Guide for more information"
    You need to find out class "Name of JNDI initial context factory" for tibco  as mentoned in the note and deploy the corresponding JAR file.
    Also check this link for JNDI configuration parameters in the JMs adapter..
    http://help.sap.com/saphelp_nw04/helpdata/en/c1/739c4186c2a409e10000000a155106/content.htm
    Regards
    Anand

  • Poll the new or changed records use DB Adapter in OSB Cluster

    Hi!
    I have an OSB Cluster which is included two servers: osbServer1 & osbServer2.
    I need to poll a view V_TMS_GOODS, and I use the "SequencingPollingStrategy" to implement it. The following is my JCA config:
    <adapter-config name="getGoodsInfoFromERP" adapter="Database Adapter" wsdlLocation="getGoodsInfoFromERP.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/DB/shaphar" UIConnectionName="shaphar" adapterRef=""/>
    <endpoint-activation portType="getGoodsInfoFromERP_ptt" operation="receive">
    <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
    <property name="DescriptorName" value="getGoodsInfoFromERP.VTmsGoods"/>
    <property name="QueryName" value="getGoodsInfoFromERPSelect"/>
    <property name="MappingsMetaDataURL" value="getGoodsInfoFromERP-or-mappings.xml"/>
    <property name="PollingStrategy" value="SequencingPollingStrategy"/>
    <property name="SequencingColumn" value="LAST_MODIFY_DATE"/>
    <property name="PollingInterval" value="60"/>
    <property name="MaxRaiseSize" value="50"/>
    <property name="MaxTransactionSize" value="unlimited"/>
    <property name="NumberOfThreads" value="1"/>
    <property name="ReturnSingleResultSet" value="false"/>
    <property name="SequencingTable" value="EDI_TRANS_TIMELOG"/>
    <property name="SequencingTableKeyColumn" value="TRANS_TYPE"/>
    <property name="SequencingTableValueColumn" value="LAST_TRANS_DATE"/>
    <property name="SequencingTableKey" value="V_TMS_GOODS"/>
    </activation-spec>
    </endpoint-activation>
    </adapter-config>
    The question is:
    If I check the "Distributed Polling" box in the JCA Configuration Wizard, the sequence table will have two records for the polling Sequencing, just like the following:
    TRANS_TYPE LAST_TRANS_DATE
         V_TMS_CLIENT     2011/12/19 16:23:36     
    V_TMS_CLIENT     2011/12/19 16:23:36
    If I don't check it, the records is single
    And weither I check "Distributed Polling" box or not, the two servers will poll the view twice(one server one times); For example: There are one thousand records in this view, but all the records will be polled twice by the osbServer1 & osbServer2. Finally the client will get tow thousand duplicate records。
    So, how can I make a balance with the two servers or use the one server to execute the polling?
    Thank you for your help!

    aren't the default cluster aware settings enough for this ?
    http://docs.oracle.com/cd/E15523_01/integration.1111/e10231/adptr_db.htm
    Scalability
    you could enable a few in the adapter wizards

  • Oracle database Adapter polling in OSB Cluster

    Hi,
    I have OSB 11g with two nodes. I have a database adapter that polls a table after every 30 seconds and perform logical delete on the rows read. I came across interesting situation. When one node is up and PollingInterval=30, it works okay and polling is done right after 30 seconds but when both nodes are up the PollingInterval property doesnt work as expected.
    First node will poll after 24 seconds and then second node will again poll after 6 seconds (node1+node2=30 seconds in total).
    and After i restart the servers the first node is polling at 18 sec and second node is polling at 12 sec (node1 +node2=30 sec), so different polling intervals.
    How does it determines the first server should poll at 24 or 18 sec and second node should poll at 6 or 12 sec?
    I would like to know is there any property or configuration required to poll the table for each node for every 15 seconds (node1(15sec)+node2(15sec)=30 sec)?
    Please help me, It is very urgent?
    Thanks
    Rajesh.

    Hi,
          If any one has the same issue, please let me know.
    Also if you know the solution, can you please update here, it's very helpful for me.
    Thanks,
    Rejesh.

  • Issue in Clustered environment DB adapter Polling

    hi all ,
    i have a table and one BPEL process is polling records depending on status value .
    Polled records are updated from N to P after polling .
    but , In cluster environment for One Row Multiple Instances are creating .
    Is there any way to ensure that in Cluster env. also for single Row , only one BPEL instance will be created ?
    I am using SOA 10.1.3.4
    i have used that "Distributed Polling" option in DB adapter .
    In JCA file i am using below configaration : -
    ActivationSpec="oracle.tip.adapter.db.DBActivationSpec"
    DescriptorName="PollTable.InterfaceData"
    QueryName="PollTable"
    PollingStrategyName="LogicalDeletePollingStrategy"
    MarkReadFieldName="STATUS"
    MarkReadValue="P"
    MarkUnreadValue="N"
    SequencingFieldName="ENTRYTIME"
    MaxRaiseSize="1"
    MaxTransactionSize="1"
    PollingInterval="10"
    NumberOfThreads="1"
    UseBatchDestroy="false"
    ReturnSingleResultSet="false"
    In that i am facing the Table Lock scenario .
    Even if i having 10 Records in database Row .Its locking all other 9 row and no instance are generating .
    Regards ...
    Edited by: 807572 on Feb 28, 2012 9:36 AM

    Use Reserved Value feature to avoid duplicate instances.
    Even if i having 10 Records in database Row .Its locking all other 9 row and no instance are generating .Do you see any error in $ORACLE_HOME/opmn/logs/<BPEL/ESBRT container>.log file? If you are having 1-M relationship defined in adapter then possibly you are hitting a known issue.
    Regards,
    Anuj

Maybe you are looking for