Prallel query and Delete statements

Hi Gurus, need your help in understanding parallel execution
We are noticing that delete statements are executing very slowly when parallel query is forced. Is this expected?
All the literature that I read says that parallel query has no impact on DML statements. Yet, the query plan on the delete statement shows that it will be executed in parallel mode. This could mean that the scan portion is happening in parallel but the delete operation itself is happening in serial, correct?
I tested in various servers and multiple tables before posting my question here. They all seem to show consistent results. Delete statements are twice slower when parallel query is forced. The same happens when parallel degree is set in table definition.
For your information, we are running 10g on windows server with 15 million rows in table, 5 million rows being deleted with the statement. There is one index on the table and it doesn’t match the columns in query. Query plan shows full table scan. Table is not portioned.
Thanks for your help in advance

Parallel DML is supported by Oracle. Obviously when enabled, it can impact a DML statement.. (what literature have you read that said otherwise?)
The delete operation itself is done in parallel using rowid ranges (e.g. each PQ slave process does a distinct physical "piece" of the table).
Parallel DML should typically speed up the process. Why? Because I/O itself has latency. The process needs to wait (idle CPU time) for the I/O operation to complete before continuing.
So let's assume the process can only do a 100 deletes per second. The actual I/O channel is capable of a 1000 I/O's per second. But due to inherant latency, the "max delete speed limit" for a procces is a 100 I/O's per second. The full capacity of the I/O channel is thus not used (and cannot be used by a single process).
Parallel Query enables more processes to do I/O in order to utilise this "max speed limit".
Why would you see a degradation in performance? It could be due to overutilising the I/O channels (attempting to go faster than the speed limit so to say).
It could be due to some other contention in Oracle or even the o/s. You will need to investigate the wait state and events of the PQ processes to try and determine the probable cause.

Similar Messages

  • Searching update insert and delete statements

    Hi.
    Suppose, there is change request containing 10 or more programs.
    One of the program has statements, working with database tables,
    like update, insert or delete.
    Is there any transaction where we can select request number and find
    programs working with tables directly.

    Hello
    1. Goto table E071 with TRKORR = change request and OBJECT = {reps, repo, rept}
    2. In field OBJ_NAME will be all reports names in this request
    3. In abap-programm upload this reports into internal table
    4. Search for 'update' 'insert' and 'delete'
    P.s. it is only for reports

  • Script for handling triggers and delete statements

    Hello,
    currently I'm facing a problem which I don't know how to deal with.
    We need a script which deletes/disables two triggers first, then delete some data and afterwards create/enable the triggers again.
    I didn't find a proper hint how to cover this with dbmcli, probably we have to use a "higher" language..?!?!
    Is it possible at all to provide "dbmcli -i" with a file including sql statements like the example afterwards ?
    Is it possible to disable/enable triggers or do I have to delete and create them ?
    e.g.:
    disable/drop trigger trig_a
    disable/drop trigger trig_b
    delete from a where....
    delete from b where...
    enable/create trigger trig_a...
    enable/create trigger trig_b...
    used maxDB version is 7.5.0.38
    any hint appreciated....GERD.....

    Hi Gerd,
    please be aware that DBMCLI is a DBMServer client, not a SQL client (although it can tunnel some sql through the DBMServer).
    Better use SQLCLI for things like that.
    And. no, you cannot switch triggers on and off - just drop and recreate them.
    But you may specify the IGNORE TRIGGER keyword for the delete statements.
    That way you can leave the triggers just as they are.
    p.s.
    Any reason to stay on super old 7.5 ?
    regards,
    Lars

  • SQL query and Delete the data based on condition

    Hi All,
    I have one requirement like I need to fetch the data from the table, In that table one filed (XXXXX) domain type is STAMP.
    delete the data if the sy-datum ( length 8) is greater than field XXXXX  which has length 14.
    Please suggest me how to delete or fetch the data with the same length.
    I have used below code..but did not work..
    "Concatenate sy-datum '%'  into gv_var1.
    select *
       from DD03l
       into itab
    where XXXX like gv_var1."
    and tried this one as well
    1. DELETE itab WHERE XXXXX GT sy-datum.
    2. DELETE itab WHERE XXXXX GT gv_var1.

    Hi,
    When dates are in different formats you have to always convert them into one common format and then do the checks. Its better to convert the date in the variable into timestamp(using CONVERT DATE statement-look for abapdocu for its usage) and then compare it with the date on database.
    data: gv_var1  TYPE timestamp.
    convert date sy-datum into time stamp gv_var1.
    select *
    from DD03l
    into itab
    where XXXX like gv_var1.
    should work now.
    Hope this helps.
    Shwetha

  • Select query and Insert statement performance

    Hi all,
    Can anyone plz guide us on below problem I am facing ?
    1) One of the simple Insert statement runs very slow..What might be the reason? Its simple table without any LOBs ,LONG or so. Everything else in the DB works fine.
    2) one of the SELECT statement runs very slow. It selects all records (around 1000) from a table..How can i improve its performance?
    3)Which columns in the Master and its detail tables should be indexed to improve Query performance on them.
    Many Thanks
    Regards
    sandeep

    To get an answer to your questions you have to post some informations about your system:
    1. operating system
    2. RAM
    3. oracle version
    4. init.ora
    Thomas

  • How to query and revoke Statements Auditing (11g and higher)

    HI,
    When I choose the OS/XML Standard Auditing:
    1) Which views allow me to see what statement auditing have been created?
    For instance: audit all on scott.emp by access.
    2) How to revoke a statement auditing like: audit all on scott by access?
    Thanks and Regards.

    I don't understand... have you tried it?
    07:14:57 SQL> select * from user_obj_audit_opts;
    no rows selected
    Elapsed: 00:00:00.03
    07:14:58 SQL> audit all on junk by access;
    Audit succeeded.
    Elapsed: 00:00:00.03
    07:15:12 SQL> select * from user_obj_audit_opts;
    OBJECT_NAME                    OBJECT_TYPE             ALT       AUD       COM       DEL       GRA       IND       INS       LOC       REN       SEL       UPD       REF EXE       CRE       REA
    WRI       FBK
    JUNK                           TABLE                   A/A       A/A       A/A       A/A       A/A       A/A       A/A       A/A       A/A       A/A       A/A       -/- -/-       -/-       -/-
    -/-       A/A
    1 row selected.
    Elapsed: 00:00:00.12
    07:16:46 SQL> noaudit all on junk;
    Noaudit succeeded.
    Elapsed: 00:00:00.03
    07:16:56 SQL> select * from user_obj_audit_opts;
    no rows selected
    Elapsed: 00:00:00.02
    07:17:03 SQL>
    'ALL' is a shortcut for naming all of the relevant options: ALTER, SELECT, DELETE, etc.

  • Dynamic Query and Collect Statement.

    Hi Gurus....
    Please explain me how to write dynamic Query,,, Pl. give me with example.
    Also would like to know basics of Collect statement and it's use..
    Thanks
    Ritesh

    Hi Ritesh,
    COLLECT is used to create unique or compressed datsets. The key fields are the default key fields of the internal table itab . If all non-numeric fields are same in the internal table then it will add numeric fields and maintains a single entry
    If you use only COLLECT to fill an internal table, COLLECT makes sure that the internal table does not contain two entries with the same default key fields.
    Check this link to know about COLLECT statement
    http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/collect.htm
    Dynamic query can be built in SAP with the help of () values.
    DATA:
    V_TABNAME TYPE DDO2L-TABNAME,
    V_CONDTION TYPE STRING.
    V_TABNAME = 'MARA'.
    V_CONDTION = 'MATNR LIKE 'S*'.
    SELECT MATNR
      FROM <b>(V_TABNAME)</b>
      INTO TABLE ITAB
    WHERE <b>(V_CONDTION)</b>.
    Thanks,
    Vinay

  • Help with MYSQLi Query and WHILE statement

    Hi,
    Not sure what is wrong here but the same record is printed in the while loop 11 times (the amount of records in the table).
    <?php 
    //Main Connection & Query
    //Database Connection & Error
    $con_host = 'X';
    $con_username = 'X';
    $con_password = 'X';
    $con_database = 'X';
    $con = mysqli_connect($con_host, $con_username, $con_password, $con_database);
    ?>
    <?php
    //Query
    $sql = "SELECT * FROM equipment ORDER BY name ASC";
    $query = mysqli_query($con, $sql);
    $row = mysqli_fetch_assoc($query);
    $row_count = mysqli_num_rows($query);
    //Create Variables
    $name = $row['name'];
    $size = $row['size'];
    $quantity = $row['quantity'];
    $protection = $row['protection'];
    $location = $row['location'];
    $sublocation = $row['sublocation'];
    $bc = $row['BC'];
    $id = $row['id'];
    ?>
    <!doctype html>
    <html>
    <link href="stylesheets/main_stylesheet.css" rel="stylesheet" type="text/css">
    <link href='http://fonts.googleapis.com/css?family=Slabo+27px' rel='stylesheet' type='text/css'>
    <!-- Favicon -->
    <link rel="shortcut icon" type="image/png" href="images/icon.png" />
    <style type="text/css">
    </style>
    <head>
    <meta charset="utf-8">
    <title>Print Equipment List</title>
    <link href="stylesheets/print_stylesheet.css" rel="stylesheet" type="text/css">
    <script src="sorttable.js"></script>
    <!--<body onload="window.print()">-->
    </head>
    <body>
    <div class="print_button no-print" onClick="window.print()">Print</div>
    <div class="print_text no-print">Select the sorting of the list by clicking on the table categories and click the print button below</div>
    <div class="print_a4page">
      <div class="print_header">
         <div class="print_header_logo"><img src="images/logo.png" width="306" height="43"></div>
          <div class="print_header_text" id="header_text">Drama Database</div>
          <div class="print_header_info">List printed: <script type="text/javascript">
      var currentTime = new Date();
      var month = currentTime.getMonth() + 1;
      var day = currentTime.getDate();
      var year = currentTime.getFullYear();
      document.write(day + "/" + month + "/" + year);</script>
      <br>
    Total records:
    <?php echo $row_count ?></div>
      </div>
        <div class="print_header_divider">Equipment List</div>
        <div class="print_body">
          <div>
            <form name="users" method="post">
              <div class="table_print">
              <table width="100%" border="0" cellpadding="5" class="sortable">
                <tr class="table_header_print">
                  <th width="15%" scope="col">Name</th>
                  <th width="12%" scope="col">Size</th>
                  <th width="9%" scope="col">Quantity</th>
                  <th width="12%" scope="col">Protection</th>
                  <th width="17%" scope="col">Location</th>
                  <th width="12%" scope="col">Sublocation</th>
                  <th width="11%" scope="col">Barcode</th>
                  <th width="12%" scope="col">Internal ID</th>
                </tr>
                <?php do { ?>
                <tr class="table_body">
                  <td><?php echo $name ?></td>
                  <td><?php echo $size ?></td>
                  <td><?php echo $quantity ?></td>
                  <td><?php echo $protection ?></td>
                  <td><?php echo $location ?></td>
                  <td><?php echo $sublocation ?></td>
                  <td><?php echo $bc ?></td>
                  <td><?php echo $id ?></td>
                </tr>
                <?php } while ($row = mysqli_fetch_assoc($query));?>
              </table>
            </form>
          </div>
        </div>
    </div>
    </body>
    </html>

    Still getting the same issue.
    As I see it, the way you have suggested is just rearanging things right?
    here is a screenshot of the outcome:
    And here is the improved code:
    <?php 
    //Main Connection & Query
    //Database Connection & Error
    $con_host = 'X';
    $con_username = 'X';
    $con_password = 'X';
    $con_database = 'X';
    $con = new mysqli($con_host, $con_username, $con_password, $con_database);
    ?>
    <?php
    //Query
    $sql = "SELECT * FROM equipment ORDER BY name ASC";
    $result = $con->query($sql);
    $row = $result->fetch_assoc();
    $row_count = $result->num_rows;
    //Create Variables
    $name = $row['name'];
    $size = $row['size'];
    $quantity = $row['quantity'];
    $protection = $row['protection'];
    $location = $row['location'];
    $sublocation = $row['sublocation'];
    $bc = $row['BC'];
    $id = $row['id'];
    ?>
    <!doctype html>
    <html>
    <link href="stylesheets/main_stylesheet.css" rel="stylesheet" type="text/css">
    <link href='http://fonts.googleapis.com/css?family=Slabo+27px' rel='stylesheet' type='text/css'>
    <!-- Favicon -->
    <link rel="shortcut icon" type="image/png" href="images/icon.png" />
    <style type="text/css">
    </style>
    <head>
    <meta charset="utf-8">
    <title>Print Equipment List</title>
    <link href="stylesheets/print_stylesheet.css" rel="stylesheet" type="text/css">
    <script src="sorttable.js"></script>
    <!--<body onload="window.print()">-->
    </head>
    <body>
    <div class="print_button no-print" onClick="window.print()">Print</div>
    <div class="print_text no-print">Select the sorting of the list by clicking on the table categories and click the print button below</div>
    <div class="print_a4page">
      <div class="print_header">
         <div class="print_header_logo"><img src="images/logo.png" width="306" height="43"></div>
          <div class="print_header_text" id="header_text">Drama Database</div>
          <div class="print_header_info">List printed: <script type="text/javascript">
      var currentTime = new Date();
      var month = currentTime.getMonth() + 1;
      var day = currentTime.getDate();
      var year = currentTime.getFullYear();
      document.write(day + "/" + month + "/" + year);</script>
      <br>
    Total records:
    <?php echo $row_count ?></div>
      </div>
        <div class="print_header_divider">Equipment List</div>
        <div class="print_body">
          <div>
            <form name="users" method="post">
              <div class="table_print">
              <table width="100%" border="0" cellpadding="5" class="sortable">
                <tr class="table_header_print">
                  <th width="15%" scope="col">Name</th>
                  <th width="12%" scope="col">Size</th>
                  <th width="9%" scope="col">Quantity</th>
                  <th width="12%" scope="col">Protection</th>
                  <th width="17%" scope="col">Location</th>
                  <th width="12%" scope="col">Sublocation</th>
                  <th width="11%" scope="col">Barcode</th>
                  <th width="12%" scope="col">Internal ID</th>
                </tr>
                <?php while ($row = $result->fetch_assoc()) { ?>
                <tr class="table_body">
                  <td><?php echo $name ?></td>
                  <td><?php echo $size ?></td>
                  <td><?php echo $quantity ?></td>
                  <td><?php echo $protection ?></td>
                  <td><?php echo $location ?></td>
                  <td><?php echo $sublocation ?></td>
                  <td><?php echo $bc ?></td>
                  <td><?php echo $id ?></td>
                </tr>
                <?php } ?>
              </table>
            </form>
          </div>
        </div>
    </div>
    </body>
    </html>

  • Dynamic query for delete statement

    Hi friends,
    I have a table hierarchy where suppose i have tables with following hierarchy
    Level1
    level2 (child of level1)
    level3 (child of level2)
    level4 (child of level3)
    Now i want to delete data from lowest level table depending on level one table value which is provided to me.
    I have a requirement where i want to create this delete query dynamically.
    Any help in this concern...
    Thanks,
    Sachin

    Yon can use on delete cascade as satyaki suggested like
    SQL> select * from level1;
            ID DESCRIPTION
             1 L1_1
             2 L1_2
             4 L1_3
             5 L1_4
    4 rows selected.
    SQL> select * from level2;
            ID DESCRIPTION                                                                                           L1_FK
             1 L2_1                                                                                                  1
             2 L2_2                                                                                                  1
             4 L2_3                                                                                                  2
             5 L2_4                                                                                                  2
    4 rows selected.
    SQL> delete from level1 where id =1;
    1 row deleted.
    SQL> select * from level1;
            ID DESCRIPTION
             2 L1_2
             4 L1_3
             5 L1_4
    3 rows selected.
    SQL> select * from level2;
            ID DESCRIPTION                                                                                           L1_FK
             4 L2_3                                                                                                  2
             5 L2_4                                                                                                  2
    2 rows selected.
    SQL>

  • Updating and deleting records in access DB

    i'm trying to make multiple updates and deletes in a access DB and it doesn't work.
    my program executes lot's of updates and delete statements when saving, but I only commit in the end when I know all the statements finished ok.
    I can't make it a batch update since I need to retrieve the auto-number that access issues me on some of my tables.
    I know it's kinda fuzzy, but my program is SO big already, and I can't really put the code in here - it wouldn't do much good.
    what I will do is write what my log shows (i issue a log output whenever there's a executeQuery/Update and before commit/rollback
    DBG : 29/04/03 : UPDATE CASES_T SET CASE_office_case_id = 1 ,CASE_year = 2 ,CASE_total_debt = 10009 ,CASE_is_limited = true ,CASE_monthly_payment = 400 ,CASE_hotzlap_case_id = ' - - - ' ,CASE_status = 26 WHERE CASE_tech_id = 5
    DBG : 29/04/03 : SELECT count(*) from CASES_OWEES_T where CAOW_Tech_Id = 23
    DBG : 29/04/03 : UPDATE CASES_OWEES_T SET CAOW_case_tech_id = 5 ,CAOW_id_number = '046259990' ,CAOW_first_name = '���' ,CAOW_last_name = '������' ,CAOW_work_place = 'jjjjjjjjjjjjj' ,CAOW_address = '1jjjjjjjjjjjj' ,CAOW_telephone = '09-8099999' ,CAOW_pelephone = '000-000000' ,CAOW_hotzlap_case_id = ' - - - ' ,CAOW_is_valid_address = false WHERE CAOW_TECH_ID = 23
    DBG : 29/04/03 : SELECT count(*) from CASES_OWEES_T where CAOW_Tech_Id = 24
    DBG : 29/04/03 : UPDATE CASES_OWEES_T SET CAOW_case_tech_id = 5 ,CAOW_id_number = ' ' ,CAOW_first_name = '�����' ,CAOW_last_name = '���' ,CAOW_work_place = '����' ,CAOW_address = '��?' ,CAOW_telephone = ' - ' ,CAOW_pelephone = ' - ' ,CAOW_hotzlap_case_id = ' - - - ' ,CAOW_is_valid_address = true WHERE CAOW_TECH_ID = 24
    DBG : 29/04/03 : SELECT count(*) from CASES_INNER_CASES_T where CICA_Tech_Id = 10
    DBG : 29/04/03 : UPDATE CASES_INNER_CASES_T SET CICA_case_tech_id = 5 ,CICA_debt = 5000897 ,CICA_winner_name = '���' ,CICA_lawyer_tech_id = '6' ,CICA_hotzlap_case_id= '02-22122-22-2' WHERE CICA_tech_id= 10
    DBG : 29/04/03 : SELECT count(*) from CASES_INNER_CASES_T where CICA_Tech_Id = 11
    DBG : 29/04/03 : UPDATE CASES_INNER_CASES_T SET CICA_case_tech_id = 5 ,CICA_debt = 20008 ,CICA_winner_name = '������' ,CICA_lawyer_tech_id = '2' ,CICA_hotzlap_case_id= '02-22222-22-2' WHERE CICA_tech_id= 11
    DBG : 29/04/03 : SELECT count(*) from CASES_INNER_CASES_T where CICA_Tech_Id = 14
    DBG : 29/04/03 : UPDATE CASES_INNER_CASES_T SET CICA_case_tech_id = 5 ,CICA_debt = 129 ,CICA_winner_name = '' ,CICA_lawyer_tech_id = '4' ,CICA_hotzlap_case_id= '02-22222-22-2' WHERE CICA_tech_id= 14
    DBG : 29/04/03 : SELECT count(*) from CASES_CUSTOMER_CARDS_T where CUCA_Tech_Id = 23
    DBG : 29/04/03 : UPDATE CASES_CUSTOMER_CARDS_T SET CUCA_case_tech_id = 5 , CUCA_sum = 324 , CUCA_fee_plus_maam = -38.0 , CUCA_for_division = 285.0 , CUCA_voucher = '3222 ' , CUCA_date = '2003-04-24' , CUCA_in_or_out = true WHERE CUCA_tech_id = 23
    DBG : 29/04/03 : SELECT count(*) from CASES_CUSTOMER_CARDS_T where CUCA_Tech_Id = 22
    DBG : 29/04/03 : UPDATE CASES_CUSTOMER_CARDS_T SET CUCA_case_tech_id = 5 , CUCA_sum = 324 , CUCA_fee_plus_maam = -38.0 , CUCA_for_division = 285.0 , CUCA_voucher = '2222 ' , CUCA_date = '2003-04-23' , CUCA_in_or_out = true WHERE CUCA_tech_id = 22
    DBG : 29/04/03 : SELECT count(*) from CASES_CUSTOMER_CARDS_T where CUCA_Tech_Id = 21
    DBG : 29/04/03 : UPDATE CASES_CUSTOMER_CARDS_T SET CUCA_case_tech_id = 5 , CUCA_sum = 100 , CUCA_fee_plus_maam = -11.0 , CUCA_for_division = 0.0 , CUCA_voucher = '2222 ' , CUCA_date = '2003-04-23' , CUCA_in_or_out = true WHERE CUCA_tech_id = 21
    DBG : 29/04/03 : SELECT count(*) from CASES_CUSTOMER_CARDS_T where CUCA_Tech_Id = 20
    DBG : 29/04/03 : UPDATE CASES_CUSTOMER_CARDS_T SET CUCA_case_tech_id = 5 , CUCA_sum = 1000 , CUCA_fee_plus_maam = -118.0 , CUCA_for_division = 882.0 , CUCA_voucher = '1111 ' , CUCA_date = '2003-04-23' , CUCA_in_or_out = true WHERE CUCA_tech_id = 20
    DBG : 29/04/03 : SELECT count(*) from CASES_INVESTIGATIONS_T where CAIN_Tech_Id = 16
    DBG : 29/04/03 : UPDATE CASES_INVESTIGATIONS_T SET CAIN_case_tech_id = 5 ,CAIN_text = '' ,CAIN_was_declared_limited = false ,CAIN_date = '2003-03-01' ,CAIN_rulling_effective_date = '2003-02-01' ,CAIN_payment_amount = 400 WHERE CAIN_TECH_ID = 16
    DBG : 29/04/03 : SELECT count(*) from CASES_INVESTIGATIONS_T where CAIN_Tech_Id = 12
    DBG : 29/04/03 : UPDATE CASES_INVESTIGATIONS_T SET CAIN_case_tech_id = 5 ,CAIN_text = '' ,CAIN_was_declared_limited = true ,CAIN_date = '1970-01-01' ,CAIN_rulling_effective_date = '1905-03-06' ,CAIN_payment_amount = 90 WHERE CAIN_TECH_ID = 12
    DBG : 29/04/03 : SELECT count(*) from CASES_INVESTIGATIONS_T where CAIN_Tech_Id = 10
    DBG : 29/04/03 : UPDATE CASES_INVESTIGATIONS_T SET CAIN_case_tech_id = 5 ,CAIN_text = '' ,CAIN_was_declared_limited = false ,CAIN_date = '1970-01-01' ,CAIN_rulling_effective_date = '1990-01-30' ,CAIN_payment_amount = 89 WHERE CAIN_TECH_ID = 10
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 9
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 9
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 14
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 14
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 13
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 13
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 11
    DBG : 29/04/03 : DELETE FROM CASES_INVESTIGATIONS_T where CAIN_tech_id = 11
    DBG : 29/04/03 : SELECT count(*) from CASES_PAYMENTS_T where CAPY_Tech_Id = 71
    DBG : 29/04/03 : UPDATE CASES_PAYMENTS_T SET CAPY_case_tech_id = 5 ,CAPY_sum = 400 ,CAPY_exception_text = '' ,CAPY_is_exception = true ,CAPY_voucher = '' ,CAPY_date = '2003-04-01' ,CAPY_is_paid_in_hotzlap = false WHERE CAPY_TECH_ID = 71
    DBG : 29/04/03 : SELECT count(*) from CASES_PAYMENTS_T where CAPY_Tech_Id = 70
    DBG : 29/04/03 : UPDATE CASES_PAYMENTS_T SET CAPY_case_tech_id = 5 ,CAPY_sum = 400 ,CAPY_exception_text = '' ,CAPY_is_exception = true ,CAPY_voucher = '' ,CAPY_date = '2003-03-01' ,CAPY_is_paid_in_hotzlap = false WHERE CAPY_TECH_ID = 70
    DBG : 29/04/03 : SELECT count(*) from CASES_PAYMENTS_T where CAPY_Tech_Id = 69
    DBG : 29/04/03 : UPDATE CASES_PAYMENTS_T SET CAPY_case_tech_id = 5 ,CAPY_sum = 400 ,CAPY_exception_text = '' ,CAPY_is_exception = true ,CAPY_voucher = '' ,CAPY_date = '2003-03-01' ,CAPY_is_paid_in_hotzlap = false WHERE CAPY_TECH_ID = 69
    DEV : 29/04/03 : commit

    sure - I don't get any exception. the data just
    doesn't show in the DB. (no updating/deletion of
    records)
    as I wrote before - when the the programm commits the
    changes and does the next select command it seems as
    if the data was changed/deleted but if I check the DB
    with access or if I restart the prgoram then I see
    that the data didn't change.
    Access/jdbc-odbc has a problem where modifications are not 'commited' when the statement completes. Instead one must do one of the following:
    1. Explicit commit.
    2. Simple select after statement.
    3. Close the connection.
    Presumably you are doing 1.
    Since other than this it does work, it suggests one of the following.
    1. Something is wrong with your environment. For instance you are looking at the wrong database. Or not refreshing. Or something else like that.
    2. You are using something besides a simple connection - like opening it with 'scroll insensitive'.
    3. The complexity is causing it to lose an error message. This can be tested by doing each statement individually and verify that none produce an error.
    4. Maybe you found a bug. You can turn on ODBC tracing via the applet panel and see if digging through all of the detail provides any clues (you can also do this with 3 above.)

  • Trace all selects, updates, and deletes

    I have a compiled application that is making calls to an Oracle database (8.1.7). I don't have access to the source code for the program, so I'd like to trace all SELECT, UDPATE, and DELETE statements that it makes... something in the application is crashing because of bad data and I'd like to figure out what it is.
    Is there something I can add to the init.ora file to turn on tracing for all sessions? Thanks!
    --Frank

    In the init<SID>.ora file, set SQL_TRACE to TRUE, TIMED_STATISTICS to FALSE, MAX_DUMP_FILE_SIZE to 500 and USER_DUMP_DEST to the directory where you want to store the trace files.
    You can also proceed like this:
    create or replace trigger trg$trace
    after logon on database
    begin
    DBMS_SESSION.SET_SQL_TRACE (TRUE);
    end trg$trace;
    I have a compiled application that is making calls to an Oracle database (8.1.7). I don't have access to the source code for the program, so I'd like to trace all SELECT, UDPATE, and DELETE statements that it makes... something in the application is crashing because of bad data and I'd like to figure out what it is.
    Is there something I can add to the init.ora file to turn on tracing for all sessions? Thanks!
    --Frank                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

  • Access Code - DELETE Statement with DISTINCTROW and T-SQL

    All,
    I'm trying to rewrite Access Code to T-SQL Code. I understand how DISTINCTROW works in a SELECT statement but I'm not sure of the same in a DELETE statement.
    Any ideas?
    DELETE DISTINCTROW Order_detail.*
    FROM Order_Master
     INNER JOIN Order_detail
    ON (Order_Master.OrderID = Order_detail.OrderID)
    AND (Order_Master.OrderPartID = Order_detail.OrderPartID)
    Thanks,
    MS

    Could we use this syntax to delete records of two tables in same query ?
    DELETE DISTINCTROW TableA.*, TableB.* FROM
    TableA INNER JOIN TableB ON TableA.Name = TableB.Name
    No. You can delete only one table at a time.
    If you are using SQL Server 2012, you can try Merge:
    create table a (id int, name varchar(10))
    insert into a values (1,'aName'), (2,'ABCName'), (3,'BBBName')
    create table b(id int, name varchar(10))
    insert into b values (1,'bName'), (2,'ABCName'), (3,'BBBName')
    declare @t table ( name varchar(10))
    Merge a as tgt
    using b as src On tgt.name =src.name
    When matched then
    Delete
    Output deleted.name into @t;
    delete from b Where name in (select name from @t)
    Select * from a
    select * from b
    drop table a,b

  • Adding update and delete buttons to a  Report from SQL Query

    There is an option when creating a QBE to add update and delete
    links which i find quite useful, but this option doesn't seem to
    be possible on a Report from SQL Query. Do i need to do
    something special to add them? is the option located in a
    different place?

    Hi,
    You can only add Update ,Delete in QBE Reports,
    there is no option in Portal which can be used to
    have these buttons in the Reports from Query Wizard or
    Report from SQL Query.
    Thanks
    Vineet

  • Converting a delete statement using VPD policies and context

    Hello,
    I'm trying to convert a delete statement in a update statement using VPD policies and context.
    +/* Supose the user 'user1' already exists. This is an application user */+
    conn user1/pwd
    create table user1.test_a (
    id                number(4),
    description       varchar2(100),
    deleted           number(1)
    +);+
    alter table user1.test_a add constraint test_a_pk primary key (id);
    insert into user1.test_a (1, 'abc', 0);
    insert into user1.test_a (2, 'def', 0);
    commit;
    I'd like to convert each physical deletion into a logical deletion: statements like "delete from user1.test_a where id = 1" must be converted into "update user1.test_a set deleted = 1 where id = 1".
    I've found the following way: I will create a policy to avoid physical deletion. Additionally, the policy function should update the deletion flag too.
    conn user1/pwd
    +/* Create context package */+
    create or replace package user1.pkg_security_context is
    procedure p_set_ctx(
    i_test_a_id      in   user1.test_a.id   %type
    +);+
    end;
    +/+
    create or replace package body user1.pkg_security_context is
    procedure p_set_ctx (
    i_test_a_id      in   user1.test_a.id   %type
    +) is+
    begin
    dbms_session.set_context( 'user1_ctx', 'test_a_id', i_test_a_id );
    end;
    end;
    +/+
    show errors
    +/* Create trigger to set the context before deletion */+
    create or replace trigger user1.test_a_bef_trg
    before delete on user1.test_a
    for each row
    declare
    pragma autonomous_transaction;
    begin
    -- only commits the preceding update, not the delete that fired the trigger.
    commit;
    user1.pkg_security_context.p_set_ctx( :old.id );
    end;
    +/+
    show errors
    create context user1_ctx using user1.pkg_security_context;
    +/* Policy function */+
    create or replace function user1.f_policy_chk_dels (
    object_schema in   varchar2,
    object_name   in   varchar2
    +) return varchar2+
    is
    out_string                 varchar2(400)   default '1=2 ';
    +/*+
    * out_string is the return value.
    *  - 'WHERE 1=2' means 'nothing to access'
    begin
    if ( loc_logged_usr_authorized > 0 ) then
    +/*+
    * Set the flag deleted to 1
    update user1.test_a set deleted = 1 where id = sys_context( 'user1_ctx', 'test_a_id' );
    out_string := out_string || 'or 1=1 ';
    end if;
    return out_string;
    end;
    +/+
    show errors
    +/*+
    * Create policy
    begin
    dbms_rls.add_policy(
    object_schema   => 'user1'                   ,
    object_name     => 'test_a'                  ,
    policy_name     => 'policy_chk_dels'         ,
    function_schema => 'user1'                   , -- function schema
    policy_function => 'f_policy_chk_dels'       , -- policy function
    statement_types => 'DELETE'
    +);+
    end;
    +/+
    When I try to delete a record of the table test_a:
    conn user1/pwd
    SQL> delete from ilogdia.oplsimulaciones sim       where sim.id = 9999;
    +0 rows deleted+
    No rows has been deleted, but the update stmt does not work. That means, the "deleted" flag has not been updated.
    Any ideas?
    Thank you in advance.
    Marco A. Serrano
    Edited by: albrotar on Oct 15, 2012 8:42 AM
    Edited by: albrotar on Oct 15, 2012 8:42 AM
    Edited by: albrotar on Oct 15, 2012 8:43 AM

    The policy function is applied once per statement execution. The policy function executes first and the UPDATE statement, presumably, updates no rows because the context is not yet populated. The row-level populates the context (I'm assuming that your session can even see context values populated by an autonomous transaction-- I would guess it could but I'd have to test that) after the UPDATE statement is already complete. The COMMIT in the row-level trigger is also pointless-- it only applies to changes made by the current autonomous transaction, of which there are none-- it cannot apply to changes made in other autonomous transactions. Declaring the row-level trigger to use autonomous transactions doesn't seem to accomplish anything other than to open the question of whether the values set in the context by the autonomous transaction are visible in the caller's transaction.
    Even if this, somehow, did work, using autonomous transactions would be a very bad idea since Oracle is free to roll-back a partially executed statement (and the work done by its triggers) and re-execute it. Oracle does that with some regularity to maintain write consistency.
    Justin

  • Find technical name of query if only internal is given (and delete it)

    Hello,
    a query has a readable name like "Invoice for north pole customers", a technical name like "Z_MM_CUST_NPOLE" and an generated internal name like "4BUI9VVDT8A057L8G3BQ4IN4G".
    When I search which queries belong to an old multiprovider, I only get the internal query names like "4BUI9VVDT8A057L8G3BQ4IN4G". I cannot search with this internal name in the BEx Query Designer nor can I search there using the InfoArea folder (I can only find one query instead of two queries).
    How do I find the technical name like "Z_MM_CUST_NPOLE"?
    Apart from that, I cannot delete the query in the BEx Query Designer ("Delete" is inacitve (gray)).
    The query seems corrupt. Can I delete a query in the SAP GUI (rsa1 or something like this)?
    Best regards
    Thomas

    Hi Thomas,
    You can delete the Query in BIW GUI by using T Code RSZDELETE.
    After that u get a screen where u enter the
    Type :- REP
    Object Version :-A
    Technical Name as :-"The Tech name of the Query"
    Leave the other Rows Blank.
    Rgds
    SVU123
    Edited by: svu123 on Apr 3, 2009 1:07 PM

Maybe you are looking for

  • Service desk message in CRM_DNO_MONITOR

    Hello all, We are experiencing some issues while trying to save/confirm SAP message in CRM_DNO_MONITOR. The issue started I tried to attach a file weeks ago with the message ..it gave me short tump with the error message UC_OBJECTS_NOT_CONVERTIBLE. 

  • Running iTunes from external hard drive, new computer, where to start?

    I've seen several threads relating to this, but I'm a bit confused. For some time we have been running iTunes from an external hard drive with no issues. We now have a new laptop with windows 8, and I'm not sure where to start to set up iTunes (we re

  • Aperture email not working

    I tried to send a photo via Apple mail and the export spinning wheel lit for 2 seconds and stopped, the photo did not create an email. I have my setting to Mail. I cannot remember if I exported a photo since the last recent update. I have never had t

  • Why does 1 mail database failover

    We have 2 Exchange 2013 servers in a DAG, each server hosts 3 databases. 5 of the 6 databases have copies on both servers, the 6th is a test one which we do not want to replicate. One of the databases keeps failing over to the other server, it lists

  • Mobile apps which interacts Oracle Database Server

    Dear Friends, I want to develop mobile application which will interact with my database server(Which is on my Desktop). What are the things I have to study? Can I use Netbeans IDE or JDevloper with ADF for this. Which is the best? Please give me rela