PACKAGE Specify to recompile both the package specification and the package body if one exists, regardless of whether they are invalid. The recompilation of the package specification and body lead to the invalidation and recompilation of dependent objects as described for without run-time recompilation.
If recompiling the body results in compilation errors, then the database returns an error message and the body remains invalid.
to re-create the package body if it already exists.
Use this clause to change the body of an existing package without dropping, re-creating, and regranting object privileges previously granted on it.
After googling for a couple of mintutes, I found Tanel's comment.
He said that "_optimizer_invalidation_period" hidden parameter determines the period when the invalidation occurs. he also found that "_optimizer_invalidation_period" parameter is not working as expected as of 10.2.0.2, which meets my experiment.
When you recompile a package body, the database first recompiles the objects on which the body depends, if any of those objects are invalid.
The package manifest is digitally signed as part of signing the app package.These objects are declared in the package specification, so they can be called by application programs, procedures, and functions outside the package.