Multi-table data block with update

My data block is set up by joining 3 tables. Only 1 table is
set up as updatable. The columns from the other 2 tables are
set in property palette as not updatable. But when I try to
update the data block row, I get: FRM-40501 ORACLE error:
unable to reserve record for update or delete.
I have tried using an updatable view in the data block and even
wrote an INSTEAD TRIGGER for the update but I receive the same
message.
I appreciate your help.
Thanks.

you can try on-update trigger on block level to handle this
problem.

Similar Messages

  • Hot Data Block with concurrent read and write

    Hi,
    This is from ADDM Report.
    FINDING 8: 2% impact (159 seconds)
    A hot data block with concurrent read and write activity was found. The block
    belongs to segment "SIEBEL.S_SRM_REQUEST" and is block 8138 in file 7.
    RECOMMENDATION 1: Application Analysis, 2% benefit (159 seconds)
    ACTION: Investigate application logic to find the cause of high
    concurrent read and write activity to the data present in this block.
    RELEVANT OBJECT: database block with object# 73759, file# 7 and
    block# 8138
    RATIONALE: The SQL statement with SQL_ID "f1dhpm6pnmmzq" spent
    significant time on "buffer busy" waits for the hot block.
    RELEVANT OBJECT: SQL statement with SQL_ID f1dhpm6pnmmzq
    DELETE FROM SIEBEL.S_SRM_REQUEST WHERE ROW_ID = :B1
    RECOMMENDATION 2: Schema, 2% benefit (159 seconds)
    ACTION: Consider rebuilding the TABLE "SIEBEL.S_SRM_REQUEST" with object
    id 73759 using a higher value for PCTFREE.
    RELEVANT OBJECT: database object with id 73759
    SYMPTOMS THAT LED TO THE FINDING:
    SYMPTOM: Wait class "Concurrency" was consuming significant database
    time. (4% impact [322 seconds])
    what does it mean by hot block with concurrent read and write??
    is rebuilding the table solves the problem as per addm report?

    Hi,
    You must suffer from buffer busy waits.
    When a buffer is updated, the buffer will be latched, and other sessions can not read it or write it.
    You must have multiple sessions reading and writing that one block.
    Recommendation 2 results in fewer records per block, so less chance multiple sessions are modifying and reading 1 block. It will also result in a bigger table.
    The recommendation doesn't make sense for tablespaces with segment storage management auto, as for those tablespaces pctfree does not apply.
    Buffer busy waits will also occur if the blocksize of your database is set too high.
    Sybrand Bakker
    Senior Oracle DBA

  • Oracle Forms - How can I create a Data Block with query

    Dear friends I have a question, I couldn't do this..
    I have a sql query, I want to show the datas of the query.. How can I do this. ?
    Data Block Wizard wants a table, view or stored procedure, but I have a query, how can I create a data block with my query.. I m waiting your helps..? Please...
    Semih

    Hi,
    You have two options
    1. create a view and base the block on the view
    2. create a block with a query Data Source Type of 'FROM clause query'
    Hope this helps
    Neil

  • Enhancement request : Table - Data  -- Filter with multiple lines

    It would be nice when the Filter option in the tables Data tab could contain multiple lines, because :
    In case of a complex where clause on a table (used in a query) it's hard to get an impression of the filter because everything is typed on one single line.
    In case of multiple lines it's also more easy to disable a single clause temporary with a double dash (--) at the start of the line instead of searching in a complex filter where to put /* ...*/
    Eric.

    What I mean is the Filter option when displaying the data (Data tab) of a table. You have the possibility to enter a Sort and a Filter (to reduce the data that is displayed). That Filter option has no possibility to enter multiple lines. So there is no way to 'format' the filter which would be nice in case of complex or large 'where clauses'.
    What would you prefer, this (multiple lines) ?
    AND ( p_peildatum IS NULL
    OR
    TRUNC(p_peildatum) BETWEEN TRUNC(dnm.datum_ingang)
    AND TRUNC(NVL(dnm.datum_einde,p_peildatum))
    AND ( p_ondergrens IS NULL
    OR
    TRUNC(p_ondergrens) <= TRUNC(NVL(dnm.datum_einde,p_ondergrens))
    or this, like it is now (everything on one single line) :
    ( p_peildatum IS NULL OR TRUNC(p_peildatum) BETWEEN TRUNC(dnm.datum_ingang) AND TRUNC(NVL(dnm.datum_einde,p_peildatum)) ) AND ( p_ondergrens IS NULL OR TRUNC(p_ondergrens) <= TRUNC(NVL(dnm.datum_einde,p_ondergrens)) )
    Eric.

  • Multi-tables based blocks

    Hello,
    Since "FROM clause" based blocks are not well handled by Forms 6i (not editable, master-details relations restrictions), is there another way to base a block on several tables without using a "FROM clause" ?
    Actually, blocks are based on one table (for editing), but along with information from another one. And these "foreign items" have to be in the same block !
    Thanks for your help.

    Yes you can base a block on a Join directly, e.g. the Query Datasource name property in the block has both tables named: emp,dept and the where clause defines the join
    You have to decide which table will be the "master" and will receive the updates etc. You define this by setting the DML Data Target Name property to that table.
    Set the Primary key property on the block to non-updatable and define which item is the actual key using the appropriate item property.
    Finally for each field in the block set the appropriate source (prefixed with the table name e.g. emp.deptno) for each Item in the Column Name property and set the items that do no come from the master table as query only.
    There is a detailed write up on how to do this in the June 2002 edition of the ODTUG Technical Journal. This available online to ODTUG members at:
    http://www.odtug.com/members/briefcase/0602/mills.pdf

  • Track table data changes (inserts, updates, deletes) including os_user

    Hi ,
    I was given a task by manager to keep track of changes on a given table including os_user who made it.
    Should I create a trigger on it (on any update, insert, delete etc.) or there is a better way of doing it ?
    I think there could be some info already in some data dictionary views or something like it.
    If I CREATE MATERIALIZED VIEW LOG on that table would it help?
    I'm kind of new to that sort of tasks,
    Thanks a lot!

    Leo_Y wrote:
    Hi ,
    I was given a task by manager to keep track of changes on a given table including os_user who made it.
    Should I create a trigger on it (on any update, insert, delete etc.) or there is a better way of doing it ?
    I think there could be some info already in some data dictionary views or something like it.
    If I CREATE MATERIALIZED VIEW LOG on that table would it help?
    I'm kind of new to that sort of tasks,
    Thanks a lot!is application 3-tier like below?
    EndUser<=>browser<=>WebServer<=>ApplicationServer<=>DatabaseServer

  • Globle table  data  problem with pragma autonomous_tranaction

    hi gurus,
    i have  two globle table both having   preserve  row on commit
    g_emp ;
    g_hop_brk ;
    in  procedure
       i m populating   g_emp  then  on this table  doing some manipulation
       loop
    i m calling function  which  have  pragma autonomous_tranaction;
                   this function is
                  is now referring  g_emp ;
                   inserting into  g_hop_brk  ;
               commit ;
    loop end
      now fetching data from  g_hop_brk   ;
    end procedure ;
    with this logic i m not  getting value  when loop runs first time but from 2nd time i m getting value ,
    please tell me why its happening ,
    how to make work
    thanks

    On the second iteration of the loop, the parent transaction has committed after the first iteration, so some data will be visible.
    If you are merely trying to log the value the function is going to return, the function itself should not be an autonomous transaction. A separate procedure should be created to log the return value, that procedure should be an autonomous transaction, and the procedure should be called just before you return, i.e.
    CREATE OR REPLACE PROCEDURE log_something( p_return_val IN NUMBER )
      PRAGMA autonomous_transaction
    IS
    BEGIN
      INSERT INTO log_table ...
      commit;
    END;
    CREATE OR REPLACE FUNCTION your_function( some_parameters )
      RETURN something
    IS
      l_ret_val number;
    BEGIN
      log_something( l_ret_val );
      RETURN l_ret_val;
    END;The procedure never has to query any tables, so the fact that it can't see the parent's uncommitted changes is irrelevent.
    Justin

  • Multi-task data logging with DAQmx

    I was wonder is it possible to use 'DAQmx Configure Logging' VI and 'DAQmx Start New File' VI for multiple tasks?  I'm doing synchronized high speed DAQ with NI PXI-6133 cards.  Each card (there are 16) must have its own task.  Although the DAQ is continuous, the user (software trigger) determines when data is saved to the disk and for how long.
    In my scenario the test length could be up to an hour with various test events scatter throughout.  The users want to display the data during the entire test length.  However they only want to write the data to disk during an event.  The event could last from 10 sec to 1 min.  That is why the users want to control when data is written to the disk.
    DAQmx Logging seems to work for a single task only, but I need to do multiple tasks.

    I've attempted to implement your suggestion, but I still do not acquire data for all channels for all tasks.  I've enclosed my VI.
    Attachments:
    TDMS Logging with Pause LoggingFSPR.vi ‏55 KB

  • Block with more than one table type agurment -  Update Procedure for Block

    Hi,
    I have one form with 3 Block. First Block is single row block, and other 2 are details block . The details balocks are based on the Procedure datasource, because of the complex query conditions. Now my requirement is When Inserting / Updating the Master Block (Single Row Block), I need to get the values in the two details block , because I need to update some other tables also based on these values. I created a procedure with two Table Type parameters (for each details block) , but when I using this procedure as the Update Procedure Name in the block, I am getting the error Only One table type arguement is allowed. Is there any other method to implement this.
    Thanks in advance.

    Rizly,
    A quick summary to make sure I understand your requirements. You have a single row base table master block with two detail blocks that are based on Procedures. When you update the single row base table master block, you need all of the data in the two procedure based detail blocks as there are updates that you have to perform to other tables that use this data. You have created a stored procedure that take two PL/SQL tables as parameters, but you are getting the error that only 1 table parameter is allowed.
    I need to ask you a few questions first. What is your Forms version? The stored procedure you created; are you using this procedure in the "On-Insert, On-Update, On-Delete" triggers or do you call the procedure in one of the Base Table block ("Key-Commit, When-Button-Pressed" or other trigger)? When you modify or add a new Master block record are you adding values to the detail blocks or using values from the previous Master block record?
    If you are using your procedure in the On-Insert, On-Update or On-Delete trigger(s), then based on your description, the error you are receiving is correct. The "On-..." triggers are constrained in that their procedures expect only a single PL/SQL table, Table of Records or Ref Cursor as a parameter. This is a Forms constraint - not a PL/SQL constraint as Forms is expecting you to only perform actions on the block where the "On-..." Trigger is located.
    Perhaps you should consider creating a database Package that has two package specification constructs (Ref Cursor, Table of Records, etc) you can populate from Forms and then simply call the package procedure that will use the Ref Cursors to perform the needed update or inserts.
    Hope this helps.
    Craig...
    If mine or someone elses response was helpful, please mark it accordingly

  • Multi-table INSERT with PARALLEL hint on 2 node RAC

    Multi-table INSERT statement with parallelism set to 5, works fine and spawns multiple parallel
    servers to execute. Its just that it sticks on to only one instance of a 2 node RAC. The code I
    used is what is given below.
    create table t1 ( x int );
    create table t2 ( x int );
    insert /*+ APPEND parallel(t1,5) parallel (t2,5) */
    when (dummy='X') then into t1(x) values (y)
    when (dummy='Y') then into t2(x) values (y)
    select dummy, 1 y from dual;
    I can see multiple sessions using the below query, but on only one instance only. This happens not
    only for the above statement but also for a statement where real time table(as in table with more
    than 20 million records) are used.
    select p.server_name,ps.sid,ps.qcsid,ps.inst_id,ps.qcinst_id,degree,req_degree,
    sql.sql_text
    from Gv$px_process p, Gv$sql sql, Gv$session s , gv$px_session ps
    WHERE p.sid = s.sid
    and p.serial# = s.serial#
    and p.sid = ps.sid
    and p.serial# = ps.serial#
    and s.sql_address = sql.address
    and s.sql_hash_value = sql.hash_value
    and qcsid=945
    Won't parallel servers be spawned across instances for multi-table insert with parallelism on RAC?
    Thanks,
    Mahesh

    Please take a look at these 2 articles below
    http://christianbilien.wordpress.com/2007/09/12/strategies-for-rac-inter-instance-parallelized-queries-part-12/
    http://christianbilien.wordpress.com/2007/09/14/strategies-for-parallelized-queries-across-rac-instances-part-22/
    thanks
    http://swervedba.wordpress.com

  • Multiple data blocks on the same canvas

    Forms newbie question:
    Is it possible to have 2 data blocks with two different sets of transactional triggers (ON-UPDATE, ON-LOCK, etc.) on the same canvas?
    I've got an example where i've got two data blocks (one sourced from a view, and one that is a CTL block) on the same canvas. The block sourced from the view is working fine. When I make updates, they are reflected, etc. But, i've got one field in the control block that I need to update from as well, and I can't seem to get it (or any of the CTL block items) to show up as "updateable", regardless of the set_item_property....theyre always grayed out.
    Do i need to take the user to a new canvas to be able to utilize the update of the ctl field?

    A second canvas is not needed. Normally, control-block items are always updateable, so there is something going on in your form to prevent it.
    > I can't seem to get it (or any of the CTL block items) to show up as "updateable",
    regardless of the set_item_property....theyre always grayed out.
    What... Is there code someplace in the form that sets them to Enabled, false? If that is the case, then to get them working again, besides setting Enabled to true, you also must set Updateable and Navigable to Property_True. (This is documented at the end of the on-line help on Set_Item_Property.)

  • Data block or control block

    any one please suggest : which is faster and better in 9i forms/reports applications, a data block with form triggers(pre,post,commit_form) for DML ; or a control block with explicit DML for retreiving and posting from/to data base.
    can PJC help in boosting performance. How ?

    Thanks but a.I find the busy dumble for a while before allowing the user to type the content in a database item (at a w/s in LAN about 900 meters away from AS). Posibly validating the item all the way to the database and back.
    b. I found certain form triggers failing e.g. pre/post update resulting erroneous enterprise data.

  • DEADLOCK과 INITRANS (같은 TABLE내의 다른 범위의 DATA처리시 ORA-60)

    제품 : ORACLE SERVER
    작성날짜 : 2000-09-06
    DEADLOCK과 INITRANS (같은 TABLE내의 다른 범위의 DATA처리시 ORA-60)
    ================================================================
    deadlock에 관한 일반적인 사항은 <Bul:11742>에 정리되어 있다. 같은 data를
    동시에 변경하는 transaction의 경우 deadlock이 발생하는 것은 application
    logic을 수정하여 해결해야 하는 경우가 대부분이다.
    그런데 같은 table에 대해서 동시에 수행되는 transaction이 각자 서로 다른
    data를 처리하는 경우에도 ora-60(deadlock detected while waiting for
    resource)이 발생할 수 있다.
    예를 들어 한 transaction은 A table의 1월 data를 처리하고, 동시에 다른
    transaction은 같은 A table의 2월 data를 처리하는 것과 같은 경우이다.
    이러한 경우에도 initrans가 작게 설정되어 있으면, ora-60이 발생할 수 있는데,
    이 자료에서는 이와 같이 다른 data를 처리하는 transaction들 사이에서의
    ora-60이 발생하는 경우와 조치사항을 확인한다.
    1. transaction entry에 대해서
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    table이나 index에 포함된 모든 block에 update/delete/insert와 같은 dml을
    수행하기 위해서는 일단 그 block에 transaction정보를 저장시킬 transaction
    entry를 확보한 후에 원하는 작업이 수행가능하다.
    이 transaction entry의 크기는 os dependent하기는 하나 대부분 23 bytes이며,
    table이나 index의 initrans option에 의해, 미리 확보되는 block당 transaction
    entry의 갯수가 결정된다. default는 table이 1, index가 2이다.
    이 transaction entry가 특정 transaction에 할당되면 그 transaction이 commit
    이나 rollback되기 전까지는 다른 transaction에서 사용할 수 없다. 같은
    block에 다른 transaction이 dml을 수행하려면, 남은 공간중에서 23 bytes의
    transaction entry를 새로 할당하거나, 공간이 없으면 앞에서 먼저 사용중인
    transaction이 commit/rollback되기를 기다려야 한다.
    2. ORA-60이 발생하는 경우
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    deadlock을 유발시키는 transaction이 서로간에 완전히 다른 data(같은 table)를
    처리하더라도 그 data가 같은 block에 함께 들어가 있는 경우라면 ORA-60이
    발생할 수 있다. 즉, transaction entry를 잡는 과정에서 block내에 남은
    space가 부족한 경우, 서로 상대방의 transaction이 종료되기를 기다리는
    deadlock이 발생가능하다는 것이다.
    아래에 실제 예를 들어 자세한 발생 시나리오를 정리하였다.
    1. ORDER table은 날짜별로 data가 추가, 변경, 삭제되는 100만건 이상의 data를
    가진 table이다. 이 table에 대해서 월별로 통계작업을 수행하는데, 6개월씩
    처리하기 위해 6개 transaction을 동시에 수행하였다.
    즉, T1은 1월 data, T2는 2월 data, T6는 6월 data를 처리하는 식이다.
    2. ORDER table은 initrans값이 1로 지정되어 있고 현재 1000개의 block이 이
    table에 할당되어 있다.
    3. 100번지 block에 2월, 3월, 5월 data가 함께 저장되어 있다.
    200번지 block에는 2월, 3월 data가 저장되어 있다.
    4. T2 transaction이 100번지 block에 이미 확보되어 있는 1개의 transaction
    entry를 사용하여 transaction정보를 저장하였다.
    그리고, 2월달 data에 대한 작업을 수행하였다.
    5. T3 transaction이 200번지 block에 initrans 1에 의해 확보되어 있는 23 bytes
    의 transaction entry를 이용하여 transaction정보를 저장한 후 3월달 data에
    대한 처리를 수행하였다.
    6. T2 transaction이 2월달 data중 나머지 부분을 처리하기 위해 200번지를
    access하여 23 bytes의 T2 를 위한 transaction entry를 확보하려고 하였으나,
    block에 남은 공간이 없어서, T3 transaction이 commit할때까지 기다린다.
    5번 단계에서, initrans에 의해 미리 확보되어 있는 공간을 사용하는 T3
    transaction이 종료되면, 그 부분을 T2가 사용할 수 있게 되는 것이다.
    7. T3 transaction도 100번지에 있는 3월 data를 처리하기 위해 100번지내에
    transaction entry를 추가적으로 확보하려 하였으나, 공간이 없어서,
    마찬가지로 미리 100번지 block을 사용하고 있는 T2 transaction이 종료되기
    를 기다리게 된다.
    8. 6과 7상황에 의해 T2와 T3 transaction은 서로 상대방이 종료되기를 기다리는,
    deadlock이 발생하게 되므로 deadlock상황을 유발시킨 T3 transaction이
    ORA-60을 발생시키면서 종료되고, T3 transaction은 rollback된다.
    200번지에 확보한 transaction entry부분도 반환하여 다른 transaction이
    사용가능한 상태가 된다.
    9. 8번에서 release된 200번지 block내의 transaction entry 23 bytes를
    6번 단계에서 기다리고 있던 T2 transaction이 확보하고 작업을 진행한다.
    3. deadlock을 피하기 위한 방법
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    결론적으로, 같은 table에 대해서 다른 data를 처리하는 transaction이라
    하더라도 동시에 수행하는 transaction이 많은 경우라면 initrans 값이 작은
    경우 ora-60이 발생할 수 있게 된다.
    하나의 table에 대해서 performance 등의 이유로 동시에 다른 data를 처리하는
    transaction을 수행하고자 한다면, table의 initrans 값을 크게하여,
    하나의 block에 여러 개의 transaction이 dml 처리를 수행하더라도 space가
    부족하여 기다리는 상황은 없도록 하여야 한다.
    initrans를 n으로 지정한다면 23*n bytes가 항상 transaction entry로 미리
    확보되어 있는 것이다. 이렇게 transaction entry로 초기에 확보된 공간은
    data를 저장할 수 없는 공간이 되므로, 너무 크게 하는 것은 space 낭비가
    초래된다. 하나의 block에 대해서 동시에 여러 transaction이 처리되지 않는
    경우라면 미리 확보된 transaction entry는 사용도 되지 않고 낭비되어, full
    table scan 등의 작업에 성능 악화만 초래하게 된다.
    initrans 값은 하나의 table에 대해서 동시에 처리하는 transaction의 갯수
    이하로 지정하도록 한다. 해당 table에 대한 동시 transaction의 갯수 만큼
    initrans를 지정하면 앞에서 설명한 상황의 deadlock은 발생하지 않는 것이
    보장되나 space를 고려할 때 그 보다는 약간 작게 하는 것이 일반적인다.
    initrans는 table이나 index에 대해서 create나 alter 문장 시 지정, 변경이
    가능하나, alter의 경우 이미 확보된 block에는 영향을 미치지 못하므로
    export/import를 이용하여 새로 지정하는 것이 필요하다.
    다음에 scott.dept table에 대해서 예를 들었다.
    column정의 storage등은 임의의 값을 예로 사용한 것이며, initrans도
    예로 3을 지정하였다.
    os>exp scott/tiger file=test.dmp tables=dept
    os>sqlplus scott/tiger
    SQL>drop table dept;
    SQL>create table dept (deptno number(2), dname varchar2(10))
    initrans 3
    storage(initial 10m next 2m pctincrease 0);
    os>imp scott/tiger file=test.dmp tables=dept ignore=y

  • Updating data without using update statement

    Hi,
    A quick question...
    Can any table data could be updated without using update statement from backend.
    Just wanted to make sure.
    Thanks in advance.

    Hi,
    What is your definition of Update?
    Since your question is vague and you dont explain what exactly you mean.
    here are my thoughts
    1) A record can be deleted and isnerted with new values.Where the nes values have only few columns changed from previous ones.
    2) I use pl/sql developer.If i need to update i can write select.. for update.Change the values (as in notepad)Commit.
         This is infact a update but with nice UI
    3) even your application can update data in your tables, if you code it and give correct privileges to the userRegards,
    Bhushan

  • Placing Summary column in master data block

    I have a master/detail datablock form. i want to show the sum of "amount" field that is present in detail datablock and this summar field must be placed in master data block but it does not compile the form and shows following error.
    FRM-30377: Summary item must reside in single-record block or in same block as summarized item.
    Item: S
    Block: PBL_PAYMENT_MASTER
    FRM-30085: Unable to adjust form for output.
    it works only by putting it in the same detail block with "Query All Records" to YES.
    But I want to place this summary column in master data block but then it is not working.
    How we can solve this problem.

    Hi,
    In this case:
    -- i put my summary column in the master data block with :Query_All_RECORDS set to yes
    --but Physically it is placed on detailed block on the canvas
    and it Works with this trick.
    Regards,
    Abdetu.

Maybe you are looking for

  • SQL Developer  3.2.09 fetch rows limit

    Hi, I have a problem. When I perform a query on some table that returns a lot of rows I can get only number of rows that set in fetch size in Preferences->database->Advanced. It just stops and doesn't allow to scroll any more. There was no such kind

  • Weblogic 12c exam

    Does any one know answers for the below questions ?? Question 1: Which four of the following NOT included in Weblogic lighter version (WLS Zip Distribution for only development) A. JVM B. Webserver plug-in C. Samples D. Smart update E. Deployment pla

  • Content Management Portlet

    Hi, I have been a problem when I import the content management portlet (cmsTools) into my application... My application does not recognize the icons and images references... When I run sampleportal that comes with Weblogic it´s work. Anyone can help

  • Hello can i Rename my PDF in iBook

    Hello can i Rename my PDF in iBook

  • OIM Users to Login Oracle BPM worklist

    Hi, I have developed the soa approval process and integrated with OIM and deployed. The requester from OIM will initiate the request and the task from SOA is assigning the task to approver. If login into OIM as approver I can see the task and able to