1 PROCEDURE aps_validate IS
2 AWok BOOLEAN;
3 OBJok BOOLEAN;
4 x NUMBER; -- dummy output spot
5 junklob CLOB;
6 v_Value varchar2(64);
7 running BOOLEAN;
8 BEGIN
9
10 begin
11 SELECT value INTO v_Value FROM v$option WHERE parameter = 'OLAP';
12 if v_Value = 'FALSE' then
13 -- set status OPTION OFF
14 sys.dbms_registry.Option_Off('APS');
15 return;
16 end if;
17 exception
18 when OTHERS then
19 null;
20 end;
21
22 if dbms_aw.olap_running() then
23 running := TRUE;
24 else
25 running := FALSE;
26 end if;
27
28 -- AWs are valid if we can read an option
29 BEGIN
30 junklob := dbms_aw.INTERP('show SESSCACHE');
31 AWok := TRUE;
32 EXCEPTION
33 WHEN OTHERS THEN
34 AWok := FALSE;
35 END;
36
37 -- supporting object things
38 BEGIN
39 SELECT 0 INTO x FROM DBA_OBJECTS
40 WHERE STATUS = 'INVALID' AND rownum <=1 AND
41 OWNER='SYS' AND OBJECT_NAME IN
42 ('OLAP_TABLE', 'OLAPIMPL_T', 'OLAP_SRF_T', 'OLAP_NUMBER_SRF',
43 'OLAP_EXPRESSION', 'OLAP_TEXT_SRF', 'OLAP_EXPRESSION_TEXT',
44 'OLAP_BOOL_SRF', 'OLAP_EXPRESSION_BOOL');
45 -- at least one object is invalid so component is invalid
46 OBJok := FALSE;
47 EXCEPTION
48 WHEN NO_DATA_FOUND THEN
49 -- no invalid objects were found so component is valid
50 OBJok := TRUE;
51 END;
52
53 IF NOT running THEN
54 dbms_aw.shutdown(TRUE);
55 END IF;
56
57 IF AWok AND OBJok THEN
58 dbms_registry.valid('APS');
59 ELSE
60 dbms_registry.invalid('APS');
61 END IF;
62 END;