Thursday 15 January 2015

Is it possible to use direct path insertion with JDBC/Java? -


We have an application written in C and Pro * C, which allows data from log files to host arrays in the Oracle 11.2 database By using the bulk entry, this direct path uses the APPEND and the nologging signals to take advantage of the direct path insertion and reduces the amount drawn again. It is understandable for neologizing This is a temporary staging table and data can be retrieved from log files if necessary.

We are trying to replicate this functionality in Java but unable to use a large number of direct path insertion records. Is this possible with Java / JDBC?

The things I have tried and tested are:

  • JDBC batching (both standard batching and this approach saves time on round trip but it does not Because the application is in the form of a database on the same machine. It does not even use the straight path.
  • The signal looks promising, but very little because JDBC batching does not really appear to include "array" of many records.

    What I think, direct path inserts only support it can not be used because the data is not present in the database yet to enter.

    I am unable to find any reference to Java to be able to use host array style loading which uses Pro * C

    On the one hand, we use external Checking table loadings or SQL * loaders and appreciate that these devices are able to load the direct route, but this question is actually about getting a definite answer if there is also a direct path convergence. Sector to understand the limitations of our Java API is not only useful for this project, but future projects.

    So to repeat the question, is there a way that I can use direct path entry from Java?

    Related Questions:

    • The Oracle document clearly states this:

        If you specify an INSERT statement in the INSERT statement immediately after the INSERT keyword, specify an INSERT with values. Using direct route INSERT with values ​​is best when there are hundreds or thousands of rows to load. The general use scenario is for array entries using OCI. Another usage scenario can be included in a Bangalore statement in PL / SQL   

      .

      Then the answer to your question is the APP. I can see in your post which you have tried, but you can not face the problem.

      Besides this, this claim is not correct in your post. " Include the straight path which I think supports only the subkey syntax and not the volume of values ​​." Oracle Documentation gives this example:

      An example of using the following PL / SQL code piece APP: END_VALUES sign:

        FORALL i IN 1..numrecords INSERT / * + Price / pricing value / order order for APP (meaning T (i), Citid (i), Order (i), Shipmod (i), Payments (i)); COMMIT; "+" (?,?,?,?) "+" Debugger "+" in (USER_ID, USERNAME, CREATED_BY, CREATED_DATE)   

      = "INSERT / * + APPEND_VALUES * /"; Place created = dbConnection.prepareStatement (insertTableSQL); ReadyStatement.setInt (1, 101); ReadyStatement.setString (2, "test1"); ReadyStatement.setString (3, "System"); ReadyStatement.setTimestamp (4, getCurrentTimeStamp ()); ReadyStatement.addBatch (); Preparation .custom (1, 102); ReadyStatement.setString (2, "test2"); ReadyStatement.setString (3, "System"); ReadyStatement.setTimestamp (4, getCurrentTimeStamp ()); ReadyStatement.addBatch (); ReadyStatement.executeBatch (); DbConnection.commit ();

No comments:

Post a Comment