I'm not able to get cell offloading to kick in consistently for the SQLs in my system. For the same SQL, I have noticed that sometimes cell offloading happens and sometimes it does not. The SQLs in question do a full table scan on quite a large table (40 million rows) and have some filters on this table. I hope they are a good candidate for offloading.
The DB parameters are set as below and there have been no changes to them -
CELL_OFFLOAD_PROCESSING = TRUE
CELL_OFFLOAD_DECRYPTION = TRUE
CELL_OFFLOAD_PARAMETERS = NULL
CELL_OFFLOAD_COMPACTION = ADAPTIVE
My questions is- Is there a way to get cell offloading to work consistently. As of now, I have been able to achieve by setting serialdirect_read = TRUE, but I don't think this would be recommended.
Edited by: museshad on Apr 3, 2012 1:14 PM
Processing will be offloaded only when direct reads are done, so queries that do reads thru buffer cache will do cell multiblock reads, or single block reads, and no offload will be done.
when you do paralle processing, reads are done in direct mode (unless in-memory PQ is used), and so offload happens.
In serial mode, direct reads may or may not happen, depending on several things ( number of blocks in cache, number of dirty blocks, ....). using serialdirect_read=true forces direct reads and so offload happens.
There's no magic to it.
If your Cells are too busy Oracle might decide to don´t offload.
Exadata are just able to use the first 8 predicates on your SQLs, so if you are changing the order of you predicate, you may be impact the offload decision.