[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;