cancel
Showing results for 
Search instead for 
Did you mean: 

How does the buffer trace identify changes on tables?

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Answers (2)

Answers (2)

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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