I work for a company that requires 24/7 access to the database, but when scheduled application code is modified, objects are invalidated such as packages, package body and views. We are forced to apply these types of modification (application) packages during off hours, when the online community is at a minimum.
The question is, how can we implement application code changes during normal working hours and avoid the outage caused by objects becoming invalidated?
In most cases, you cannot perform these tasks during normal working hours without invaliding objects. Think about it this way, you modify stored procedure PROC1, which is called by database trigger TRIG1. How is TRIG1 to know that the changes you made to PROC1 are syntactically correct? TRIG1 does not know this so the object becomes INVALID. The next time a user calls TRIG1, Oracle will recompile it to ensure PROC1 has not broken TRIG1. If everything is still good, Oracle executes TRIG1 for the user. If the changes to PROC1 broke TRIG1, then the user will receive an error. But Oracle will not know for sure until it recompiles the INVALID object.
Depending on what changes you are attempting, the DBMS_REDEFINITION package can help you perform these changes with minimal downtime. But you may still run into situations where there is an impact on end users or online visitors.
Dig Deeper on Oracle database design and architecture
Oracle expert Brian Peasland answers one reader's question about common pitfalls when connecting Oracle to outside programs.
One reader asks expert Brian Peasland a question about datafile sizes with the Oracle RMAN duplicate 10g command.
Managing parent table-child table relations in Oracle SQL environments is key to efficient programming.