-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathawr_bas.sql
More file actions
148 lines (127 loc) · 4.06 KB
/
awr_bas.sql
File metadata and controls
148 lines (127 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
-- File name: awr_bas.sql
-- Purpose: generate AWR report between two baselines id
-- Author: Jeremy Baumont
-- Copyright: Apache License v2.0
-- Usage: @awr_bas
-- Parameters: first_baseline_id: baseline id
-- second_baseline_id: baseline id
--------------------------------------------------------------------------------
set feedback off
set sqlblanklines on
accept first_baseline_id -
prompt 'Enter value for first baseline id (Default: 1): ' -
default 1
accept second_baseline_id -
prompt 'Enter value for second baseline id (Default: 2): ' -
default 2
CREATE OR REPLACE DIRECTORY awr_reports_dir AS '/var/tmp';
GRANT READ ON DIRECTORY awr_reports_dir TO DBA;
GRANT WRITE ON DIRECTORY awr_reports_dir TO DBA;
set serveroutput on
DECLARE
l_dbid1 NUMBER;
l_inst_num1 NUMBER;
l_bid1 NUMBER;
l_eid1 NUMBER;
l_inst_nam1 VARCHAR2(4000);
l_dbid2 NUMBER;
l_inst_num2 NUMBER;
l_bid2 NUMBER;
l_eid2 NUMBER;
l_inst_nam2 VARCHAR2(4000);
l_file UTL_FILE.file_type;
l_file_name VARCHAR(50);
BEGIN
BEGIN
SELECT dbid, start_snap_id, end_snap_id
INTO l_dbid1, l_bid1, l_eid1
FROM
dba_hist_baseline
WHERE
baseline_id = &first_baseline_id;
SELECT value
INTO l_inst_nam1
FROM
v$parameter
WHERE
name = 'instance_name';
SELECT instance_number
INTO l_inst_num1
FROM
v$instance
WHERE
instance_name = l_inst_nam1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line(' ');
dbms_output.put_line('ERROR: can not retrieve info '
|| 'for baseline id: ' || &first_baseline_id);
dbms_output.put_line(' ');
END;
BEGIN
SELECT dbid, start_snap_id, end_snap_id
INTO l_dbid2, l_bid2, l_eid2
FROM
dba_hist_baseline
WHERE
baseline_id = &second_baseline_id;
SELECT value
INTO l_inst_nam2
FROM
v$parameter
WHERE
name = 'instance_name';
SELECT instance_number
INTO l_inst_num2
FROM
v$instance
WHERE
instance_name = l_inst_nam2;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line(' ');
dbms_output.put_line('ERROR: can not retrieve info '
|| 'for baseline id: ' || &second_baseline_id);
dbms_output.put_line(' ');
END;
l_file := UTL_FILE.fopen('AWR_REPORTS_DIR', 'awr_bl_' || &first_baseline_id || '_'
|| &second_baseline_id || '.htm', 'w', 32767);
FOR cur_rep IN (
SELECT output
FROM
TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(
l_dbid1,
l_inst_num1,
l_bid1,
l_eid1,
l_dbid2,
l_inst_num2,
l_bid2,
l_eid2
)
)
)
LOOP
UTL_FILE.put_line(l_file, cur_rep.output);
END LOOP;
UTL_FILE.fclose(l_file);
dbms_output.put_line(' ');
dbms_output.put_line('AWR baseline report created at: ' ||
'awr_bl_' || &first_baseline_id || '_'
|| &second_baseline_id || '.htm');
dbms_output.put_line(' ');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line(' ');
dbms_output.put_line('ERROR: can not generate AWR report');
dbms_output.put_line(' ');
END;
/
undef start_time
undef end_time
undef baseline_name
undef dbid
undef expiration
set serveroutput off
set sqlblanklines off
set feedback on