1) if the cache is clean, truncate will have very little work to do before it truncates, it will "best" or "beat" delete probably in that case.
... then how can anyone control that in
the job code?...
they don't, the DBA would set up the database using settings such as:
http://www.oracle.com/technology/deploy/availability/htdocs/fs_chkpt.html that would keep the cache clean, limiting the amount of work the truncate would have to do (at the expense of OTHER operations of course, no free lunch here)
... re you recommending that the logic of job code change to something like:
...
Absolutely NOT. I'm saying there are tradeoffs here, sometimes truncate will be faster than delete, sometimes the opposite is true. I just tried to list some of the considerations you have to take into account when deciding between them.
2) "delete might best truncate"
say there are 100 indexes on the table, delete is going to do a TON of work maintaining them, truncate - not so much.
" I was thinking of using delete no logging here."
don't, for the simple reason that "it does not exist". You cannot delete without logging, it is not possible.
3) I would recommend just the default pool, the recycle pool (and keep pool and default pool) manage blocks pretty much the same, they just have different names to by convention.
I would recommen ONE cache and ONE cache only - unless and until you have a really good reason to do otherwise.