DBA Data[Home] [Help]

PROCEDURE: SYS.DBMS_FEATURE_DYN_SGA

Source


1 procedure DBMS_FEATURE_DYN_SGA
2     (feature_boolean  OUT  NUMBER,
3      aux_count        OUT  NUMBER,
4      feature_info     OUT  CLOB)
5 AS
6   num_resize_ops         number;                 -- number of resize operations
7   feature_usage          varchar2(1000);
8 begin
9   -- initialize
10   num_resize_ops := 0;
11   feature_boolean := 0;
12   aux_count := 0;
13   feature_info := to_clob('Dynamic SGA usage not detected');
14   feature_usage := '';
15 
16   execute immediate 'select count(*) from v$sga_resize_ops ' ||
17                     'where oper_type in (''GROW'', ''SHRINK'') and ' ||
18                     'oper_mode=''MANUAL''and ' ||
19                     'start_time >= ' ||
20                     'to_date((select nvl(max(last_sample_date), sysdate-7) ' ||
21                     'from dba_feature_usage_statistics))'
22   into num_resize_ops;
23 
24   if num_resize_ops > 0
25   then
26 
27     feature_boolean := 1;
28 
29     feature_usage := feature_usage||':rsz ops:'||num_resize_ops;
30 
31     -- get v$memory_dynamic_components info
32     for item in (select component, current_size, min_size, max_size,
33                  user_specified_size from
34                  v$memory_dynamic_components where current_size != 0)
35     loop
36       feature_usage := feature_usage||':comp:'||item.component||
37                        ':cur:'||item.current_size||':min:'||
38                        item.min_size||':max:'||item.max_size||
39                        ':usr:'||item.user_specified_size;
40     end loop;
41 
42     -- get v$system_event info for SGA events
43     for item in (select substr(event, 0, 15) evt, total_waits, time_waited
44                  from v$system_event where event like '%SGA%')
45     loop
46       feature_usage := feature_usage||':event:'||item.evt||':waits:'||
47                        item.total_waits||':time:'||item.time_waited;
48     end loop;
49 
50     feature_info := to_clob(feature_usage);
51 
52   end if;
53 
54 end;