DBA Data[Home] [Help]

PACKAGE BODY: SYS.DBMS_JAVA_DEV

Source


1 package body     dbms_java_dev is
2 
3   procedure disable is
4     not_granted exception;
5     pragma exception_init(not_granted, -1927);
6     type grant_collection is table of sys.dba_tab_privs.table_name%type;
7     jdev_grants grant_collection;
8     type grantee_collection is table of sys.dba_tab_privs.grantee%type;
9     jdev_grantees grantee_collection;
10     pkg_name sys.dba_tab_privs.table_name%type;
11     grantee varchar2(130);
12     stmt varchar2(2000);
13   begin
14 
15   if dbms_registry.is_in_registry('JAVAVM') then
16     select distinct owner, referenced_name bulk collect
17     into jdev_grantees, jdev_grants
18     from sys.dba_dependencies
19     where referenced_owner in ('SYS','PUBLIC') and owner != 'PUBLIC'
20       and owner != referenced_owner
21       and referenced_name in ('DBMS_JAVA','DBMS_JAVA_TEST','SQLJUTL',
22                               'SQLJUTL2','JVMRJBCINV','DBMS_JAVA_MISC');
23 
24     for i in 1..jdev_grants.count loop
25       pkg_name := dbms_assert.simple_sql_name(jdev_grants(i));
26       grantee := dbms_assert.enquote_name(jdev_grantees(i),FALSE);
27       stmt := 'grant execute on sys.' || pkg_name || ' to ' || grantee;
28       execute immediate stmt;
29     end loop;
30 
31       begin
32         execute immediate 'revoke execute on sys.dbms_java from public';
33       exception
34         when not_granted then
35           null;
36       end;
37 
38       begin
39         execute immediate 'revoke execute on sys.jvmrjbcinv from public';
40       exception
41         when not_granted then
42           null;
43       end;
44 
45       begin
46         execute immediate 'revoke execute on sys.sqljutl from public';
47       exception
48         when not_granted then
49           null;
50       end;
51 
52     execute immediate 'alter trigger sys.dbms_java_dev_trg enable';
53 
54     execute immediate 'alter session set "_ORACLE_SCRIPT" = TRUE';
55 
56     execute immediate 'alter table sys.procedurejava$ enable novalidate
57                        constraint java_dev_disabled';
58     execute immediate 'alter table sys.javajar$ enable novalidate
59                        constraint java_dev_jars_disabled';
60 
61     execute immediate 'alter session set "_ORACLE_SCRIPT" = FALSE';
62   end if;
63 
64   end disable;
65 
66   procedure enable is
67     stmt varchar2(2000);
68   begin
69 
70   if dbms_registry.is_in_registry('JAVAVM') then
71     execute immediate 'alter trigger sys.dbms_java_dev_trg disable';
72 
73     execute immediate 'alter session set "_ORACLE_SCRIPT" = TRUE';
74 
75     execute immediate 'alter table sys.procedurejava$ disable constraint
76                        java_dev_disabled';
77     execute immediate 'alter table sys.javajar$ disable constraint
78                        java_dev_jars_disabled';
79 
80     execute immediate 'alter session set "_ORACLE_SCRIPT" = FALSE';
81 
82     execute immediate 'grant execute on sys.dbms_java to public';
83     execute immediate 'grant execute on sys.jvmrjbcinv to public';
84     execute immediate 'grant execute on sys.sqljutl to public';
85   end if;
86 
87   end enable;
88 
89   procedure resolveinv is
90 
91   begin
92 
93    FOR rec in
94     (select NAME, obj# from OBJ$ where status= 4)
95    LOOP
96     BEGIN
97      sys.dbms_utility.validate ( rec.obj# );
98 
99     EXCEPTION WHEN OTHERS THEN
100        DBMS_OUTPUT.PUT_LINE(SQLERRM);
101     END;
102    END LOOP;
103 
104   end resolveinv;
105 
106 end dbms_java_dev;