AWR Report Analysis Dashboard

No file selected.

${title}

${value}

${note ? `

${note}

` : ''}
`; const renderTable = (elId, headers, data) => { const el = document.getElementById(elId); let html = `${headers.map(h => `${h}`).join('')}`; html += data.map(row => `${row.map(cell => `${cell}`).join('')}`).join(''); el.innerHTML = html + ''; }; function displaySummary(summary, load) { const avgActiveSessions = (summary.dbTime / (summary.elapsed * 60)).toFixed(2); document.getElementById('awr-summary-kpis').innerHTML = renderKpi('DB Time (s)', summary.dbTime.toLocaleString()) + renderKpi('Elapsed (min)', summary.elapsed.toLocaleString()) + renderKpi('Avg Active Sessions', avgActiveSessions, `${summary.cpus} CPUs`); document.getElementById('awr-load-kpis').innerHTML = renderKpi('Logical Reads', load.logicalReads) + renderKpi('Physical Reads', load.physicalReads) + renderKpi('Hard Parses', load.hardParses); } function displayTopEvents(events) { renderTable('awr-top-events-table', ['Event', 'Waits', 'Time(s)', '%DB Time', 'Avg Wait(ms)'], events); const chartCtx = document.getElementById('awr-top-events-chart').getContext('2d'); const labels = events.map(e => e[0]); const data = events.map(e => parseFloat(e[3])); if(chartInstances.topEvents) chartInstances.topEvents.destroy(); chartInstances.topEvents = new Chart(chartCtx, {type:'doughnut', data: {labels, datasets:[{data}]}, options: {responsive: true, maintainAspectRatio: false}}); } function displayTopSql(byCpu, byGets, byReads) { const tabsContainer = document.getElementById('awr-sql-tabs-container'); const contentContainer = document.getElementById('awr-sql-content-container'); tabsContainer.innerHTML = ``; contentContainer.innerHTML = `
`; renderTable('awr-sql-cpu-table', ['CPU Time(s)', 'Execs', 'Time/Exec', '%Total', 'SQL ID'], byCpu); renderTable('awr-sql-gets-table', ['Buffer Gets', 'Execs', 'Gets/Exec', '%Total', 'SQL ID'], byGets); renderTable('awr-sql-reads-table', ['Phys Reads', 'Execs', 'Reads/Exec', '%Total', 'SQL ID'], byReads); tabsContainer.addEventListener('click', (e) => { if(e.target.tagName === 'BUTTON') { document.querySelectorAll('.awr-sql-tab-btn, .awr-sql-tab-content').forEach(el => el.classList.remove('active')); e.target.classList.add('active'); document.getElementById(`sql-tab-${e.target.dataset.tab}`).classList.add('active'); } }); } function displaySegments(segments, tableId) { renderTable(tableId, ['Owner', 'Object', 'Subobject', 'Type', 'Physical Reads'], segments); } window.awrDownloadPDF = () => { html2canvas(document.getElementById('awr-pdf-content'), { scale: 2 }).then(canvas => { const pdf = new jsPDF({ orientation: 'landscape', unit: 'pt', format: 'a4' }); pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 40, 40, pdf.internal.pageSize.getWidth() - 80, 0); pdf.save('AWR_Analysis_Dashboard.pdf'); }); }; });
Scroll to Top