DML operations

Hi all

I have a doubt in the DML operations.

What: The two statements are true about a transaction? (Choose two)

(a) If a data manipulation statement fails in the middle of a transaction, this single statement is canceled
(b) If a data manipulation statement fails in the middle of a transaction, the entire transaction is rolled back
(c) a transaction is committed when a user leaves the session normally without issuing a command COMMIT explicit
(d) a transaction is rolled back to a user leaves the session normally without issuing a command COMMIT explicit

Please explain.

927851 wrote:
Thanks knani,.

one more doubt,

(1) why customer issue a statement commit during the second got the failed State. Is - this failure to oracle?

(2) if we faced means question in the second transaction, the statement commit Oracle problem. When we give the first statement rollback statement will be rollback or not?

Please specify. If you think that my question is false, please me advice.

Read what I said again

"+ Now * _if_ * client issue a COMMIT, instruction it is preserved, leading to inconsistent data in the context of the operation." And if the client issues a ROLLBACK, statement we're taking the database to the State initial rollbacked. + "

The COMMIT or ROLLBACK is decided by the customer. Oracle has nothing to do with it. Oracle does not decide how and when a transaction is finished, his client, who makes that decision.

Tags: Database

Similar Questions

  • DML operations in arrays of relationship of m: n

    Hi all

    I use jdevelopper 11.1.2.4.


    I'm m: n between two tables A and B represented in an array of C. something like:

    Table A:

    • A_id
    • A_data

    Table B:

    • B_id
    • B_data

    Table c:

    • A_A_id
    • B_B_id

    My use case is: I want to show and allow the DML operations for the table rows B associated with a specific id of table A.

    to add a table A children, I have to check if the reference is already exists in the table B if so I only create the conjunction a line in table C. If this isn't the case, I should create a row in table B first.

    for this I use 3 objects in the view: (VO1) on (table A) and (VO2) (updateable table B and table C as reference). and VO3 (on table C).

    so I use a relationship master / detail between this your.   A_id (VO1) - A_A_id (VO2)-. A_id (VO1) - A_A_id (VO3)

    the result is:

    VO1

    |_VO2

    | _VO3

    and a function to add a child:

    public String addChild (reference String) {}

    Boolean exists = checkIfExist (reference);

    If (! exists) {}

    DCIteratorBinding iter = (DCIteratorBinding) UtilityBean.getBindings () .get ("VO2Iterator");

    Line = iter.getRowSetIterator () .createRow ();

    row.setAttribute ("B_id", B_B_id);

    iterBien.getRowSetIterator () .insertRow (row);

    }

    / * Iter = (DCIteratorBinding) UtilityBean.getBindings () .get DCIteratorBinding ("VO3Iterator");

    Line = iterEvtBien.getRowSetIterator () .createRow ();

    row.setAttribute ("A_A_id" ,A_id );

    row.setAttribute ("B_B_id", B_B_id);

    .getRowSetIterator () .insertRow (row) ITER;

    DCIteratorBinding iterBien = (DCIteratorBinding) UtilityBean.getBindings () .get ("TitresReponse1Iterator");

    iterBien.getViewObject () .executeQuery ();

    */

    Returns a null value.

    }

    But it does not work if I do not call the validation after the set of operations.

    Thank you to.

    Khalil

    Hi all

    problem solved I used this approach:

    Andrejus Baranovskis Blog: Insert-to-many relationship ADF BC and ADF Faces UI

    Khalil,

  • Why I don't have the error: ORA-14551: cannot perform a DML operation inside a query

    Hello

    create table table_1 (phone number)

    create or replace function function_a return number
      is
        l_rv number;
      begin
        l_rv := dbms_random.value();
        insert into table_1 values(l_rv);
        return l_rv;
      end;
    
    

    Select double function_a

    Now, I get the error:

    ORA-14551: cannot perform a DML operation inside a query

    ORA-06512: at "FUNCTION_A", line 6

    create the table table_2 (phone number)

    insert into table_2 select function_a from dual
    
    

    Now, I make the same mistake. It is to insert records into table_2

    Can someone please clarify this?

    Database Oracle 12 c Enterprise Edition Release 12.1.0.1.0 - 64 bit Production

    Post edited by: O - O added: (select double function_a)

    O - O wrote:

    To be called from instructions SQL, stored function must obey "purity" following rules, which are intended to control the side effects:

    • rule1) When it is called from a SELECT statement or a parallelized INSERT , UPDATE , or DELETE statement, the function cannot change database tables.
    • rule2) When it is called from a INSERT , UPDATE , or DELETE statement, the function cannot query or modify database tables modified by that statement.

    Can you please explain this? I think that these statements are contradicted with

    insert into select double function_a table_2

    Now, I make the same mistake. It is to insert records into table_2

    When your function is called by a select statement, an error is triggered because of rule1).

    When your function is called in an insert statement, no error is raised. The insert does not work in parallel (this is an insert row after all). So rule1) is also not infringed. The insert is on the table2, change table1. Because it does not modify the same table rule2) is not violated. So no reason to trigger an error.

  • call a function inside a function to insert into a table and receiver error - ORA-14551: cannot perform a DML operation within a query.

    Hi all

    your help is greatly appreciated...

    Calling B.fucntion inside an A.fonctions to insert data into a table.


    Here when you call the B.fucntion to insert data in the table... receiver AM a mistake

    Omitted in B - SQL Error: ORA-14551: cannot perform a DML operation inside a query...


    Can someone please help me to clarify this...


    The FUNCTION A(varUPD_TYPE IN VARCHAR2) RETURN VARCHAR2 IS
    varRETURN_VALUE VARCHAR2 (25): = NULL;

    numALLOWED_COUNT PROD. PROCESS_COUNTER. TYPE % ALLOWED_COUNT;
    numLAST_COUNT_ADDED PROD. PROCESS_COUNTER. TYPE % LAST_COUNT_ADDED;
    dtCHANGE_DATE DATE: = NULL;
    varSTMT VARCHAR2 (2000);
    bln_Allowed BOOLEAN;
    myVar VARCHAR2 (32767).


    BEGIN

    IF varUPD_TYPE = "A" THEN

    BEGIN
    SELECT CH_DATE, LAST_COUNT_ADDED, ALLOWED_COUNT
    IN dtCH_DATE, numLAST_COUNT_ADDED, numALLOWED_COUNT
    PROD. PROCESS_COUNTER
    WHERE NOM_PROCESSUS = "DAILY".
    AND COUNTER_IND = A '

    IF dtCH_DATE < = trunc (sysdate) THEN
    numLAST_COUNT_ADDED: = 0;
    END IF;

    EXCEPTION
    WHILE OTHERS THEN
    numLAST_COUNT_ADDED: = 0;
    numALLOWED_COUNT: = 1;
    END;
    IF numALLOWED_COUNT > = numLAST_COUNT_ADDED + 1 THEN

    bln_Allowed: = True;

    varSTMT: = "UPDATE PROD. TMS_PROCESS_COUNTER ';
    varSTMT: = varSTMT | ' SET last_count_added = ' | (numLAST_COUNT_ADDED + 1);
    varSTMT: = varSTMT | "WHERE nom_processus =" DAILY "';
    varSTMT: = varSTMT | "AND COUNTER_IND ="D"';


    IF varSTMT IS NOT NULL
    THEN
    MyVar: = B(96,varSTMT);
    PROC_LOG (' CALL B ': myVar);
    IF myvar > 0 THEN
    NULL;
    END IF;
    END IF;
    On the other

    End if;

    END IF;

    EXCEPTION WHEN OTHERS THEN
    PROC_LOG ("A failed '");
    PROC_LOG (' SQL error: ' |) SUBSTR (SQLERRM, 1, 1000));
    RETURNS A NULL VALUE.
    PUT AN END TO;

    The FUNCTION B(numTABLE_ID IN NUMBER, varSQL_STATEMENT IN VARCHAR2) RETURNS NUMBER IS
    varINSERT_BATCH_STMT VARCHAR2 (32767): = NULL;
    varADD_REC_TYPE BATCH_TABLES. TYPE % ADD_REC_TYPE;

    BEGIN

    INSERT INTO BATCH_STATEMENT (ID, TABLE_ID, STATEMENT, QUEUE_SEQUENCE_ID)
    VALUES (Numidian, numTABLE_ID, varSQL_STATEMENT, 1);

    EXCEPTION WHEN OTHERS THEN
    PROC_LOG ('B failed');
    PROC_LOG (' SQL error: ' |) SUBSTR (SQLERRM, 1, 1000));
    RETURNS - 1;
    END B;


    Structure of the Batch_statement table:


    ID Number (15) not null
    number (2) not null table_id
    Statement varchar2 (4000) not null
    Queue_sequence_id number (5) not null


    Why do you do such coding mess full of bad practices.

    Remove the exceptions WHEN OTHERS, you're a turing a mistake in this way, they are bugs and (never) use functions to perform DML.

    Functions are not intended for DML. Period.

  • monitor the DML operation for a table, that is, monitor the type time and DML operation

    Hello expert,

    I want to follow the DML operation for a table, i.e. monitor the time to type and the DML operation. you tell please how do I get that?

    Thank you very much

    See if this can help you:

    http://Oracle-Apps-DBA.blogspot.com/2007/07/monitoring-DML-operations.html

    Kind regards

  • Why bitmp index are not suggested for DML operations

    Hi all

    Can someone make me understand why bitmap indexes are not suggested to use for DML operations. AFAIK, the reason being that it locks the table and another user won '; t be able to complete the transaction but why?

    user13389425 wrote:
    the reason is that I found is that it stores the rowid of beginning and the end rowid and the value of the spreadsheet store n number of entries of the inder, so any operation DML whole leaves lock themselves and cause the performance of the database. My next question I was not able to address, is that the index entries how do I store it on a single sheet. How calcualte the same.

    It is not the entire sheet that gets locked, just the specific index entry in the block sheet index, as well as the corresponding lines in the table referenced by the rowid ranges in the index entry.

    As an indication, the average number of index entries in a block of sheets is the num_rows/leaf_blocks in dba_indexes. As an example, the average number of rows in the table referenced by the index entry is (num_rows in dba_tables/num_rows in dba_indexes) * distinct_keys in dba_indexes.

    See you soon

    Richard Foote
    http://richardfoote.WordPress.com/

  • Best approach to the DML operation in App Impl method

    What is the way of best/right to the DML operation in AppImpl methods. getDBTransaction () sets / statement or to create an object of connection directly from the data source and make DML operations?

    Thank you
    Bastien

    If you want to call a PL/SQL API, then by all means, use the connection of AOS (getDBTransaction()).

    Is there any problem of concurrency using getDBTransaction()

    As long as you follow the process appropriate (i.e., putting the service methods in your AM and call them through the link layer), you will be fine.

    That will mean he commits a user the changes regardless of the changes made by the other user also get committed to the db?

    NO.

    Have a [url http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcadvgen.htm#sm0297] read the docs to see the proper approach.

    John

  • Cannot perform a DML operation inside a query

    I want to run this SQL Developer

    Set serveroutput on;
    Select * from table (DOKUMENTACIJA.izvedi_import ('IID', 'ZKET', 'ZKET_BANKE', 'ZKES'));

    but I get "rowid: AAAmigAAEAAAI/Vrammmm ZKET_BANKE DATUM_SPREMEMBE-14551 ORA-14551: cannot perform a DML operation within a query.
    I read I need variable var, but I don't know how.

    concerning
    declare
       v EMPARRAY_BV;
    begin
       v := DOKUMENTACIJA.izvedi_import('ZKET_BANKE', 'IID', 'ZKET', 'ZKES');
    end;
    

    According to the definition of EMPARRAY_BV, you could write something to show content...

  • From the Collections with DML operations in function

    Hi all

    Can we use the collections and perform DML operations on it in a function? I want to call this function through the SELECT statement.

    If it's possible, so which collection is ideal in the following scenario?
    Need to have three columns and several lines and want to run select on it.

    Thanks in advance.

    If I'm not demanding too much can we have given in this way?

    You are most welcome ;)

    SQL> with t as (
      2  select '11AA101' str from dual union
      3  select '11AA102' str from dual union
      4  select '11AA103' str from dual union
      5  select '11AA108' str from dual union
      6  select '11AA110' str from dual union
      7  select '555101' str from dual union
      8  select '555102' str from dual union
      9  select '555103' str from dual
     10  )
     11  select rtrim(extract(xmlagg(xmlelement("a",range||',') order by range)
     12                       ,'//text()'),',') ranges from (
     13  select decode(min(connect_by_root str),str,str,
     14                min(connect_by_root str)||' to '||str||' ('||count(0)||')') range
     15  from t
     16  where connect_by_isleaf = 1
     17  connect by substr(str,1,length(str)-3)=prior substr(str,1,length(str)-3)
     18      and prior to_number(substr(str,-3))+1 = to_number(substr(str,-3))
     19  group by str
     20  );
    
    RANGES
    ------------------------------------------------------------------------------------------
    11AA101 to 11AA103 (3),11AA108,11AA110,555101 to 555103 (3)
    

    Max
    [My Italian blog Oracle | http://oracleitalia.wordpress.com/2010/02/07/aggiornare-una-tabella-con-listruzione-merge/]

  • Mr President, how to find the last DML operations

    Hello

    Please tell me how to find the last DML operations at least a minimum of 30 queries.

    Thanks in advance,

    Select sql_id, sql_text, last_load_Time from V$ SQLAREA

    or

    Select * from v$ sqltext

    Must be one of them. But don't know what exactly you are looking at.

    I usually use v$ sqlarea to see recent queries.

    Maybe you can limit the rows using rownum, order of last_load_time.

    I understand, if the same query is used again then only recent transaction is stored.

  • DML operations on a table

    Hello

    I need to find all the procedures/function/package performs a specific operation on a table.

    If the table is SCOTT. EMP, need to find which objects all insert them data in / or remove from it / or updates.

    There all views available for this? or what can be done to get this detail.

    Thank you!

    bLaK says:
    m sorry sb92075, I guess I wrote wrong...

    I got DBMS_LOGMNR, but do not know how this will help me to above case... check once more.

    Thanks again!

    REDO file contain all DML against the DB.
    Dbms_logmnr can show who did it as DML & when extracting these files REDO details.
    I thought that this is the question you want answered.

  • The track DDL and DML operations happening in the Backend in files...

    Hi I have a requirement to track the transaction DDL and DML that passes in the Backend, once the user inserts or updates any Table.How to implement the same anyone can proviode code for the same thing.
    Ex: I have several tables in my database if a user triggers the DDL or DML, it should be entered into the log file under

    Name of the Table Operation Timestamp
    X YYYY-MM-DD Insert HH24:MM:SS
    Update Y DD-MM-YYYY HH24:MM:SS
    Z remove HH24:MM:SS DD-MM-YYYY
    L choose HH24:MM:SS DD-MM-YYYY

    Select sql_fulltext, sql_id, module, parsing_schema_name, parsing_user_id, first_load_time, loads, users_executing, rows_processed
    v $ sqlarea
    where parsing_schema_name = to_char(first_load_time,'dd/mm/yyyy') like ' % 08/11/2007 ' and 'GLENN '-'.
    first_load_time desc order;

    Concerning
    Asif Kabir

  • No DML operations on a table

    Hello

    In fact, my problem looks like an easy question, but the truth is that I think that it s quite bizarre.

    Check out Let´s:

    The first time I noticed about who was a few days earlier in the morning, I got 100% cache libray locking from and export complete simple all night.

    After killing the process I discovered that the real problem is that Oracle can´t access a table, if I try to do any operation DML on this table, the library cache continues up to 100%

    Same thing happens if I try to 'select count', 'desc', 'delete', 'truncate', 'Add pk', 'drop pk', "alter index", "drop index"... everything I try with this table returns the same question, it freezes SQL and create shortages.

    Metalink says I should try to restart the database, maybe it's a good idea, but it is production environment with Linux Red Hat Cluster shared drive thinking, so if I restart it and Oracle can´t start... I'll be in real trouble...

    Any idea/s...

    ++++++++++++++++++++++++++++++++++++++++
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64 bit Production
    Linux 2.6.9 - 55.ELsmp #1 SMP kills Apr 20 16:36:54 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
    ++++++++++++++++++++++++++++++++++++++++

    I think that 'something' is using this table. Here are a few checks I would do:

    -Try to run a "analyze table... validate structure.
    -Select * access $ v where object = "your name of the table."
    -Examine the follow-up and alert.log under user_dump_dest/backgroup_dump_dest files. for example, you might find errors that could explain your problem.

    In addition, do you see not all the locks on that table? is - that is it possible that a process modified a large number of lines and no clerk has not yet? Are there numbers moving up/down under the terms of the transaction$ v?

  • trigger dml operations

    Hi all

    Hope all are doing well, I need a trigger (DML opereations) update one table if another table Gets the updates but I m not good in plsql, so I need your help, if anyone has, could you please share this trigger? your help will be appreciated, thanks in advance.

    Thank you.

    Kind regards.

    OS: RHEL 6.1

    DB: 11.2.0.3

    User,

    Using the above code, it will not update the name also.

    Trigger: OLD.name will store the old value and: NEW.name will store the new value.

    You must use

    UPDATE testcp SET name =: new.name where id =: old.id;

    This will update the new value to the name field in the testcp table.

    If you want to update the id also try this:

    UPDATE testcp SET name =: new.name, id =: new.id where id =: old.id

    See you soon

    AJ

  • Facing a problem while doing DML operations in Discoverer (Urgent!)

    Hello

    I am facing a problem in the discoverer report I'm working. I would be grateful if you could help me find a solution for this-

    I'm releasing a custom package of discoverer. This package is the insertion of data in a custom table. As we cannot directly put the DML statements in the package of discoverer so that I have defined this package as the Pragma autonomous. The custom table that is being filled is an ordinary table (that is not a global temporary table). In the folder custom in Administrator I just selects the custom table data.

    Problem when I run the report of discoverer, the data get inserted in the custom table, which means that the package is working correctly, but still the report does show all the data. Maybe the running query before even that data is inserted in the table. Can you please what Miss me in this solution?

    Some facts of the report-
    1. I use that only one worksheet.
    2. the packaging is insert the data in the custom table, so I see no problem with the package and trigger.

    Thanks for your help.

    -Anshul

    Hey Anshul
    Now, I understand, and you certainly don't want a user data of another user overwriting data.

    An idea that comes to mind and the other I did have to create a copy of the table in the schema for each user who needs. There will always be an original copy in the main schema. So what you need to do is to create a local synonym for the table, in the schema of the user who performs a redirection of the system to use the local table. Using this approach you can have each user, update their own copy and read it for their reports.

    Another, more difficult the idea would be to use a TEU, private virtual database, to control the data in a central table. The table would not be truncated, but would have a new column added to the owner of the data. Then during the execution of the procedure it delete all the lines for the user and then load new ones for this user. The CAE would be used to filter the data in the report so that the user sees only the data belonging to the user.

    Hope that all makes sense. The first is that I would like to try because it is the simplest.

    Michael

Maybe you are looking for