In terms of the shared pool, you could see if this can be reduced by taking a statspack report during peak uasage. Check the Memory Usage% bit of the Shared Pool Statistics section and see if this is significantly under used. Alternatively execute this:

SELECT pool, name, bytes / (1024*1024) FROM V$SGASTAT WHERE name = 'free memory'