Transcript Chapter 8
P
L
/
S
Q
L
Oracle10g Developer:
PL/SQL Programming
Chapter 8
Program Unit
Dependencies
Chapter Objectives
P
L
/
S
Q
L
• After completing this lesson, you should be
able to understand:
– Local program unit dependencies
– Direct and indirect dependencies
– Data dictionary information concerning
dependencies
– Running the dependency tree utility
Oracle10g Developer: PL/SQL Programming
2
Chapter Objectives (continued)
P
L
/
S
Q
L
• After completing this lesson, you should be
able to understand (continued):
– Identifying the unique nature of package
dependencies
– Remote object dependency actions
– Using remote dependency invalidation
methods
– Avoiding recompilation errors
– Granting program unit privileges
Oracle10g Developer: PL/SQL Programming
3
Program Unit Dependencies
P
L
/
S
Q
L
• Relationships or dependencies determine
the validity of any program unit after
modifications to database objects that the
program unit references
• This validity determines the need for
recompilation
• A procedure calls a function
– The procedure is a dependent object and the
function is the referenced object
Oracle10g Developer: PL/SQL Programming
4
Brewbean’s Challenge
P
L
/
S
Q
L
• Need to take any steps possible to make the
execution more efficient
• Users have been hitting some unexpected
errors related to recent modifications to the
database and program units
• In this light, need to review database
dependencies and their impact
Oracle10g Developer: PL/SQL Programming
5
Local Dependency Activity
P
L
/
S
Q
L
• Status of program unit can be checked using
USER_OBJECTS
• When a referenced object is modified, the
status of the dependent object changes to
INVALID
• INVALID status indicates need for
recompilation
• ALTER COMPILE command used to
recompile a program unit
Oracle10g Developer: PL/SQL Programming
6
Automatic Recompilation
P
L
/
S
Q
L
• Upon execution of a program unit with an
INVALID status, the system will automatically
recompile
• Drawbacks
– Recompilation of dependent objects tests the
changes to the referenced objects, which could
raise errors at run time
– Recompilation processing occurs during run
time
Oracle10g Developer: PL/SQL Programming
7
Direct & Indirect Dependencies
P
L
/
S
Q
L
• Direct – a procedure calls a function
• Indirect – a procedure calls a procedure
which calls a function
– The dependency between the first procedure
and the function is indirect
• Indirect dependencies have same affect as
direct dependencies
Oracle10g Developer: PL/SQL Programming
8
Data Dictionary
P
L
/
S
Q
L
• USER_DEPENDENCIES identify direct
dependencies
• Use WHERE clause on name column to
analyze a particular object
• DBA_DEPENDENCIES will identify direct
dependencies of objects in all schemas
Oracle10g Developer: PL/SQL Programming
9
Dependency Tree Utility
P
L
/
S
Q
L
• Mechanism to map direct and indirect
dependencies
• Execute utldtree.sql script once to set up the
feature
• Deptree_fill procedure used to analyze an
object
• Two views
– Deptree: numeric scheme
– Ideptree: indented scheme
Oracle10g Developer: PL/SQL Programming
10
Package Dependencies
P
L
/
S
Q
L
• Modifications to package specification will
change status of dependent objects
• Modifications to only the package body do
NOT change status of dependent objects
• Separation of code in packages
– Minimizes recompilation needs
– Dependent objects to be developed prior to the
package body being created
Oracle10g Developer: PL/SQL Programming
11
Remote Object Dependencies
P
L
/
S
Q
L
• Database links are used to connect to other
Oracle databases
• Links allow calls to objects in other databases
– These objects are called remote objects
• When remote objects are modified, local
dependent objects are not initially flagged as
INVALID
• Remote dependencies are not checked until
run time
Oracle10g Developer: PL/SQL Programming
12
Remote Invalidation Methods
P
L
/
S
Q
L
• Timestamp: compares the last date of
modification of dependent and referenced
objects
• Signature: compares the parameter modes,
data types, and order
• Timestamp is the default method
• Databases in different time zones generate
unnecessary recompilation using the
timestamp method
Oracle10g Developer: PL/SQL Programming
13
Avoiding Recompilation Errors
P
L
/
S
Q
L
• Use %TYPE and %ROWTYPE attributes
• Use the ‘*’ notation in queries to select all
columns
• Use a column list in INSERT statements
Oracle10g Developer: PL/SQL Programming
14
Program Unit Privileges
P
L
/
S
Q
L
System Privilege
Explanation
CREATE PROCEDURE
Allows a user to create, modify, and
drop program units within their own
schema.
CREATE ANY PROCEDURE
Allows a user to create program units
in any schema. Does not allow the
modification or dropping of the
program units.
ALTER ANY PROCEDURE
Allows a user to modify program units
in any schema.
DROP ANY PROCEDURE
Allows a user to drop program units
in any schema.
EXECUTE ON program_unit_name
Allows a user to execute a specific
program unit.
EXECUTE ANY PROCEDURE
Allows a user to execute program
units in any schema.
Oracle10g Developer: PL/SQL Programming
15
Privileges - Data Dictionary
P
L
/
S
Q
L
View Name
Description
SESSION_PRIVS
Shows all privileges of
the current schema,
direct and indirect
SESSION_ROLES
Shows all roles granted
to the current schema
USER_SYS_PRIVS
Shows only direct
privileges of the current
schema
USER_ROLE_PRIVS
Shows only direct roles
granted to the current
schema
Oracle10g Developer: PL/SQL Programming
16
Summary
P
L
/
S
Q
L
• Program unit status changes when referenced
object is modified
• INVALID status indicates a need for
recompilation
• Direct and indirect dependencies both affect
status
• Dependency tree utility allows mapping of both
direct and indirect dependencies
Oracle10g Developer: PL/SQL Programming
17
Summary (continued)
P
L
/
S
Q
L
• Packages minimize recompilation needs
• Remote dependencies do not update status
until run time
• Appropriate privileges needed to create and
use program units
Oracle10g Developer: PL/SQL Programming
18