DBA Data[Home] [Help]

PROCEDURE: SYS.DBMS_FEATURE_AUTO_MEM

Source


1 procedure DBMS_FEATURE_AUTO_MEM
2     (feature_boolean  OUT  NUMBER,
3      aux_count        OUT  NUMBER,
4      feature_info     OUT  CLOB)
5 AS
6   feature_usage          varchar2(1000);
7   memory_target             number;
8   sga_max_size              number;
9   memory_max_target         number;
10 begin
11 
12   -- initialize
13   feature_boolean := 0;
14   aux_count := 0;
15   feature_info := to_clob('Automatic Memory Tuning usage not detected');
16   feature_usage := '';
17   memory_target := 0;
18   sga_max_size := 0;
19   memory_max_target := 0;
20 
21   execute immediate 'select to_number(value) from v$system_parameter where ' ||
22                     'name like ''memory_target'''
23   into memory_target;
24 
25   if memory_target > 0
26   then
27 
28     feature_boolean := 1;
29 
30     feature_usage := feature_usage||':memory_target:'||memory_target;
31 
32     -- get sga_max_size value
33     execute immediate 'select to_number(value) from v$system_parameter where ' ||
34                       'name like ''sga_max_size'''
35     into sga_max_size;
36 
37     feature_usage := feature_usage||':sga_max_size:'||sga_max_size;
38 
39     -- get memory_max_target value
40     execute immediate 'select to_number(value) from v$system_parameter where ' ||
41                       'name like ''memory_max_target'''
42     into memory_max_target;
43 
44     feature_usage := feature_usage||':memory_max_target:'||memory_max_target;
45 
46     -- get v$memory_dynamic_components info
47     for item in (select component, current_size, min_size, max_size,
48                  user_specified_size from
49                  v$memory_dynamic_components where current_size != 0)
50     loop
51       feature_usage := feature_usage||':comp:'||item.component||
52                        ':cur:'||item.current_size||':min:'||
53                        item.min_size||':max:'||item.max_size||
54                        ':usr:'||item.user_specified_size;
55     end loop;
56 
57     -- get v$pgastat info
58     for item in (select name, value from v$pgastat where
59                  name in ('tot PGA alc', 'over alc cnt',
60                           'tot PGA for auto wkar',
61                           'tot PGA for man wkar',
62                           'glob mem bnd', 'aggr PGA auto tgt',
63                           'aggr PGA tgt prm'))
64     loop
65       feature_usage := feature_usage||':'||item.name||':'||item.value;
66     end loop;
67 
68     -- get v$memory_target_advice info
69     feature_usage := feature_usage||':mem tgt adv:';
70     for item in (select memory_size, memory_size_factor, estd_db_time,
71                  estd_db_time_factor from v$memory_target_advice
72                  order by memory_size)
73     loop
74       feature_usage := feature_usage||':msz:'||item.memory_size||
75                        ':sf:'||item.memory_size_factor||
76                        ':time:'||item.estd_db_time||
77                        ':tf:'||item.estd_db_time_factor;
78     end loop;
79 
80     -- get v$system_event info for SGA events
81     for item in (select substr(event, 0, 15) evt, total_waits, time_waited
82                  from v$system_event where event like '%SGA%')
83     loop
84       feature_usage := feature_usage||':event:'||item.evt||':waits:'||
85                        item.total_waits||':time:'||item.time_waited;
86     end loop;
87 
88     feature_info := to_clob(feature_usage);
89 
90   end if;
91 
92 end;