You Asked
What are the implications, affects, side effects, concerns if any if moving from 16k block size to 8 k from one db to other.
We are using schema expdp data pump to move from old db which is 16k block size to new db which is block size 8k , same character set.
Will the row length increase or decrease ?
What query to run to find row length of a table rows so we may compare both old and new db?
Will cbo behave differently , statistics get affected, query response change just for this block size change factor ?
Is there any todo checklist adjustments to be made to init.ora Params to facilitate this ? Memory parameter adjustments ?
Do we adjust the sga to double the size since now new block size is 8k ?
and Connor said...
You should not need to double the SGA, because you (I assume) are currently specifying your SGA parameters in bytes not blocks.
There is a fixed overhead in each block, so the *percentage* of space available per block to store data is slightly lower. Based on that you might want to increase your SGA *slightly*.
Obviously any memory allocations may have explicitly made for 16k block will need to be mapped over to 8k allocations.
Row lengths will be unchanged - a row (in simplest terms) is:
length of col1, data for col1, length of col2, data for col2, etc etc
If you have any compressed data, then it would be worth experimenting with compression rates in 16k versus 8k. Similarly, if you are doing index leading column compression, then you'd want to do some experimentation there.
But I suppose more important than *anything* is performance benchmarking - you are about to change a *lot* of optimizer statistics, ie, the number of table blocks, rows per block, leaf blocks in indexes, index levels etc etc... You really want to have confidence your SQL's all perform as you expect before you jump in and migrate.
Hope this helps
Rating
(2 ratings)
Is this answer out of date? If it is, please let us know via a Comment