1.创建一个供Triger调用的Procedure
a.创建一个用来保存Procedure和Package的名称的Table(list_tab)
SQL>create table sys.list_tab (owner varchar2(64),NAME VARCHAR2(100));
Table created.
b.创建一个Procedure(proc_pkgs_list)来保存Shared Pool里面的对象名
SQL> create or replace PROCEDURE proc_pkgs_list AS
2 own varchar2(64);
3 nam varchar2(100);
4 cursor pkgs is
5 select owner,name
6 from SYS.v_$db_object_cache
7 where type in (’PACKAGE’,’PROCEDURE’)
8 and (loads > 1 or KEPT=’YES’);
9 BEGIN
10 delete from sys.list_tab;
11 commit;
12 open pkgs;
13 loop
14 fetch pkgs into own, nam;
15 exit when pkgs%notfound;
16 insert into sys.list_tab values (own , nam);
17 commit;
18 end loop;
19 end;
20 /