There is no relationship between db_block_buffers and shared_pool other than they both live in the SGA.

db_block_Buffers controls the amount of memory you will use for data caching. For example, an update statement. In order to evaluate whether you need to increase your db_block_buffers, you should examine your hit ratio:
select (1-(sum(decode(name,'physical reads',value,0)) /
(sum(decode(name,'db block gets',value,0))+
sum(decode(name,'consistent gets',value,0))))) * 100 "buff hit"
from v$sysstat

The hit ratio should be above 98%.


shared_pool controls the amount of memory you will use for other operations; library cache, object cache, etc.