Danger of Invalid Database Objects
Danger of Invalid Database Objects
http://www.IT-Checklists.com
Oracle® and Oracle-based trademarks and logos are trademarks or registered trademarks of Oracle Corporation, Inc.
in the United States and other countries.
Conventions
The following typographical conventions are used in this book:
Constant width
Used for source code
Constant width bold
user input
[] optional elements
{} mandatory choice
| separates choices
Audience
• Operations Manager
• Testing Manager
• Environment Manager
• Application Support Staff
• System-DBA, Application-DBA, Development-DBA
• Quality Assurance Manager
Introduction
In an Oracle Database an object (Synonym, Package, Procedure, View, ...) becomes invalid if one of its
underlying objects is changed. If the change on the base object does not cause an error in the referencing
object, a simple recompiling will make the object valid again. This recompile is automatically triggered if an
invalid object is accessed. But if the change on the underlying, referenced object causes an error in the
calling object, this calling object CANNOT be recompiled, and all programs calling this now invalid objects
will fail.
Invalid objects of type 1) are not critical but they make monitoring and troubleshooting more difficult.
Therefore it should be investigated why they became invalid (and implement a mechanism to recompile
them after this event). As objects should be recompiled at next access those objects might be obsolete if
they stay invalid for a long time. Requesting a patch (or at least written approval) from application vendor to
remove those obsolete objects is the most effective way to get the database clean.
Invalid objects of type 2) could be either obsolete objects (e.g. a new version removed a table or procedure
but not the public synonym) or indicate a problem.
Before drilling down to details the next chapter "Impact Analysis" should demonstrate the risks and issues
caused by invalid objects.
If you do have invalid objects in your database, then answer following questions:
Question
1) How do you monitor your A) Our monitor system shows permanent a red flag for "invalid objects" but we ignore it because
system for invalid objects ? we know that we have invalid objects. We are aware that we would not detect a new invalid
object.
B) We disabled this control in our monitoring system because we know that we have invalid
objects. We are aware that we would not detect a new invalid object.
C) We customized our monitoring system to ignore the known invalid objects, but we would get
an alarm if there is a new invalid object.
D) Our monitoring system does not this control on invalid objects.
E) We don't have database monitoring at all.
2) In case of implementing a ..A) detect new invalid objects because we compare during the post implementation check the
change on that database we... invalid objects with the list of documented (known) invalid objects.
.. B) will not detect a new invalid object because we don't check for invalid objects at all.
.. C) will not detect a new invalid objects because we don't know in detail which objects have
been invalid before applying the change.
Answers to question 1:
C You did a great job, but you surely know which costs the customization did cost.
A, B, D, E We hope that you have excellent controls on many other places to detect malfunctions.
Answer to question 2:
A) You are doing a great job, but you are aware about the additional effort compared to a clean (free of invalid
objects) database.
B), C) You hopefully have a good post implementation check to identify that after implementing this change something
does not work. Take care! - The NEW module you installed or changed might work, but ANOTHER,
UNCHANGED module might suddenly fail!
Table LOG_TABLE
EDATE date
PROCESS_NAME varchar2(30)
STATUS varchar2(5)
RESULTCODE number(3,0)
(2) Changerequest
New process "JOB2"
Additional column "PROCESS_STEP" added to
table "LOG_TABLE"
Table LOG_TABLE
EDATE date
PROCESS_NAME varchar2(30)
STATUS varchar2(5)
RESULTCODE number(3,0) changed
PROCESS_STEP varchar2(30)
Nr. Action
1) Immediately add a "Problem" to your "Problem Management System". (This is the ITIL1 term, in your company you
might use another term for the system documenting, tracking and managing problems).
2) Document all steps which you tried to solve the problem. If it's a 3rd party application you should at least open a
Anomaly, TAR, Problem at the vendor's support. The vendor might provide a patch (script) to remove the obsolete
objects, or approve the removal or he will tell you that this is OK. Although the last response is not acceptable, you at
least will have an official statement from the application vendor which you can show to the auditor who might list the
invalid objects as defect.
3a) If you got rid of invalid objects, then you can close the problem.
3b) If you could not, but got official statements from the application vendor, then you could change the status to "Known
Problem".
But additionally you must customize the monitoring system to ignore the DOCUMENTED, KNOWN invalid objects but to
insure to detect new invalid objects.
If you do have this requirement documented but those requirements are not communicated to vendors and
developers you do have a problem in the change management process.
If you use our requirements template "Non Functional Requirements", then this requirement is one of 150
other requirements.
1 ITIL® = "IT Infrastructure Library" is not an official standard but the worldwide most accepted collection of best practices for Service Delivery
and Service Support. ITIL is a registered trademark of UK's OGC , Office of Government Commerce.
Our Products
you can purchase online and immediately download at our
eBook-Shop
Our Checklists and Templates will help you to ensure that good or best practice is not only known but
consistently applied!
Our Services
http://www.Mercury-Consulting-Ltd.com/services.htm