so as a result;
after;
ALTER SYSTEM FLUSH BUFFER CACHE;
data is written to disk and cache is made empty.
The purpose of "alter system flush buffer cache" is to make all the buffers in the buffer cache free. However a buffer cannot become free if it is "pinned" (i.e. actualy in use) or if it is "dirty" (i.e. needs to be written to disc). There's nothing that Oracle can do about the pinned buffers, but it can write the content of the dirty buffers to disk before freeing them. Your description here is a good enough approximation.
Side not regarding checkpoints: there was a link to a list of checkpoint reasons earlier on, but things keep changing in Oracle and the manuals (and commentary) don't always keep up. In 10.2 there are lots more checkpoints than shown in the previous list. (I've published a list, which I think was complete,
[of checkpoint names|http://jonathanlewis.wordpress.com/2007/04/12/log-file-switch/] on my blog a couple of years ago).
If you're interested in seeing the effect of the call, you could run this query (as SYS) before and after:
select
status, count(*)
from
v$bh
group by
status
;
Responding to another detail mentioned above relating to that list of checkpoints - again things change. A log file switch used to result in an immediate thread checkpoint, but in 10.2 Oracle got even lazier about clearing the dirty blocks, and will only start a thread checkpoint if the switch takes it into the "last available" redo log. Otherwise it just hopes that the incremental checkpointing activity will allow the "first" log file to become free again in time for the next switch.
Regards
Jonathan Lewis
http://jonathanlewis.wordpress.com
http://www.jlcomp.demon.co.uk
"For every expert there is an equal and opposite expert."
Arthur C. Clarke