<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D</id>
	<title>AWR 리포트 분석 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D&amp;action=history"/>
	<updated>2026-11-04T06:05:39Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D&amp;diff=1995&amp;oldid=prev</id>
		<title>Dbstudy: 상단 배너를 {{타이틀 주제}} 틀로 교체</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D&amp;diff=1995&amp;oldid=prev"/>
		<updated>2026-11-04T04:26:22Z</updated>

		<summary type="html">&lt;p&gt;상단 배너를 {{타이틀 주제}} 틀로 교체&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026년 11월 4일 (수) 13:26 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{타이틀 주제&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;&lt;/del&gt;ORACLE SQL TUNING · DIAGNOSTICS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|부제 &lt;/ins&gt;= ORACLE SQL TUNING · DIAGNOSTICS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;&lt;/del&gt;AWR 리포트 분석&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|제목 &lt;/ins&gt;= AWR 리포트 분석&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;&lt;/del&gt;DB Time 중심의 분석법 — 리포트 생성부터 섹션별 해석, ASH 연계, 문제 SQL 도출까지&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|설명 &lt;/ins&gt;= DB Time 중심의 분석법 — 리포트 생성부터 섹션별 해석, ASH 연계, 문제 SQL 도출까지&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|색상 &lt;/ins&gt;= &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;보라&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;span style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;&lt;/del&gt;선수 학습 · [[SQL 튜닝 입문]] 9장&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/span&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|배지1 &lt;/ins&gt;= 선수 학습 · [[SQL 튜닝 입문]] 9장&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;span style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;&lt;/del&gt;커리큘럼 · 11주차&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/span&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|배지2 &lt;/ins&gt;= 커리큘럼 · 11주차&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;span style&lt;/del&gt;=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;&lt;/del&gt;라이선스 · Diagnostics Pack&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/span&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|배지3 &lt;/ins&gt;= 라이선스 · Diagnostics Pack&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin-bottom:18px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin-bottom:18px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D&amp;diff=1985&amp;oldid=prev</id>
		<title>Dbstudy: 새 문서: &lt;div style=&quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&quot;&gt; &lt;div style=&quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&quot;&gt;ORACLE SQL TUNING · DIAGNOSTICS&lt;/div&gt; &lt;div style=&quot;font-size:28px;font-weight:700;line-height:1.3;&quot;&gt;AWR 리포트 분석&lt;/div&gt; &lt;div style=&quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&quot;&gt;DB Tim...</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=AWR_%EB%A6%AC%ED%8F%AC%ED%8A%B8_%EB%B6%84%EC%84%9D&amp;diff=1985&amp;oldid=prev"/>
		<updated>2026-11-04T03:57:08Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt; &amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;ORACLE SQL TUNING · DIAGNOSTICS&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;AWR 리포트 분석&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;DB Tim...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;ORACLE SQL TUNING · DIAGNOSTICS&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;AWR 리포트 분석&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;DB Time 중심의 분석법 — 리포트 생성부터 섹션별 해석, ASH 연계, 문제 SQL 도출까지&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;선수 학습 · [[SQL 튜닝 입문]] 9장&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 11주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;라이선스 · Diagnostics Pack&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin-bottom:18px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
ℹ AWR·ASH 및 &amp;lt;code&amp;gt;DBA_HIST_*&amp;lt;/code&amp;gt; 뷰 조회는 Enterprise Edition의 &amp;#039;&amp;#039;&amp;#039;Diagnostics Pack&amp;#039;&amp;#039;&amp;#039; 라이선스가 필요하다. 라이선스가 없다면 &amp;#039;&amp;#039;&amp;#039;Statspack&amp;#039;&amp;#039;&amp;#039;(무료)으로 같은 분석 흐름을 적용할 수 있다. 사용 여부는 &amp;lt;code&amp;gt;CONTROL_MANAGEMENT_PACK_ACCESS&amp;lt;/code&amp;gt; 파라미터로 확인한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. AWR 개요 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 항목 !! 내용&lt;br /&gt;
|-&lt;br /&gt;
| AWR (Automatic Workload Repository) || 인스턴스 성능 통계를 주기적으로 &amp;#039;&amp;#039;&amp;#039;스냅샷&amp;#039;&amp;#039;&amp;#039;으로 저장하는 저장소 (SYSAUX)&lt;br /&gt;
|-&lt;br /&gt;
| 스냅샷 주기 / 보관 (기본) || &amp;#039;&amp;#039;&amp;#039;60분&amp;#039;&amp;#039;&amp;#039; / &amp;#039;&amp;#039;&amp;#039;8일&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 리포트 원리 || 두 스냅샷 사이의 &amp;#039;&amp;#039;&amp;#039;누적 통계 차이(Delta)&amp;#039;&amp;#039;&amp;#039;를 보여준다&lt;br /&gt;
|-&lt;br /&gt;
| ASH (Active Session History) || 활성 세션 상태를 &amp;#039;&amp;#039;&amp;#039;1초&amp;#039;&amp;#039;&amp;#039;마다 메모리에 샘플링, 그중 1/10을 AWR(&amp;lt;code&amp;gt;DBA_HIST_ACTIVE_SESS_HISTORY&amp;lt;/code&amp;gt;)에 저장&lt;br /&gt;
|-&lt;br /&gt;
| ADDM || AWR 스냅샷을 자동 분석해 권고 사항을 제시&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 현재 설정 확인 / 변경 (예: 30분 주기, 31일 보관)&lt;br /&gt;
SELECT snap_interval, retention FROM dba_hist_wr_control;&lt;br /&gt;
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval =&amp;gt; 30, retention =&amp;gt; 31*24*60);&lt;br /&gt;
&lt;br /&gt;
-- 수동 스냅샷 (부하 테스트 전후 등)&lt;br /&gt;
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;&lt;br /&gt;
&lt;br /&gt;
-- 스냅샷 목록&lt;br /&gt;
SELECT snap_id, begin_interval_time, end_interval_time&lt;br /&gt;
  FROM dba_hist_snapshot&lt;br /&gt;
 WHERE begin_interval_time &amp;gt;= SYSDATE - 1&lt;br /&gt;
 ORDER BY snap_id;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. 리포트 생성 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 스크립트 (&amp;lt;code&amp;gt;$ORACLE_HOME/rdbms/admin&amp;lt;/code&amp;gt;) !! 용도&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;awrrpt.sql&amp;lt;/code&amp;gt; || 현재 인스턴스 AWR 리포트&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;awrrpti.sql&amp;lt;/code&amp;gt; || 특정 DBID·인스턴스 지정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;awrgrpt.sql&amp;lt;/code&amp;gt; || RAC 전체 인스턴스 통합 (Global) 리포트&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;awrddrpt.sql&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;두 구간 비교&amp;#039;&amp;#039;&amp;#039; (Compare Periods) — &amp;quot;어제 vs 오늘&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;awrsqrpt.sql&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;특정 SQL_ID&amp;#039;&amp;#039;&amp;#039; 상세 리포트 (계획별 통계)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ashrpt.sql&amp;lt;/code&amp;gt; || ASH 리포트 (분 단위 짧은 구간 분석)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;addmrpt.sql&amp;lt;/code&amp;gt; || ADDM 분석 결과&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- SQL*Plus에서&lt;br /&gt;
SQL&amp;gt; @?/rdbms/admin/awrrpt.sql&lt;br /&gt;
-- report_type: html (권장) / text, num_days, begin_snap, end_snap, report_name 입력&lt;br /&gt;
&lt;br /&gt;
-- 또는 함수로 직접 생성&lt;br /&gt;
SELECT output&lt;br /&gt;
  FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(&lt;br /&gt;
               l_dbid =&amp;gt; (SELECT dbid FROM v$database),&lt;br /&gt;
               l_inst_num =&amp;gt; 1, l_bid =&amp;gt; 1234, l_eid =&amp;gt; 1235));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;구간 선택이 분석의 절반&amp;#039;&amp;#039;&amp;#039; — 문제 시점을 포함한 &amp;#039;&amp;#039;&amp;#039;짧은 구간&amp;#039;&amp;#039;&amp;#039;(1~2개 스냅샷)을 선택한다. 24시간 리포트는 평균에 묻혀 문제가 보이지 않는다. 문제 구간과 &amp;#039;&amp;#039;&amp;#039;정상 구간&amp;#039;&amp;#039;&amp;#039;을 &amp;lt;code&amp;gt;awrddrpt.sql&amp;lt;/code&amp;gt;로 비교하면 원인이 훨씬 빨리 드러난다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 분석의 핵심 — DB Time ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f7f2fa;border:1px solid #e3d3ee;border-radius:10px;padding:16px 22px;margin:12px 0;text-align:center;font-size:16px;color:#3b1a4f;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DB Time&amp;#039;&amp;#039;&amp;#039; = 모든 포그라운드 세션이 DB에서 보낸 시간의 합 = &amp;#039;&amp;#039;&amp;#039;DB CPU&amp;#039;&amp;#039;&amp;#039; + &amp;#039;&amp;#039;&amp;#039;Non-Idle Wait Time&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;AAS&amp;#039;&amp;#039;&amp;#039; (Average Active Sessions) = DB Time ÷ Elapsed Time&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! AAS 해석 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| AAS &amp;amp;lt; CPU 코어 수 || 대체로 여유 있음 (그래도 특정 대기가 응답시간을 지배할 수 있음)&lt;br /&gt;
|-&lt;br /&gt;
| AAS ≈ CPU 코어 수 || 포화 근접&lt;br /&gt;
|-&lt;br /&gt;
| AAS ≫ CPU 코어 수 || 세션이 CPU 또는 자원을 기다리며 줄 서 있음 → 대기 이벤트 확인&lt;br /&gt;
|}&lt;br /&gt;
* 예: Elapsed 60분, DB Time 480분 → &amp;#039;&amp;#039;&amp;#039;AAS 8&amp;#039;&amp;#039;&amp;#039; — 평균 8개 세션이 동시에 일하거나 기다리고 있었다.&lt;br /&gt;
&lt;br /&gt;
== 4. 섹션별 읽는 법 ==&lt;br /&gt;
=== 4.1 분석 순서 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;① 헤더&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;구간·DB Time·AAS&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7d3c98;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;② Load Profile&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부하의 양과 성격&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#6c3483;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;③ Top Events&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;시간을 어디에 썼나&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#5b2c6f;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;④ Time Model&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;SQL·Parse·PL/SQL&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#4a235a;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;⑤ SQL Statistics&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;범인 SQL 찾기&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#3b1a4f;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;⑥ Segment 등&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;객체·RAC·IO 상세&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Report Header ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
              Snap Id      Snap Time      Sessions Curs/Sess&lt;br /&gt;
            --------- ------------------- -------- ---------&lt;br /&gt;
Begin Snap:     51234 04-Nov-26 10:00:12       812       3.1&lt;br /&gt;
  End Snap:     51235 04-Nov-26 11:00:05       845       3.3&lt;br /&gt;
   Elapsed:               59.88 (mins)&lt;br /&gt;
   DB Time:              478.92 (mins)          ← AAS ≈ 8.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Load Profile ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 지표 !! 의미 !! 보는 법&lt;br /&gt;
|-&lt;br /&gt;
| DB Time(s) / DB CPU(s) per second || 초당 DB Time·CPU = AAS / CPU 사용 세션 수 || DB CPU 비중이 낮으면 대기가 지배&lt;br /&gt;
|-&lt;br /&gt;
| Logical read (blocks) || 초당 Logical Read || 평소 대비 급증 → 비효율 SQL 의심&lt;br /&gt;
|-&lt;br /&gt;
| Physical read (blocks) || 초당 디스크 읽기 ||&lt;br /&gt;
|-&lt;br /&gt;
| Redo size (bytes) || 초당 Redo 생성량 || 배치·대량 DML 규모&lt;br /&gt;
|-&lt;br /&gt;
| User calls || 클라이언트 호출 수 || 애플리케이션 호출 패턴&lt;br /&gt;
|-&lt;br /&gt;
| Parses / Hard parses (SQL) || 초당 파싱 / 하드 파싱 || &amp;#039;&amp;#039;&amp;#039;Hard parse가 초당 수십 이상&amp;#039;&amp;#039;&amp;#039;이면 바인드 변수 미사용 의심&lt;br /&gt;
|-&lt;br /&gt;
| Executes (SQL) || 초당 SQL 실행 수 ||&lt;br /&gt;
|-&lt;br /&gt;
| Transactions || 초당 커밋+롤백 || 업무량 기준값&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Instance Efficiency Percentages ===&lt;br /&gt;
* Buffer Hit %, Library Hit %, Soft Parse %, Execute to Parse % 등&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;비율만으로 판단하지 않는다&amp;#039;&amp;#039;&amp;#039;. 비효율 SQL이 같은 블록을 반복해 읽으면 Buffer Hit는 오히려 99%를 넘는다.&lt;br /&gt;
* 참고용으로 보되, 평소 값과 크게 다를 때(예: Soft Parse % 급락) 단서로 활용한다.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Top 10 Foreground Events by Total Wait Time ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Event                              Waits   Total Wait Time (sec)  Avg Wait  % DB time  Wait Class&lt;br /&gt;
------------------------------  --------  ---------------------  --------  ---------  ----------&lt;br /&gt;
DB CPU                                                    9,820              34.2&lt;br /&gt;
db file sequential read        8,412,330                  8,110    0.96ms    28.2      User I/O&lt;br /&gt;
enq: TX - row lock contention      1,204                  4,950    4.11 s    17.2      Application&lt;br /&gt;
log file sync                    912,440                  1,830    2.01ms     6.4      Commit&lt;br /&gt;
gc buffer busy acquire           310,221                    920    2.97ms     3.2      Cluster&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 대기 이벤트 !! 의미 !! 1차 조치 방향&lt;br /&gt;
|-&lt;br /&gt;
| DB CPU || CPU 사용 (대기 아님) || Logical Read 상위 SQL 튜닝, 하드 파싱 확인&lt;br /&gt;
|-&lt;br /&gt;
| db file sequential read || Single Block I/O (인덱스, 랜덤 액세스) || &amp;#039;&amp;#039;&amp;#039;SQL ordered by Reads/Gets&amp;#039;&amp;#039;&amp;#039; — 인덱스·랜덤 액세스 튜닝&lt;br /&gt;
|-&lt;br /&gt;
| db file scattered read || Multi Block I/O (Full Scan, 버퍼 캐시 경유) || Full Scan SQL 확인, 인덱스·파티션 검토&lt;br /&gt;
|-&lt;br /&gt;
| direct path read || Full Scan을 PGA로 직접 읽음 (Serial Direct Read, 병렬) || 대량 스캔 SQL, Exadata에서는 Smart Scan 여부&lt;br /&gt;
|-&lt;br /&gt;
| direct path read/write temp || 정렬·해시 Temp 사용 || PGA 부족 또는 대량 정렬 SQL&lt;br /&gt;
|-&lt;br /&gt;
| enq: TX - row lock contention || 행 락 대기 || 애플리케이션 트랜잭션 설계, 블로킹 세션 (ASH)&lt;br /&gt;
|-&lt;br /&gt;
| log file sync || 커밋 시 LGWR 기록 대기 || 커밋 빈도 과다, Redo 로그 디스크 성능&lt;br /&gt;
|-&lt;br /&gt;
| latch: shared pool / library cache: mutex X || 파싱 경합 || 하드 파싱, 바인드 변수&lt;br /&gt;
|-&lt;br /&gt;
| gc buffer busy / gc cr request 등 || RAC 블록 전송 대기 || 핫 블록, 인스턴스 간 같은 데이터 동시 변경&lt;br /&gt;
|-&lt;br /&gt;
| read by other session || 다른 세션이 읽는 블록을 기다림 || 같은 블록을 동시에 대량 읽는 SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.6 Time Model Statistics ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 해석&lt;br /&gt;
|-&lt;br /&gt;
| sql execute elapsed time || SQL 실행 시간 — 보통 DB Time의 대부분&lt;br /&gt;
|-&lt;br /&gt;
| parse time elapsed / hard parse elapsed time || 파싱 비중이 크면 바인드 변수·커서 공유 문제&lt;br /&gt;
|-&lt;br /&gt;
| PL/SQL execution elapsed time || PL/SQL 엔진 내부 처리 시간&lt;br /&gt;
|-&lt;br /&gt;
| connection management call elapsed time || 커넥션 생성·종료 과다 → 커넥션 풀 확인&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.7 SQL Statistics — 문제 SQL 찾기 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 섹션 !! 언제 보나&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Elapsed Time || &amp;#039;&amp;#039;&amp;#039;가장 먼저&amp;#039;&amp;#039;&amp;#039; — DB Time에 가장 많이 기여한 SQL&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by CPU Time || DB CPU가 Top 이벤트일 때&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by User I/O Wait Time || I/O 대기가 Top 이벤트일 때&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Gets || Logical Read 상위 — &amp;#039;&amp;#039;&amp;#039;튜닝 효과가 가장 확실한 대상&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Reads || Physical Read 상위&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Executions || 실행 횟수 상위 — 건당 비용 × 횟수 관점&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Parse Calls || 파싱 과다 SQL&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Version Count || Child Cursor가 많은 SQL — 커서 공유 실패&lt;br /&gt;
|-&lt;br /&gt;
| SQL ordered by Cluster Wait Time || RAC 대기 상위 SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #8e44ad;background:#f7f2fa;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;두 가지 유형을 구분한다&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
① &amp;#039;&amp;#039;&amp;#039;건당 비용이 큰 SQL&amp;#039;&amp;#039;&amp;#039; (Elapsed/Exec, Gets/Exec 큼) — 실행계획 튜닝 대상&amp;lt;br/&amp;gt;&lt;br /&gt;
② &amp;#039;&amp;#039;&amp;#039;건당은 작지만 실행 횟수가 막대한 SQL&amp;#039;&amp;#039;&amp;#039; (Executions 상위) — 호출 방식 개선(배열 처리, 캐싱, 집합 처리) 대상&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.8 그 외 주요 섹션 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Segment Statistics&amp;#039;&amp;#039;&amp;#039; — Logical/Physical Reads, Row Lock Waits, ITL Waits, GC Buffer Busy 상위 &amp;#039;&amp;#039;&amp;#039;객체&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IOStat by Function / Filetype&amp;#039;&amp;#039;&amp;#039; — I/O가 어디서 발생하는지 (Buffer Cache Reads, Direct Reads, LGWR, DBWR)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PGA / SGA Advisory&amp;#039;&amp;#039;&amp;#039; — 메모리 크기 변경 시 예상 효과&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RAC Statistics&amp;#039;&amp;#039;&amp;#039; (RAC) — Global Cache 블록 전송량·지연, 인스턴스 간 Interconnect&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;init.ora Parameters&amp;#039;&amp;#039;&amp;#039; — 구간 중 파라미터 값, 변경 이력 확인&lt;br /&gt;
&lt;br /&gt;
== 5. ASH로 좁혀 들어가기 ==&lt;br /&gt;
AWR이 &amp;quot;1시간 평균&amp;quot;이라면, ASH는 &amp;quot;&amp;#039;&amp;#039;&amp;#039;그 순간 누가 무엇을&amp;#039;&amp;#039;&amp;#039;&amp;quot; 하고 있었는지를 보여준다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 특정 시간대 Top SQL / Event (메모리, 최근 수 시간)&lt;br /&gt;
SELECT sql_id, NVL(event, &amp;#039;ON CPU&amp;#039;) AS event, COUNT(*) AS samples&lt;br /&gt;
  FROM v$active_session_history&lt;br /&gt;
 WHERE sample_time BETWEEN TIMESTAMP &amp;#039;2026-11-04 10:20:00&amp;#039; AND TIMESTAMP &amp;#039;2026-11-04 10:30:00&amp;#039;&lt;br /&gt;
 GROUP BY sql_id, NVL(event, &amp;#039;ON CPU&amp;#039;)&lt;br /&gt;
 ORDER BY samples DESC FETCH FIRST 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 과거 구간 (AWR 저장분, 샘플 1개 ≈ 10초)&lt;br /&gt;
SELECT sql_id, NVL(event, &amp;#039;ON CPU&amp;#039;) AS event, COUNT(*) * 10 AS approx_sec&lt;br /&gt;
  FROM dba_hist_active_sess_history&lt;br /&gt;
 WHERE sample_time BETWEEN TIMESTAMP &amp;#039;2026-11-03 02:00:00&amp;#039; AND TIMESTAMP &amp;#039;2026-11-03 03:00:00&amp;#039;&lt;br /&gt;
 GROUP BY sql_id, NVL(event, &amp;#039;ON CPU&amp;#039;)&lt;br /&gt;
 ORDER BY approx_sec DESC FETCH FIRST 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기의 블로커 찾기&lt;br /&gt;
SELECT sample_time, session_id, blocking_session, sql_id, event&lt;br /&gt;
  FROM v$active_session_history&lt;br /&gt;
 WHERE event = &amp;#039;enq: TX - row lock contention&amp;#039;&lt;br /&gt;
   AND sample_time &amp;gt;= SYSDATE - 1/24&lt;br /&gt;
 ORDER BY sample_time;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. AWR 데이터 직접 조회 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 스냅샷 구간별 Top SQL (Elapsed 기준)&lt;br /&gt;
SELECT s.sql_id,&lt;br /&gt;
       SUM(s.executions_delta)                                   AS execs,&lt;br /&gt;
       ROUND(SUM(s.elapsed_time_delta)/1e6)                      AS ela_sec,&lt;br /&gt;
       ROUND(SUM(s.buffer_gets_delta)/NULLIF(SUM(s.executions_delta),0)) AS gets_per_exec,&lt;br /&gt;
       MAX(s.plan_hash_value)                                    AS phv&lt;br /&gt;
  FROM dba_hist_sqlstat s&lt;br /&gt;
 WHERE s.snap_id BETWEEN &amp;amp;begin_snap AND &amp;amp;end_snap&lt;br /&gt;
 GROUP BY s.sql_id&lt;br /&gt;
 ORDER BY ela_sec DESC FETCH FIRST 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 시간대별 DB Time 추이 (부하 패턴 파악)&lt;br /&gt;
SELECT sn.begin_interval_time,&lt;br /&gt;
       ROUND((tm.value - LAG(tm.value) OVER (ORDER BY sn.snap_id)) / 1e6 / 60, 1) AS db_time_min&lt;br /&gt;
  FROM dba_hist_sys_time_model tm&lt;br /&gt;
  JOIN dba_hist_snapshot sn&lt;br /&gt;
    ON sn.snap_id = tm.snap_id AND sn.dbid = tm.dbid AND sn.instance_number = tm.instance_number&lt;br /&gt;
 WHERE tm.stat_name = &amp;#039;DB time&amp;#039;&lt;br /&gt;
   AND sn.instance_number = 1&lt;br /&gt;
   AND sn.begin_interval_time &amp;gt;= SYSDATE - 7&lt;br /&gt;
 ORDER BY sn.snap_id;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 인스턴스 재시작 구간에서는 누적값이 초기화되어 음수가 나올 수 있으므로 제외한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Python으로 일일 Top SQL 추출 → 리포트 자동화 예 (oracledb)&lt;br /&gt;
import oracledb&lt;br /&gt;
sql = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
SELECT sql_id, SUM(executions_delta) execs,&lt;br /&gt;
       ROUND(SUM(elapsed_time_delta)/1e6) ela_sec&lt;br /&gt;
  FROM dba_hist_sqlstat s JOIN dba_hist_snapshot n&lt;br /&gt;
    ON n.snap_id = s.snap_id AND n.dbid = s.dbid AND n.instance_number = s.instance_number&lt;br /&gt;
 WHERE n.begin_interval_time &amp;gt;= TRUNC(SYSDATE) - 1&lt;br /&gt;
   AND n.begin_interval_time &amp;lt;  TRUNC(SYSDATE)&lt;br /&gt;
 GROUP BY sql_id ORDER BY ela_sec DESC FETCH FIRST 20 ROWS ONLY&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
with oracledb.connect(user=USER, password=PWD, dsn=DSN) as conn:&lt;br /&gt;
    for row in conn.cursor().execute(sql):&lt;br /&gt;
        print(row)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 분석 시나리오 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;시나리오 1. &amp;quot;오전 10시대에 전체 화면이 느렸다&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:8px;&amp;quot;&amp;gt;&lt;br /&gt;
# 10:00~11:00 AWR — AAS 8 (평소 2), Top Event &amp;lt;code&amp;gt;db file sequential read&amp;lt;/code&amp;gt; 28%, DB CPU 34%&lt;br /&gt;
# Load Profile — Logical Read 평소의 4배&lt;br /&gt;
# SQL ordered by Gets — 1위 SQL_ID &amp;lt;code&amp;gt;7xk2…&amp;lt;/code&amp;gt;, Gets/Exec 125,000, Executions 1,800&lt;br /&gt;
# &amp;lt;code&amp;gt;awrsqrpt.sql&amp;lt;/code&amp;gt; — 어제까지 PHV 1234567 (Gets/Exec 40), 오늘 PHV 7654321로 &amp;#039;&amp;#039;&amp;#039;계획 변경&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# 원인 — 새벽 통계 재수집 후 카디널리티 추정 변화로 인덱스 선택 변경&lt;br /&gt;
# 조치 — 이전 계획을 SQL Plan Baseline으로 고정(긴급) → 통계·인덱스 근본 원인 분석&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;시나리오 2. &amp;quot;특정 업무만 수 초씩 멈춘다&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:8px;&amp;quot;&amp;gt;&lt;br /&gt;
# AWR Top Event — &amp;lt;code&amp;gt;enq: TX - row lock contention&amp;lt;/code&amp;gt; 17%, Avg Wait 4초&lt;br /&gt;
# Segment Statistics — Row Lock Waits 1위 &amp;lt;code&amp;gt;TB_STOCK&amp;lt;/code&amp;gt;&lt;br /&gt;
# ASH — 대기 세션의 &amp;lt;code&amp;gt;BLOCKING_SESSION&amp;lt;/code&amp;gt; 추적 → 특정 배치 프로그램이 대량 UPDATE 후 커밋 지연&lt;br /&gt;
# 조치 — 배치 커밋 단위 조정, 처리 순서 통일(데드락 예방), 온라인 시간대 분리&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;시나리오 3. &amp;quot;CPU가 항상 80% 이상이다&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:8px;&amp;quot;&amp;gt;&lt;br /&gt;
# Top Event — DB CPU 70%&lt;br /&gt;
# Load Profile — Hard parses 초당 300, Time Model — hard parse elapsed time 25%&lt;br /&gt;
# SQL ordered by Version Count / Parse Calls — 리터럴 SQL 다수&lt;br /&gt;
# 조치 — 애플리케이션 바인드 변수 적용 (근본), 임시 대응으로 &amp;lt;code&amp;gt;CURSOR_SHARING=FORCE&amp;lt;/code&amp;gt; 검토(부작용 테스트 필수)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. AWR 분석 체크리스트 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;border-radius:10px;padding:14px 22px;line-height:1.9;&amp;quot;&amp;gt;&lt;br /&gt;
□ 문제 시점을 포함한 &amp;#039;&amp;#039;&amp;#039;짧은 구간&amp;#039;&amp;#039;&amp;#039;을 선택했는가 / 정상 구간과 비교했는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ &amp;#039;&amp;#039;&amp;#039;DB Time과 AAS&amp;#039;&amp;#039;&amp;#039;로 부하 수준을 판단했는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ Top Events에서 &amp;#039;&amp;#039;&amp;#039;DB CPU vs 대기&amp;#039;&amp;#039;&amp;#039; 비중과 상위 Wait Class를 확인했는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ Load Profile에서 평소 대비 &amp;#039;&amp;#039;&amp;#039;급증한 지표&amp;#039;&amp;#039;&amp;#039;를 찾았는가 (Logical Read, Hard Parse, Redo)&amp;lt;br/&amp;gt;&lt;br /&gt;
□ Top 이벤트에 대응하는 &amp;#039;&amp;#039;&amp;#039;SQL ordered by …&amp;#039;&amp;#039;&amp;#039; 섹션에서 대상 SQL을 뽑았는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ 대상 SQL의 &amp;#039;&amp;#039;&amp;#039;계획 변경 이력&amp;#039;&amp;#039;&amp;#039;(PHV)을 확인했는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ Segment Statistics로 &amp;#039;&amp;#039;&amp;#039;핫 객체&amp;#039;&amp;#039;&amp;#039;를 확인했는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ 짧은 순간의 현상은 &amp;#039;&amp;#039;&amp;#039;ASH&amp;#039;&amp;#039;&amp;#039;로 세션·블로커까지 좁혔는가&amp;lt;br/&amp;gt;&lt;br /&gt;
□ 결론을 &amp;#039;&amp;#039;&amp;#039;수치&amp;#039;&amp;#039;&amp;#039;(DB Time 기여도, Gets/Exec)로 문서화했는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;이전&amp;#039;&amp;#039;&amp;#039; ← [[조인 튜닝 심화]] · [[인덱스 튜닝 심화]] · [[실행계획 읽기 실습]] &amp;amp;nbsp;|&amp;amp;nbsp; &amp;#039;&amp;#039;&amp;#039;처음으로&amp;#039;&amp;#039;&amp;#039; → [[SQL 튜닝 입문]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:SQL 튜닝]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:AWR]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
</feed>