Performance: Bulk Insert Oracle 10g

Following Situation: We have a VISUAL BASIC 6 Application (I know ... VB6 ... ), an XML-File with data and an Oracle 10g database. The XML-File has to be imported in the database.
Up to now the Application (Via ADO) analyses the XML-File and creates INSERT and UPDATE Stmts and sends them to the DB. The Stmts will be handled within one Transaction and the application sends each INSERT, UPDATE separate to the database.
But this is a performance desaster... as expected ... :-) The import takes several hours ...
Now, my task is to increase the performance, but how .....
I tried several things, but without the real success, e.g. ...
I performed some tests with the SQl*Loader. The Insert is really fast, but I can't make an Update, so I had to delete the existing data first. But I can't proceed the two steps in one transaction, because of the SQL*Loader.
I tried to write a stored procedure which accepts an ADO.Recordset as input param and then creates the Insert and Update statements within the DB to reduce network traffic, but I didn't find a way to handle a ADO.Recordset as a input parameter for a stored procedure.
Has someone an idea how I can import the XML file in a fast way into the existing DB (and maybe make an Replace of existing records during the import ...) within one transaction without changing the structure of the DB ??? (Oracle packages?? interface in C++ integrated in VB6....) Is there an way to import the XML-File directly to the DB?
Thanks in advance for any idea :-))

I tried to write a stored procedure which accepts an ADO.Recordset as input param ...., but I didn't find a way to handle a ADO.Recordset as a input parameter
for a stored procedure.Use SYS_REFCURSOR as the parameter type. Bulk collect it into a PL/SQL collection. Use FORALL to soup up the INSERT and UPDATE statements.
Cheers, APC
blog: http://radiofreetooting.blogspot.com

Similar Messages

  • Performance log for ORACLE 10g

    Hi everyone can anybody tell me where i can get the reporting from the performance logs in oracle 10g>?
    i need to generate reports for audit trail, no of hits in the portal , top ten url , and how often the user view a page or portlet?
    i thank you all in advance .....look forward for replies....thank you

    Thaks for the reply...
    but i cant go to the link =( may i ask u abt this , i read this link http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/OTN_CONTENT/MAINPAGE/ARCHITECTURE/MONITOR_DIAGNOSTICS_ANALYTICS_PORTAL.HTM#1
    STATING : Oracle9iAS Portal Release 2 (9.0.4) provides some new, additional metric information. This release also collects some (pre-defined) metrics in the Oracle Enterprise Manager Central Console and creates historical reports, which can be published via Oracle Management Portlets on Portal pages
    How to do the publishing? is there any references that will guide me from how to use the metrics to published in the portal pages? i requires all these ....PLEASE HELP

  • Performance Tuning in Oracle 10g during Migration - Insert Statements

    Some of the tables contain a huge data e.g. 7 million records to be migrated.
    The table structure of Source Database is different from the Target Database (Where we are doing the migration).
    So we have made a use of temporary tables to collect the data from different tables using joins and populate the main table using INSERT INTO tableA SELECT * FROM tableZ
    Now the problem statement.
    Some of the queries take infinite time and data doesnt get inserted into the main tables. I have seen the explain plan and didnt find anything unusual. The same query works fine when we use date time stamp and restrict the data.
    What parameters do we have to take care ? Is there any configuration needed on Oracle Server side ? If yes which parameters?

    Lets start with the basics. First what is 10g? Is that 10.1.0.3 or 10.2.0.4 or something else?
    Second 7 million records is a relatively small dataset.
    No one can possibly help you with no DDL, no DML, no Explain Plan output generated with DBMS_XPLAN.
    We can make wild guesses but that is like closing your eyes in a dark room and trying to find the light switch.
    Please repost all relevant information so someone can help you.

  • Step for performance tuning in oracle 10g

    hi,
    i want to know the step of persformance tuning and sql tuning.

    I'd suggest you to refer to documentation: [Oracle Database 2 Day + Performance Tuning Guide 10g Release 2 (10.2)|http://download.oracle.com/docs/cd/B19306_01/server.102/b28051/toc.htm]
    Kamran Agayev A. (10g OCP)
    http://kamranagayev.wordpress.com
    [Step by Step install Oracle on Linux and Automate the installation using Shell Script |http://kamranagayev.wordpress.com/2009/05/01/step-by-step-installing-oracle-database-10g-release-2-on-linux-centos-and-automate-the-installation-using-linux-shell-script/]

  • Performance tuning in oracle 10g

    Hi Guys
    i hope all are well,Have a nice day Today
    i have discuss with some performance tuning issue
    recently , i joined the new project that project improve the efficiency of the applicaton. in this environment oracle plsql langauage are used , so if i need to improve effiency of application what are the step are taken
    and what are the way to go through the process improvement
    kindly help me

    generate statspack/AWR reports
    HOW To Make TUNING request
    https://forums.oracle.com/forums/thread.jspa?threadID=2174552#9360003

  • Disk IO performance tuning of oracle 10g 64bit  on rhel5 64bit

    Hi Friends,
    I am very new on oracle database tuning part.
    I am facing some issues on the oracle disk io data transfer rate on rhel5.
    Please help me. Details of issue is below.
    I am using the iscsi san storage to install the database. My san storage is having more than 100Mbps transfer speed.
    When oracle backup is running the data transfer rate is spikes upto 100Mbps, but when oracle normal transaction is happening it is not going more than 30Mbps.
    My data base is an hybrid one and more read transaction is happening. Server is running with 4 cpus and 16GB of ram.
    Here i am providing the iostat command output. Please have a look into this and help me to resolve.
    [root@hostname ~]# iostat -x 1 5
    Linux 2.6.18-128.el5 (hostname)    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              24.94    0.00    4.15   31.94    0.00   38.96
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               7.61    10.42  4.28  5.28   345.38   125.59    49.26     0.12   12.91   3.18   3.04
    sda1              0.30     0.00  0.03  0.00     0.65     0.00    22.59     0.00    3.76   2.66   0.01
    sda2              0.22     0.00  0.01  0.00     0.23     0.00    18.78     0.00    4.05   3.54   0.00
    sda3              5.25     8.26  3.58  2.47   310.67    85.87    65.54     0.09   15.09   3.37   2.04
    sda4              0.00     0.00  0.00  0.00     0.00     0.00     1.83     0.00    0.33   0.33   0.00
    sda5              0.83     1.95  0.55  2.70    31.62    37.24    21.17     0.03    8.88   3.49   1.13
    sda6              0.68     0.07  0.06  0.04     1.11     0.85    19.74     0.00   13.91   9.05   0.09
    sda7              0.33     0.14  0.04  0.07     0.90     1.63    24.17     0.00   15.73  11.13   0.12
    sdb               0.06     0.00  0.03  0.00     0.75     0.00    25.57     0.00    1.64   1.48   0.00
    sdb1              0.04     0.00  0.01  0.00     0.45     0.00    34.90     0.00    3.13   2.85   0.00
    sdc               5.86     0.16 45.05  2.74  7805.28   129.85   166.04     2.57   53.82   9.12  43.58
    sdc1              5.79     0.16 45.02  2.74  7804.99   129.85   166.12     2.57   53.85   9.12  43.57
    sdd               5.85     0.17 44.45  2.68  7767.34   133.80   167.65     2.68   56.95   9.43  44.43
    sdd1              5.78     0.17 44.42  2.68  7767.06   133.80   167.74     2.68   56.98   9.43  44.43
    sde               5.89     0.16 44.86  2.37  7774.84   122.75   167.23     2.24   47.51   8.96  42.30
    sde1              5.82     0.16 44.83  2.37  7774.55   122.75   167.31     2.24   47.54   8.96  42.29
    sdf               5.91     0.16 63.70  2.69  8053.71   133.15   123.32     2.98   44.89   7.59  50.40
    sdf1              5.84     0.16 63.67  2.69  8053.43   133.15   123.36     2.98   44.91   7.59  50.39
    sdg               0.19     0.11  0.07  0.61     2.54   131.30   199.27     0.04   65.76  28.52   1.92
    sdg1              0.12     0.11  0.04  0.61     2.25   131.30   206.81     0.04   68.26  29.56   1.91
    sdh               4.43     2.29  0.99  1.36   199.10    29.19    97.03     0.05   20.92   5.13   1.21
    sdh1              4.43     2.29  0.98  1.36   198.95    29.19    97.49     0.05   21.01   5.14   1.20
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              13.72    0.00    2.49   75.31    0.00    8.48
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda2              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda3              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda4              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda5              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda6              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda7              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdc              18.00     0.00 54.00  2.00 25984.00   160.00   466.86     8.96   94.18  17.89 100.20
    sdc1             18.00     0.00 54.00  2.00 25984.00   160.00   466.86     8.96   94.18  17.89 100.20
    sdd              18.00     0.00 79.00  2.00 40240.00    32.00   497.19     8.61  118.93  12.04  *97.50*
    sdd1             18.00     0.00 79.00  2.00 40240.00    32.00   497.19     8.61  118.93  12.04  *97.50*
    sde              19.00     0.00 44.00  8.00 26656.00   187.00   516.21     9.34  119.81  19.27 *100.20*
    sde1             19.00     0.00 44.00  8.00 26656.00   187.00   516.21     9.34  119.81  19.27 *100.20*
    sdf              26.00     0.00 76.00  6.00 35600.00    59.00   434.87     3.23   40.76  10.52  86.30
    sdf1             26.00     0.00 76.00  6.00 35600.00    59.00   434.87     3.23   40.76  10.52  86.30
    sdg               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdg1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              18.64    0.00    5.29   49.87    0.00   26.20
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00    14.00  0.00  3.00     0.00   136.00    45.33     0.01    1.67   1.67   0.50
    sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda2              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda3              0.00    14.00  0.00  3.00     0.00   136.00    45.33     0.01    1.67   1.67   0.50
    sda4              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda5              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda6              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda7              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdc              44.00     0.00 99.00  1.00 58368.00     8.00   583.76    12.03  154.83   9.66  96.60
    sdc1             44.00     0.00 99.00  1.00 58368.00     8.00   583.76    12.03  154.83   9.66  96.60
    sdd              44.00     0.00 103.00  0.00 50672.00     0.00   491.96    10.07   82.47   8.37  86.20
    sdd1             44.00     0.00 103.00  0.00 50672.00     0.00   491.96    10.07   82.47   8.37  86.20
    sde              45.00     0.00 110.00  5.00 58176.00   126.00   506.97    13.01  113.47   8.02  92.20
    sde1             45.00     0.00 110.00  5.00 58176.00   126.00   506.97    13.01  113.47   8.02  92.20
    sdf              40.00     0.00 122.00  5.00 52944.00   126.00   417.87     9.74   63.94   6.52  82.80
    sdf1             40.00     0.00 122.00  5.00 52944.00   126.00   417.87     9.74   63.94   6.52  82.80
    sdg               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.01    0.00   0.00   0.90
    sdg1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.01    0.00   0.00   0.90
    sdh               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               7.48    0.00    2.49   *61.60*    0.00   28.43
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda2              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda3              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda4              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda5              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda6              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda7              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdc              13.86     0.00 38.61  0.99 19611.88    11.88   495.50     3.35   79.53  25.03  99.11
    sdc1             13.86     0.00 38.61  0.99 19611.88    11.88   495.50     3.35   79.53  25.03  99.11
    sdd              15.84     0.00 40.59  0.99 17758.42    31.68   427.81    10.93  122.36  23.26  96.73
    sdd1             15.84     0.00 40.59  0.99 17758.42    31.68   427.81    10.93  122.36  23.26  96.73
    sde              12.87     0.00 46.53  1.98 22035.64    70.30   455.65    13.19  275.96  20.43  99.11
    sde1             12.87     0.00 46.53  1.98 22035.64    70.30   455.65    13.19  275.96  20.43  99.11
    sdf              13.86     0.00 39.60  2.97 17584.16   101.98   415.42     6.83   81.19  22.21  94.55
    sdf1             13.86     0.00 39.60  2.97 17584.16   101.98   415.42     6.83   81.19  22.21  94.55
    sdg               0.00     0.00  0.00  0.99     0.00     7.92     8.00     0.21  226.00 217.00  21.49
    sdg1              0.00     0.00  0.00  0.99     0.00     7.92     8.00     0.21  226.00 217.00  21.49
    sdh               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              24.69    0.00    8.98   48.38    0.00   17.96
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda2              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda3              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda4              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda5              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda6              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sda7              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdb1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdc              25.00     0.00 61.00  4.00 36304.00   120.00   560.37     9.58  156.23  14.78  96.10
    sdc1             25.00     0.00 61.00  4.00 36304.00   120.00   560.37     9.58  156.23  14.78  96.10
    sdd              23.00     0.00 82.00  1.00 34832.00    32.00   420.05     7.61  163.49  11.27  93.50
    sdd1             23.00     0.00 82.00  1.00 34832.00    32.00   420.05     7.61  163.49  11.27  93.50
    sde              27.00     0.00 62.00  0.00 32864.00     0.00   530.06     9.41  149.56  16.15 100.10
    sde1             27.00     0.00 62.00  0.00 32864.00     0.00   530.06     9.41  149.56  16.15 100.10
    sdf              17.00     0.00 101.00  4.00 42656.00   132.00   407.50     4.18   88.24   6.72  70.60
    sdf1             17.00     0.00 101.00  4.00 42656.00   132.00   407.50     4.18   88.24   6.72  70.60
    sdg               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdg1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    sdh1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00Regards,
    Nayagan
    Edited by: nayagan on Jan 27, 2010 12:23 PM
    Edited by: nayagan on Jan 27, 2010 2:04 PM

    Two points:
    1. I can not read what you posted because you did not read the FAQ (upper right) and put tags around the listing so it would retain its formatting.
    2. Even if I could read them I wouldn't as they are not necessarily relevant. What I would want to see is what query you are issuing that you think should be maxing out your disk subsystem and giving you the performance you expect. Single block reads read single blocks. Post the DML and the corresponding explain plan report generated using DBMS_XPLAN.DISPLAY or AUTOTRACE. Also the result of this statement in SQL*Plus.show arraysize
    Because this is precisely what is going to be brought back with each round trip between the client (SQL*Plus) and the server.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Oracle 10g performance issues

    Hi,
    We were using Oracle 9i in Solaris 5.8 and it was working fine with some minor performance issues. We formatted the Solaris server with new Solaris 5.10 and installed Oracle 10g.
    Now we are experiencing some performance issues in Oracle 10g. This issue is arising when using through Websphere 5.1.
    We have analyzed the schema, index is rebuild, SGA is 4.5 GB, PGA is 2.0 GB, Solaris RAM is 16 GB. Also we are having some Mat Views (possibly this may cause performance issues - not sure) due to refresh.
    Also I have changed some parameters in init.ora file like query_rewrite = STALE_TOLERATED, open_cursors = 1500 etc.
    Is is something due to driver from which the data is accessed. I guess it is not utilizing the indexes on the table.
    Can anyone please suggest, what could be the issue ?

    <p>There are a lot of changes to the optimizer in the upgrade from 9i to 10g, and you need to be aware of them. There are also a number of changes to the default stats collection mechanism, so after your upgrade your statistics (hence execution paths) could change dramatically.
    </p>
    <p>
    Greg Rahn has a useful entry on his blog about stats collection, and the blog al,so points to an Oracle white paper which will give you a lot of ideas about where the optimizer changes - which may help you spot your critical issues.
    </p>
    <p>Otherwise, follow triggb's advice about using Statspack to find the SQL that is the most expensive - it's reasonably likely to be this SQL that has changed execution plans in the upgrade.
    </p>
    Regards
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk

  • Oracle 10G performance problems

    Hello,
    we have a lot of performance problems with oracle 10G. Especially tables scan on DRAW or AEN1 have long response times. It seems that the CBO uses the wrong strategy. The latest merge fix is already installed. Any idea to solve the problem is welcome.
    Best regards
    Juergen Remmert

    We had similar performance issues in our environment, once we upgraded from 9.2.0.2 to 10.2.0.2.
    Oracle: 10.2.0.2
    SAP: 4.7x110
    OS: SOLARIS 9 64bit
    The above mentioned notes were very helpful. We had to install an oracle patch as well (found on marketplace)  --  6321245
    and make the following oracle parameters changes:
    pga_aggregate_target - 144MB (default = 25MB)
    *.event="10027 trace name context forever, level 1"
    *.event="10028 trace name context forever, level 1"
    *.event="10162 trace name context forever, level 1"
    *.event="10183 trace name context forever, level 1"
    *.event="10191 trace name context forever, level 1"
    *.event="10629 trace name context forever, level 32"
    *.event="38068 trace name context forever, level 100"
    *.event="38043 trace name context forever, level 1"
    *.optimizer_index_caching=50
    *.optimizer_index_cost_adj=20
    *.parallel_execution_message_size=16384
    *._b_tree_bitmap_plans=FALSE
    *._index_join_enabled=FALSE
    *._optim_peek_user_binds=FALSE
    *._optimizer_mjc_enabled=FALSE
    *._sort_elimination_cost_ratio=10
    Remove
    *.optimizer_features_enable='9.2.0'
    HTH

  • Sybase to Oracle 10g migration

    Hi, I have a task to perform Sybase to Oracle 10g conversion; can anybody recommend any documents or metalink docs to me?
    Thanks
    Gaurav

    If you have migration workbench related question you can post in Migration Workbench forum,
    Database and Application Migrations

  • BCP-style bulk insert from remote C++ ODBC Native client application

    I am trying to find documentation or sample code for performing bulk inserts into SQL Server 2012 from a remote client using the ODBC native client driver from Linux.  We currently perform INSERT statements on blocks of data, wrapping it in BEGIN/COMMIT,
    and achieving through approximately half of bcp reading from a delimited text file.  While there are many web pages talking about bulk inserts via the native driver, this page (http://technet.microsoft.com/en-us/library/ms130792.aspx) seems closest to
    what I'm after but doesn't go into any detail or give API calls.  The referenced header file is just a bunch of options and constants, so presumablyone gains access to bulk functions via the standard ODBC mechanism, the question is how.
    For clarity, I am NOT interested in:
    BULK INSERT: because it requires a server-side data file or a UNC path with appropriate permissions (doesn't work from Linux)
    INSERT ... SELECT
    * FROM OPENROWSET(BULK...): same problem as above
    IRowsetFastload: OLEDB, but I need ODBC on Linux.
    Basically, I want to emulate BCP.  I don't want to *run* BCP because it requires landing data to disk. 
    Thanks
    john
    John Lilley Chief Architect RedPoint Global Inc.

    Other than block inserts within BEGIN/COMMIT transaction blocks or running bcp, is there anything else that can be done on Linux?
    No other option from Linux that I am aware of.  The SQL Server Native Client ODBC driver also supports table-valued-parameters, which can be used to stream data but the Linux ODBC driver API doesn't have a way to do that either.  That said, I would
    still expect file-based BCP to significantly outperform inserts with large batches.  I've seen a rate of 100K/sec. with this technique, including the file create overhead but much depends on the particulars of your use case.
    Consider voting for this on Connect.  BCP is on the roadmap but no date yet: 
    https://connect.microsoft.com/SQLServer/SearchResults.aspx?SearchQuery=linux+odbc+bcp
    Also, I filed a Connect item for TVP support:
    https://connect.microsoft.com/SQLServer/feedback/details/874616/add-tvp-support-to-sql-server-odbc-driver-for-linux
    Dan Guzman, SQL Server MVP, http://www.dbdelta.com

  • Performance analysis for oracle database on weblogic 10.3 version

    Hi All,
    We are migrating our servers from windows to Linux.In the process we have weblogic 8.1 version being upgraded to weblogic 10.3.
    How could i analysis the performance of the Oracle 10g on weblogic 10.3.
    Do we have any predefined test scripts in place to perform the necessary anaylsis.
    Thanks in anticipation.
    Pavan

    We do not provide any test scripts. As you can be sure, each WLP deployment is unique to the customer environment and business problems that are being solved. Having generic test scripts would not reflect this.
    However, you might wish to read the following documentation which discusses database performance with regard to WLP.
    http://download.oracle.com/docs/cd/E13155_01/wlp/docs103/db/db_architecture.html#wp1069661
    Brad

  • Insert statement taking time on oracle 10g

    Hi,
    My procedure taking time in following statement while database upgrading from oracle 9i to oracle 10g.
    I m using oracle version 10.2.0.4.0.
    cust_item is matiralize view in procedure and it is refreshing in the procedure
    Index is dropping before inserting data into cust_item_tbl TABLE and after inserting data index is created.
    There are almost 6 lac records into MV which are going to insert into TABLE.
    In 9i below insert statement is taking 1 hr time to insert while in 10g it is taking 2.30 hrs.
    EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL QUERY';
    EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL DML';
    INSERT INTO /*+ APPEND PARALLEL */ cust_item_tbl  NOLOGGING
             (SELECT /*+ PARALLEL */
                     ctry_code, co_code, srce_loc_nbr, srce_loc_type_code,
                     cust_nbr, item_nbr, lu_eff_dt,
                     0, 0, 0, lu_end_dt,
                     bus_seg_code, 0, rt_nbr, 0, '', 0, '', SYSDATE, '', SYSDATE,
                     '', 0, ' ',
                                   case
                                 when cust_nbr in (select distinct cust_nbr from aml.log_t where CTRY_CODE = p_country_code and co_code = p_company_code)
                                 THEN
                                         case
                                            when trunc(sysdate) NOT BETWEEN trunc(lu_eff_dt) AND trunc(lu_end_dt)
                                            then NVL((select cases_per_pallet from cust_item c where c.ctry_code = a.ctry_code and c.co_code = a.co_code
                                                          and c.cust_nbr = a.cust_nbr and c.GTIN_CO_PREFX = a.GTIN_CO_PREFX and c.GTIN_ITEM_REF_NBR = a.GTIN_ITEM_REF_NBR
                                                          and c.GTIN_CK_DIGIT = a.GTIN_CK_DIGIT and trunc(sysdate) BETWEEN trunc(c.lu_eff_dt) AND trunc(c.lu_end_dt) and rownum = 1),
                                                          a.cases_per_pallet)
                                      else cases_per_pallet
                                  end
                          else cases_per_pallet
                     END cases_per_pallet,
                     cases_per_layer
                FROM cust_item a
               WHERE a.ctry_code = p_country_code ----varible passing by procedure
                 AND a.co_code = p_company_code   ----varible passing by procedure
                 AND a.ROWID =
                        (SELECT MAX (b.ROWID)
                           FROM cust_item b
                          WHERE b.ctry_code = a.ctry_code
                            AND b.co_code = a.co_code
                            AND b.ctry_code = p_country_code ----varible passing by procedure
                            AND b.co_code = p_company_code   ----varible passing by procedure
                            AND b.srce_loc_nbr = a.srce_loc_nbr
                            AND b.srce_loc_type_code = a.srce_loc_type_code
                            AND b.cust_nbr = a.cust_nbr
                            AND b.item_nbr = a.item_nbr
                            AND b.lu_eff_dt = a.lu_eff_dt));explain plan of oracle 10g
    Plan
    INSERT STATEMENT  CHOOSECost: 133,310  Bytes: 248  Cardinality: 1                      
         5 FILTER                 
              4 HASH GROUP BY  Cost: 133,310  Bytes: 248  Cardinality: 1            
                   3 HASH JOIN  Cost: 132,424  Bytes: 1,273,090,640  Cardinality: 5,133,430       
                        1 INDEX FAST FULL SCAN INDEX MFIPROCESS.INDX_TEMP_CUST_AUTH_PERF_MV Cost: 10,026  Bytes: 554,410,440  Cardinality: 5,133,430 
                        2 MAT_VIEW ACCESS FULL MAT_VIEW MFIPROCESS.TEMP_CUST_AUTH_PERF_MV Cost: 24,570  Bytes: 718,680,200  Cardinality: 5,133,430  can you please look into the issue?
    Thanks.

    According to the execution plan you posted parallelism is not taking place - no parallel operations listed
    Check the hint syntax. In particular, "PARALLEL" does not look right.
    Running queries in parallel can either help performance, hurt performance, or do nothing for performance. In your case a parallel index scan on MFIPROCESS.INDX_TEMP_CUST_AUTH_PERF_MV using the PARALLEL_INDEX hint and the PARALLEL hint specifying the table for MAT_VIEW MFIPROCESS.TEMP_CUST_AUTH_PERF_MV Cost might help, something like (untested)
    select /*+ PARALLEL_INDEX(INDX_TEMP_CST_AUTH_PERF_MV) PARALLEL(TEMP_CUST_AUTHPERF_MV) */Is query rewrite causing the MVs to be read? If so hinting the query will be tricky

  • Oracle 10g performance is slow

    Dear Exports
    how we can imporve the Oracle 10g performance........we are upgrading from Oracle 8 to Oracle 10g. Windows platform. and using Oracle developer 6 as front end .
    thanks in advance

    Do you have statistics gathered on the tables in the 8i database? Can you post the explain plan for the query in both databases?
    Since you know what SQL is having poor performance you can use TKPROF and SQL TRACE to see where your query is spending its time.
    Try the following:
    alter session set timed_statistics=true;
    alter session set max_dump_file_size=unlimited;
    alter session set tracefile_identifier='BAD_SQL';
    alter session set events '10046 trace name context forever, level 12';
    <insert sql with poor response time>
    disconnect
    Use the TKPROF utility on the file found in USER_DUMP_DEST that contains the string BAD_SQL.
    For information on how to interrupt the TKPROF output, see the following link.
    http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14211/sqltrace.htm

  • Complex query - improve performance with nested arrays, bulk insert....?

    Hello, I have an extremely complicated query, that has a structure similar to:
    Overall Query
    ---SubQueryA
    -------SubQueryB
    ---SubQueryB
    ---SubQueryC
    -------SubQueryA
    The subqueries themselves are slow, and having to run them multiple times is much too slow! Ideally, I would be able to run each subquery once, and then use the results. I cannot use standard oracle tables, and i would need to keep the result of the subqueries in memory.
    I was thinking I write a pl/sql script that did the subqueries at the beginning and stored the results in memory. Then in the overall query, I could loop through my results in memory, and join the results of the various subqueries to one another.
    some questions:
    -what is the best data structure to use? I've been looking around and there are nested arrays, and there's the bulk insert functionality, but I'm not sure what is the best to you
    -the advantage of the method I'm suggesting is that I only have to do each subquery once. But, when I start joining the results of the subquery to one another, will I take a performance hit? will Oracle not be able to optimize the joins?
    thanks in advance!
    Coop

    I cannot use standard oracle tablesWhat does this mean? If you have subqueries, i assume you have tables to drive them? You're in an Oracle forum, so i assume the tables are Oracle tables.
    If so, you can look into the WITH clause, it can 'cache' the query results for you and reuse them multiple times, also helpful in making large queries with many subqueries more readable.

  • Oracle 10g on HP-UX, Terrible Poor Performance!!

    Hi All,
    I setup an Oracle 10g on HP-UX 11iv1. Server is a HP 9000, 4 CPUs (750
    MHZ). It is connected to Disk System 2405 (Virtual Array 7110). Fiber
    Channels are connected at 2 GB speed.
    I installed a cluster 10g database. First I installed CRS and after
    that I installed oracle database. ( I want to test clustered database
    with one instance)
    I installed every thing line by line as oracle document wrote.
    All the things, kernel parameters, patches, are like oracle wrote in
    its document.
    I installed Golden quality package June 2004.
    I increased shmmax to 2.3 G . My SGA is 1.7 G And change some other
    parameters as Sandy Gruver wrote in Best Practices for Oracle on HPUX.
    I used oracle new storage system called ASM for this case.
    When I put the system under the load, I was monitoring the system
    carefully.
    I started gmp. When we sent some quarries to database (It is not heavy
    load, I tested it with a Linux system on proliant ML570 without any
    problem), suddenly DISK section in gpm changed to red (critical ) I
    read the warning. It said "Disk bottleneck probability = 100%". I
    changed the output of disk report to "Report IO by Disk"
    "DISK%" was 100% and "RAW IO RT" was about 1000 for two disks ( This
    two disks dedicated for ASM). In this situation CPU idle time was 1% or
    2% for all the CPUs but load average was about 1. Performance is not
    acceptable at all ( In comparison with Oracle that installed on Linux).
    Glance reported Disk was in Critical situation.
    I think the problem is IO or something about Disks
    I used HP Disk System 2405. Fibber channels on both server side and
    Disk Array side are configured at 2 Gb and topologies are
    PTTOPT_FABRIC.
    Is it ok that RAW IO RT about 1000 for each LUN?
    Why Disk% in glance/report IO BY Disk/ was 100%?
    I found an error in STM logs about I/O.It said:
    Entry type: I/O error
    Product: Fiber Channel Interface
    Logger: td
    It logged this error about 12 times during the test.Any comment?
    Regards,
    Hasan

    Sorry, I have not a solution for your problem, but similar things happen on our installation on Solaris 5.8 with Oracle 10:
    I have a banking business solution from Windows/SQL Server 2000 to Sun Solaris/ORACLE 10g migrated. In the test environment everything was working fine. On the production system we have very poor DB performance. About 100 times slower than SQL Server 2000!
    Environment at Customer Server Side:
    Hardware: SUN Fire 4 CPU's, OS: Solaris 5.8, DB Oracle 8 and 10
    Data Storage: Em2
    DB access thru OCCI [Environment:OBJECT, Connection Pool, Create Connection]
    Depending from older applications it's necessary to run ORACLE 8 as well on the same Server. Since we have running the new solution, which is using ORACLE 10, the listener for ORACLE 8 is frequently gone (or by someone killed?). The performance of the whole ORACLE 10 Environment is very poor. As a result of my analyse I figured out that the process to create a connection to the connection pool takes up to 14 seconds. Now I am wondering if it a problem to run different ORACLE versions on the same Server? The Customer has installed/created the new ORACLE 10 DB with the same user account (oracle) as the older version. To run the new solution we have to change the ORACLE environment settings manually. All hints/suggestions to solve this problem are welcome. Thanks in advance.
    Anton

Maybe you are looking for