Oracle CEP and JDBC Adapter

I am using Oracle CEP 10g on WIndows.
I wrote the following code on CEP:
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:scott/[email protected]:1521/orcl");
Connection conn = ods.getConnection();
// Check for the existence of a previous customerID
String selectStmt     = "SELECT * from STEPS " +
     "WHERE (streamID='" +
     this.customerId +
     "') and (assetid='" +
     this.eventName +
Statement stmt  = conn.createStatement();
//System.out.println("-- calling SELECT");
//System.out.println(selectStmt);
ResultSet rs    = stmt.executeQuery(selectStmt);This works great, except it is exceedingling slow. I am sending about 20,000 messages to this code.
I think the problem is that I open the connection everytime I perform a select (and later an insert statement).
The server instance goes away after the message has been processed, and I can not save the connection.
Would using an adapter in config.xml prevent this openig a new connection every time a message invokes this code ?
If so, I have never done JDBC with an adapter and I dont understand how to use an adapter to use a WHERE clause to select on variables, since in the example I have seen so far, it places "SELECT 1 from DUAL" into the config.xml and does not explain how to get mix have the SELECT statement interact with code variables or better yet how to get your code to get a connection handle.
Could someone please post an exaqmple of how to use an adapter with JDBC, and possibly how to get your code to access a connection handle from the config.xml ?
Thanks

Hi,
From note : 831162,
<i>Oracle JDBC Driver (classes12.zip / classes12.jar) Deadlocks
Q: I have deployed the Oracle classes12.zip / classes12.jar JDBC driver as per the instructions in the XI Configuration Guide.
Unfortunately, I frequently notice hanging database connections. A thread dump taken according to the instructions in note 710154 shows one or more blocking JDBC Sender/Reciver threads and optionally that the JVM has detected a deadlock.
A: <b>The Oracle classes12.zip / classes12.jar driver is compatible with JDK 1.2 and 1.3 only, but not with JDK 1.4. Upgrade to a current version of the driver (ojdbc14.jar). For details, refer to note 941317.</b>
Make sure that you remove classes12.zip / classes12.jar from aii_af_jmsproviderlib.sda prior to adding the new driver as per the instructions in the answer to question #1 above as you will get a class name collision otherwise (all JARs from aii_af_jmsproviderlib.sda are loaded into the same class loader and the driver class name of both driver versions is the same).
Before deploying the updated driver, ensure that the new version is still compatible with your Oracle database server release. For details, refer to the release notes provided by Oracle.</i>
Regards,
Bhavesh

Similar Messages

  • NCHAR issue with oracle database using JDBC adapter

    Hi,
    We have a requirement to develop an XI interface from FTP server(File adapter) to oracle database using JDBC adapter. In the oracle database table few fields are of type NCHAR/NVARCHAR. when we try to insert the character(A,B,c..) values into oracle table fields of type NCHAR/NVARCHAR, we are getting the following error message in the JDBC adapter audit log. IF we pass the numeric value to the same field, then we are able to insert the records successfully.
    Unable to execute statement for table or stored procedure. 'IPCSDD_DOWNLOAD_PROCESS' (Structure 'StatementName1') due to java.sql.SQLException: ORA-00904: "P": invalid identifier
    2010-10-19 22:29:59 Error JDBC message processing failed; reason Error processing request in sax parser: Error when executing statement for table/stored proc. 'IPCSDD_DOWNLOAD_PROCESS' (structure 'StatementName1'): java.sql.SQLException: ORA-00904: "P": invalid identifier
    2010-10-19 22:29:59 Error MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'IPCSDD_DOWNLOAD_PROCESS' (structure 'StatementName1'): java.sql.SQLException: ORA-00904: "P": invalid identifier
    Please find the system information below.
    Oracle version- 10.2.4
    XI version - 3.0/ service pack 19
    JDBC driver- oracle.jdbc.driver.OracleDriver
    Please suggest.
    Thanks,
    Venkata
    Edited by: Venkata Narayana  Eepuri on Oct 21, 2010 12:10 AM

    Dear Venkata Narayana,
    Concerning the error, kindly go through the following note :
    731 - Collective note: ORA-00904
    follow the recommendations mentioned in that and please check if that helps.
    Best Regards
    Nishwanth

  • JMS and JDBC Adapter in PI7.1

    Hi All,
    Kindly tell me about the blogs for JMS and JDBC adapter.
    Please tell me about the Message Types in JMS adapter.
    Thanks in advance.

    Hi Shwetambari,
    Thanks for the reply.
    We need to mention the Adapter Modules while configuring the communiucation channels in JMS
    e.g. Adapter/ConvertJMSMessageToBinary,Adapter/ConvertBinaryToXMBMessage etc.
    So please tell me whether we need to write the cide for the same in JAVA or it is already there ?If it is there then whre can we get it?Do we need to decompile the archeve ?If so, then how to do it?
    Can you give me the Adaqpter Modules for which the code is already there?
    The JMS adapter (Java Message Service) enables you to connect messaging systems to the Integration Engine or the PCK.
    What are the different types of Messaging Systems?Or what is meant by the Messaging System in JMS?
    What are the different types of Messages used?
    Thanks in advance.
    Edited by: Shweta Kullkarni on Sep 4, 2009 5:22 AM

  • Access an Oracle DB using JDBC adapter

    Hi, I'm trying to make an simple test for checking if the connection between XI and Oracle DB is working fine and following the weblog nr. 2018 ( Save Time with generalized JDBC datatypes ) i've made my structures in order to achived that. I've declared the field action as SELECT than the table name ... and in the IB set the needed configurations. So when i exec my interface i've got the black/white flag bur if i look at the adapter engine i see that the JDBC adapter is achieved but i got 2 errors " <b>No 'action' attribute found in XML document('action' attribute missing or wrong XML structure)</b> and <b>Exception caught by adapter framework: error processing request in sax parser: No 'action' attribute found in XML document('action' attribute missing or wrong XML structure)</b>. Can anybody provide me some help ??? Thanks in advance.
    JMMatos

    Hi,
    This is how my DT looks like:
    Structure           Category      Type
    Data_JDBCReceiver   Complex Type
      Statement
        Table_name
          action        Attribute
          table
        access                        Data_FileSender
          cod
        key                           Data_FileSender
          cod
    This is my DT and in MM i fill field <b>action</b> with constant value(SELECT/INSERT), field <b>table</b> with the name of the corresponding DB table, fields <b>access/key</b> with constant value(empty). At this moment, I got the following error <b>Exception caught by adapter framework: Error processing request in sax parser: Error when executing statement for table/stored proc. 'v01_sap_xi' (structure 'Statement'): java.sql.SQLException: FATAL ERROR: Column 'cod' does not exist in table 'v01_sap_xi'</b>; according with the people responsible for the DB this column named <b>cod</b> does really exist !! What can I do ?!?!? Some help will be ... Thanks !!!

  • Oracle Function in JDBC Adapter

    Dear All
    Can we execute an oracle fucntion using receiver jdbc adapter? if yes then what should be the structure
    I have gone through following links but the soluiotn is not clear
    Using PI - Calling a Function in Oracle
    Regards
    Sourabh

    I think two possible ways. You might want to write stored procedure and inside your stored procedure call oracle function.  The second option is as below. In access tag write your query with standard functions. placeholder is to pass values for the variable.
    <StatementName>
    <anyName action=u201D SQL_QUERYu201D | u201CSQL_DMLu201D>
    <access>SQL-String with optional placeholder(s)</access>
    <key>
      <placeholder1>value1</placeholder1>
      <placeholder2>value2<placeholder2>
    </key>
    </anyName > 
      </StatementName>
    Ex:
    SELECT '03.12.2004:10:34:24' "Now",
           TO_CHAR(hiredate,'DD.MM.YYYY:HH24:MI:SS') "Hiredate",
           TO_DATE('03.12.2004:10:34:24','DD.MM.YYYY:HH24:MI:SS')
           - hiredate "Hired since [Days]"
      FROM emp;
    where to_char is the oracle function.

  • Sapdb (maxdb) and jdbc adapter problem

    Hi,
    i have installed this jdbc file:
    http://sapdb.org/7.4/sap_db_jdbc.htm
    like in this how-to:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-how-to-guides/how to install and configure external drivers for jdbc and jms adapters.pdf
    then i set up an jdbc to file szenario to test the adapter.
    Driver is: com.sap.dbtech.jdbc.DriverSapDB
    connection is: jdbc:sapdb://sapdb-host/XI_DATA
    with sapdb-host is the db server and XI_DATA ist the database
    user and pw is dba
    sql statement is: SELECT * FROM "AAA_XI_DATA" WHERE "number" = 50
    with AAA_XI_DATA is the table with test data.
    the statment works in the sapdb studio. (No ; in sapdb and the XI)
    but when i have a look at the runtime monitor at the af
    messages there is no message genereated. where can i
    check, if the jdbc driver is working and where do i find
    error messages?
    Regards
    J.
    Message was edited by: Jörg Pieper

    You can check if there is some kind of error with the JDBC Adapter in the Runtime Workbench. Inside the RWB, open "Component Monitoring", "tree view", "Adapter Monitoring", and in the adapter listing you'll find the "JDBC Adapter". It should have a green light. If not, the error will be displayed.

  • Stored procedures and JDBC Adapter

    Hey guys ,
    any blog where i canlook up w.r.t. working with  any stored procedure through xi ?
    Appreciate ur help.
    Krishna

    Hi Krishna,
    Here you go-
    /people/siva.maranani/blog/2005/05/21/jdbc-stored-procedures
    Also remember that, Sender JDBC Adapter doesnot support Oracle Stored Procedures. Because Sender JDBC Adapter sends resultset to XI. But Oracle stored procedure returns Cursor.
    I think, if you are using other database then it may support.
    Regards,
    Moorthy

  • Need information about Mail  and JDBC Adapter

    Hi Guys,
    I am just started learning XI. Can any you provide any document how to use Mail and JDBC adapters in step-by-step way.
    Thanks & Regards
    Surendra M

    hi,
    Check these links
    Mail Adapter
    http://help.sap.com/saphelp_nw70/helpdata/en/ad/bf93409c663228e10000000a1550b0/frameset.htm
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9e6c7911-0d01-0010-1aa3-8e1bb1551f05
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6d967fbc-0a01-0010-4fb4-91c6d38c5816
    JDBC Adapter
    http://help.sap.com/saphelp_nw70/helpdata/en/22/b4d13b633f7748b4d34f3191529946/frameset.htm
    Receiving Mail attachments using additional files of file adapter
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1685 [original link is broken] [original link is broken] [original link is broken]
    FILE to JDBC Adapter using SAP XI 3.0
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
    Tips and Tutorial for Sender JDBC Adapter
    /people/yining.mao/blog/2006/09/13/tips-and-tutorial-for-sender-jdbc-adapter
    Sachin
    Message was edited by:

  • Oracle express and jdbc

    can i use oracle 10g express edition and jdbc connector to connect to it through java. i read on the comparison list that 10g express doesn't support java..what does it mean??

    Thanks for your help.
    I went through the features list comparing different versions of oracle ..express, standard etc from the following page :
    http://www.oracle.com/database/product_editions.html
    In the 'Application Development' section under, corresponding to 'Java Support' there is no tick mark....i guess i misunderstood the fine print which says :
    "Grid-enable databases through Web Services"....
    thanks anyway...

  • Oracle CEP and Esper Software

    Hi, I found a that EsperTech says that Esper open source software is the CEP engine in Oracle Event Processing (see: http://www.espertech.com/partners/partners.php) is it true ? which is the difference between Esper and Oracle CEP ?

    Just wanted to add a few additional points. OCEP is a platform for building event-driven applications that encompasses a number of things; including clustering, high-availability, distributed cache integration, monitoring, management, logging, database access, and more. A part of the platform is the event processing engine. Previously, OCEP did embed an event processing engine that was based on Esper, although a lot of custom hardening, performance, and feature enhancements were done. The Esper technology has now been replaced by Oracle's own event processing engine, although the legacy Esper engine is still supported for backward compatibility. The event processing language supported by the new engine is called CQL (Continuous Query Language).
    Hope that helps.
    Seth

  • Able to make dirty read using Oracle 9i and JDBC thin driver v 9.2.0

    I've searched this forum and did not see anything to directly answer my question.
    I checked the Oracle JDBC Frequently Asked Questions...
    ditto (perhaps due to the fact that it was last updated: 22 June 2001).
    So here is my question, and thank you in advance for any insight (apologies if I have missed finding an already answered question):
    Section 19-15 of:
    "JDBC Developer’s Guide and Reference"
    (which is for Oracle 9i database)
    downloadable from:
    http://download-east.oracle.com/docs/cd/B10501_01/java.920/a96654.pdf
    is entitled:
    "Transaction Isolation Levels and Access Modes"
    The section seems to indicate that
    if JDBC connection A is setup with:
    setAutoCommit(false)
    setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED)
    and then used to perform an update on a row (no commit(), rollback(), or close() yet) ...
    then JDBC connection B (setup in the same way) will be prevented from
    making a dirty read of that same row.
    While this behavior (row-level locking) occurs correctly when using MS SQL Server 2000,
    it is not occuring correctly with Oracle 9i and the Oracle Thin JDBC driver version 9.2.0.
    The test case I have shows that with Oracle, connection B is able to make a dirty read
    successfully in this case.
    Am I doing something wrong here ?
    Again, MS SQL Server correctly blocks connection B from making the Read until Connection A
    has been either committed, rolled back, or closed, at which time connection B is able to
    complete the read because the row is now unlocked.
    Is there a switch I must throw here ?
    Again, any help is greatly appreciated.

    Thanks for the response.
    I understand what you are saying...
    that readers don't block writers in Oracle (the same is true in SQL Server 2000).
    However, I don't see how my test case is working correctly with Oracle (the exact same code acting as I'm thinking it should with SQL Server, but I still think it is acting incorrectly with Oracle).
    I have transaction A do this:
    update <table> set <column2>=<value> where <column1>='1'
    then I use Thread.sleep() to make that program hang around for a few minutes.
    Meanwhile I sneak off and start another program which begins transaction B. I have transaction B do this:
    select * from <table> where <column1>='1'
    and the read works immediately (no blocking... just as you have said) however, transaction A is still sleeping, it has not called commit() or rollback() yet.
    So what if transaction A were to call rollback(), the value read by transaction B would be incorrect wouldn't it ?
    Both A and B use setAutoCommit(false) to start their transactions, and then call setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED).
    Isn't that supposed to guarantee that a reader can only read what is committed ?
    And if a row is in "flux"... in the process of having one or more values changed, then the database cannot say what the value will be ?
    I can almost see what you are saying.
    In letting the reader have what it wants without making it wait, I suppose it could be said that Oracle is holding true to the "only let committed data be read"
    So if that's it, then what if I want the blocking ?
    I want an entire row to be locked until whoever it in the middle of updating, adding, or removing it has finished.
    Do you know if that can be done with Oracle ? And how ?
    Thanks again for helping me.

  • Oracle CEP and Telecom Industry

    Hi Guys......
    i wnated to know how do we leverage the power of CEP wrt the telecom industry.....if u have any idea or any business case study please direct it to me......i wnated to prepare some POC's using the Oracle CEP for the Telecom Industry....to show....
    regards
    \Sanju03

    There are a no. of CEP usecases that are relevant to telecom industries:
    a) Call record processing
    b) Detecting fraud
    c) Using GPS location of users to upsell products by pushing mobile coupons
    d) Management of telecom data centers.
    There are some more that I may have missed. I will be very interested in your thoughts on these.

  • Oracle CEP and Event Driven Architecture

    I am a master student and writing my thesis on adaptive enterprise. An important component in my frameworks is the ability for organisation to response to sudden and unpredictable event.
    I have found that Oracle offer the CEP technology, which considered as the corners stone for its SOA suit to achieve SOA 2.0 standards.
    I only have very superficial understanding of CEP technology, and would like to learn from you
    1.     Has Oracle leveraged the capability of CEP for BI? Does the information from CEP feed back to BI to facilitate decision making?
    a.     If so, how? Can someone send me a link which elaborates the architecture?
    2.     According to the white paper, CEP is able to anticipate the future event based on existing event, how does it filter the false signal, and how accurate it might predict the future event?
    3.     Does CEP have the capability to distinguish the importance of an event?
    4.     Does CEP help BAM to trace back a particular transaction and identify which part of the service generates a warning signal?
    5.     Has Oracle integrated the Event Driven Architecture with Enterprise Manager yet? I want to know whether Oracle SOA suit support auto orchestration and choreography based on the event identified by CEP.
    Thank you very much and I am looking forward for your replies.

    Just wanted to add a few additional points. OCEP is a platform for building event-driven applications that encompasses a number of things; including clustering, high-availability, distributed cache integration, monitoring, management, logging, database access, and more. A part of the platform is the event processing engine. Previously, OCEP did embed an event processing engine that was based on Esper, although a lot of custom hardening, performance, and feature enhancements were done. The Esper technology has now been replaced by Oracle's own event processing engine, although the legacy Esper engine is still supported for backward compatibility. The event processing language supported by the new engine is called CQL (Continuous Query Language).
    Hope that helps.
    Seth

  • Call Oracle Function via JDBC Adapter

    Hi to everybody,
    using JDBC connection with an Oracle DB, from XI I manage to send messages to execute SQL statements or Stored Procedures. Does anybody know if there is a way to call also an Oracle Function?
    Thanks a lot for any help...
    Ilaria

    Hi Illaria,
    I think i agree with Michal. The solution to your problem would be to go for a stored procedure. The link on SDN help only tells us that a stored procedure can be executed and does not discuss about oracle functions.
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    So, Stored Procedures, it has to be.
    Regards,
    Bhavesh

  • Problem to establish connection between Oracle SQL and JDBC

    Hi friends i have been trying this code from two days i donno whats wrong please try to sort the problem thank u in advance this is my program:
    //This is my Connection class
    package com.java.jdbc.util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    public class EmployeeUtil {
    public EmployeeUtil()
    public static Connection getconnection()
    Connection con=null;
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORANT","system","manager");
    // Class.forName("sun.jdbc.odbc.OracleDriver").newInstance();
    // con = DriverManager.getConnection("jdbc:odbc:Javatut","System","manager");
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return con;
    //This is my DB class:
    package com.java.jdbc.DB;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import com.java.jdbc.info.EmployeeInfo;
    import com.java.jdbc.util.EmployeeUtil;
    public class EmployeeDB {
    Connection connection=null;
    public EmployeeDB()
    //this.connection=EmployeeUtil.getconnection();
    public void select(EmployeeInfo empinfo)
    this.connection=EmployeeUtil.getconnection();
    String stb = "select * from employee";
    try {
    Statement stmt = connection.createStatement();
    ResultSet rs = stmt.executeQuery(stb);
    System.out.println(rs);
    //EmployeeInfo empinfo = new EmployeeInfo();
    while(rs.next())
    empinfo.setEmpId(rs.getString(1));
    empinfo.setEmpfName(rs.getString(2));
    empinfo.setEmplName(rs.getString(3));
    empinfo.setEmpAge(rs.getString(4));
    empinfo.setEmpSalary(rs.getString(5));
    System.out.println("The EmployeeID is : "+empinfo.getEmpfName());
    System.out.println("The Employee First Name is : "+empinfo.getEmpfName());
    System.out.println("The Employee Last Name is : "+empinfo.getEmplName());
    System.out.println("The Employee Age is : "+empinfo.getEmpAge());
    System.out.println("The Employee Salary is : "+empinfo.getEmpSalary());
    connection.commit();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    //This is my info object
    package com.java.jdbc.info;
    public class EmployeeInfo {
    private String empId;
    private String empfName;
    private String emplName;
    private String empAge;
    private String empSalary;
    public String getEmpAge() {
    return empAge;
    public void setEmpAge(String empAge) {
    this.empAge = empAge;
    public String getEmpfName() {
    return empfName;
    public void setEmpfName(String empfName) {
    this.empfName = empfName;
    public String getEmpId() {
    return empId;
    public void setEmpId(String empId) {
    this.empId = empId;
    public String getEmplName() {
    return emplName;
    public void setEmplName(String emplName) {
    this.emplName = emplName;
    public String getEmpSalary() {
    return empSalary;
    public void setEmpSalary(String empSalary) {
    this.empSalary = empSalary;
    //This is my Controller class:
    package com.java.jdbc.controller;
    import com.java.jdbc.DB.EmployeeDB;
    import com.java.jdbc.info.EmployeeInfo;
    public class EmployeeController {
    public static void main(String args[])
    EmployeeDB empdb = new EmployeeDB();
    EmployeeInfo emp = new EmployeeInfo();
    empdb.select(emp);
    // I got these errors:
    java.sql.SQLException: Io exception: Got minus one from a read call
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:210)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:251)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:224)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.java.jdbc.util.EmployeeUtil.getconnection(EmployeeUtil.java:18)
    at com.java.jdbc.DB.EmployeeDB.select(EmployeeDB.java:20)
    at com.java.jdbc.controller.EmployeeController.main(EmployeeController.java:11)
    Exception in thread "main" java.lang.NullPointerException
    at com.java.jdbc.DB.EmployeeDB.select(EmployeeDB.java:23)
    at com.java.jdbc.controller.EmployeeController.main(EmployeeController.java:11)

    Are you using Oracle 10.2 in shared server configuration under Windows?
    If so it's a driver bug (BUG - Connection pooling with 10g 10.1.3 Preview 4 App Server Oracle suggest to use OCI driver.

Maybe you are looking for