Some types of schema objects can reference other objects as part of their definition. For
example, a view is defined by a query that references tables or other views. A
procedure’s body can include SQL statements that reference other objects of a
database. An object that references another object as part of its definition is called a
dependent object, while the object being referenced is a referenced object.
If you alter the definition of a referenced object, dependent objects may or may not
continue to function without error, depending on the type of alteration. For example, if
you drop a table, no view based on the dropped table is usable.
Oracle automatically records dependencies among objects to alleviate the complex job
of dependency management for the database administrator and users. For example, if
you alter a table on which several stored procedures depend, Oracle automatically
recompiles the dependent procedures the next time the procedures are referenced (run
or compiled against).
To manage dependencies among schema objects, all of the schema objects in a
database have a status.
■ Valid schema objects have been compiled and can be immediately used when
referenced.
■ Invalid schema objects must be compiled before they can be used.
■ For procedures, functions, and packages, this means compiling the schema
object.
■ For views, this means that the view must be reparsed, using the current
definition in the data dictionary.
Only dependent objects can be invalid. Tables, sequences, and synonyms are
always valid.
If a view, procedure, function, or package is invalid, Oracle may have attempted to
compile it, but errors relating to the object occurred. For example, when compiling
a view, one of its base tables might not exist, or the correct privileges for the base
table might not be present. When compiling a package, there might be a PL/SQL
or SQL syntax error, or the correct privileges for a referenced object might not be
present. Schema objects with such problems remain invalid.
Oracle automatically tracks specific changes in the database and records the
appropriate status for related objects in the data dictionary.
Status recording is a recursive process. Any change in the status of a referenced object
changes the status not only for directly dependent objects, but also for indirectly
dependent objects.
For example, consider a stored procedure that directly references a view. In effect, the
stored procedure indirectly references the base tables of that view. Therefore, if you
alter a base table, the view is invalidated, which then invalidates the stored procedure.
依赖
1. 如果一个对象的定义中引用了其他对象,那么此对象被称为依赖对象,此对象所引用的对象被称为引用对象
2. 表,序列,和同义词总是处于有效状态
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10599713/viewspace-983756/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10599713/viewspace-983756/
本文介绍了数据库中不同类型的模式对象如何通过定义互相引用,并探讨了依赖对象与被引用对象的概念。此外,还讨论了Oracle数据库如何自动记录这些依赖关系以简化数据库管理员的工作,并解释了当依赖对象的状态改变时,如何影响相关联的其他对象的有效性。
1609

被折叠的 条评论
为什么被折叠?



