Skip to Content
author's profile photo
Former Member

How does the buffer trace identify changes on tables?

Hello all!

If I switch on a buffer trace, I can see the executed operations. There are READ SINGLE's, FETCHE's and OPEN's.

But if I make a change (Insert, Delete...) on a buffered table, I can only see Read single, fetch and open. These stmts correspond to queries. But what is about changes? How are they called in the trace?

Thanks,

Holger

Message was edited by: Holger Schmidt

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • Best Answer
    author's profile photo
    Former Member
    Sep 29, 2005 at 12:14 PM

    Hi Holger,

    Your understanding is correct on rdisp/bufreftime and 'Last modified' . On the F1 help on buffer state for 'Pending' I can only find the OSS which is also not clear. But I tried to read a table in "Pending" for a about 6 -7 times in SE16 . After a while ( say 10 mins ) I ran ST02 again and the table status changed to valid . So the documentation is correct that buffer will be loaded after certain read access but its still not confirmed as to how many read access would reload the buffer in "pending" state and after how much time.

    That is it on this topic.

    Cheers

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi!

      You have to test it!

      An invalidated table resides in the pending state till a defined number of read accesses were executed on it!

      The helpdata says 'a certain number' because this may change from release to release...

      So you have to test how many read accesses it takes till the table is in the vaild state!

      That is the solution. I am totally sure about this, because I talked to sb. who wrote a book concerning that.

      Holger

  • author's profile photo
    Former Member
    Sep 28, 2005 at 06:27 AM

    Hi Holger.

    Insert / Delete will appear only if you activate SQL trace and the opeartion will be "REEXEC".

    In buffer trace database updates are not recorded.

    Cheers.

    Sanjay

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      thanks a lot,

      btw. if a table is in the buffer state 'pending', the sap help data says, that: "All generic table areas held in the buffer are invalid, but can be reloaded into the buffer after a certain number of read accesses."

      What does "a certain number of read accesses" mean?

      I always thought, that after the buffer synchronization time (default 60 sec), a table or its regions are reloaded into the buffer (if a table is read after the 60 sec)?!

      Is this wrong. Must a table be read for some times that it can be reloaded?

      How can the quote be understood?

      holger

  • author's profile photo
    Former Member
    Sep 28, 2005 at 09:20 AM

    Hi Holger,

    I am not sure about this as documenattion on pending status in OSS 3501 says -

    Pending: All generic areas of the table contained in the

    buffer are invalid, but a certain number of read

    accesses can be reloaded into the buffer. ( This is kind of not clear )

    On the time rdisp/bufreftime is only applicable when you have multiple application server . It is the time interval at which the various application servers read DDLOG and reload only those tables which have been marked as updated in DDLOG.

    Check this - http://help.sap.com/saphelp_47x200/helpdata/en/c4/3a6dd5505211d189550000e829fbbd/frameset.htm.

    You can use report RSDBBUFF to see the above parameter of your application server.

    So "Pending" is the state of an individual table.

    rdisp/bufreftime is the time interval at which buffers ( written in DDLOG since last synchronization )in an application serever is refreshed. Tables which are in pending and not changed since last synchronization will still be in pending .

    In ST02 -. Detailed Analysis -> Generic key -> Buffered Objects , I can find some of tables on my system as pending . I ran Se16 ( read access on this table with SQL + Buffer trace on ). In trace display I find that it is always bypassing the buffer ( yellow line ) even after a number of repetitions of SE16 . This table was last modified in 1997 . So seems pending will only change when we modify the table with insert/ updat/delete .

    Cheers

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Sanjay,

      what you meant, I think, was that an application server reads the DDLOG file ater the rdisp/bufreftime. It checks which table or rather entries of tables in his local buffer are invalidated. After the check it marks these tables or rather entries as invalid.

      'Last modified' means that the table structure was changed. If you add more columns to a table (UPDATE ... eg.), the date of 'last modified' will change. If you delete or insert any entries it will not.

      The helpdata (by pressing F1) is unclear. Is there anybody we could ask?

      Thanks,

      holger