1. Do we have to refresh if there are some changes to the tables and views that we query change, like new columns are added/exposed?
No
2. What if a new package was introduced and we refer to that package in the application?
No refresh required
3. What if an existing package was modified and the parameters that were passed to the procedure from our application were also changed?
No refresh required
4. What if an existing package was modified and recompiled but parameters that were passed to the procedure from our application were not changed?
No refresh required
5. We connect to a database say XYZ from the application server. A procedure in XYZ that was called from our application internally connects to some other databse ABC and accesses a procedure in it. What if that procedure in ABC changes, do we still have to refresh the connection pool?
No refresh required
A connection pool simply offers a pool of connections to the underlying persistence store. It is not bound to the data / schema in the store in any way. Of course you can get a connection that belongs to a schema, but the point I am trying to make is, a DB refresh is not needed unless the DB went down and all the connections in the pool are lost and cannot be reclaimed.