<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matsuo &#8211; Furushima</title>
	<atom:link href="https://furushima.com.br/blog/author/matsuo/feed/" rel="self" type="application/rss+xml" />
	<link>https://furushima.com.br</link>
	<description>- Consultoria de Banco de Dados &#124; Furushima</description>
	<lastBuildDate>Wed, 19 Mar 2025 19:33:46 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://furushima.com.br/wp-content/uploads/2024/02/cropped-favicon-32x32.png</url>
	<title>Matsuo &#8211; Furushima</title>
	<link>https://furushima.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como usar Hint no Oracle?</title>
		<link>https://furushima.com.br/blog/como-usar-hint-no-oracle/</link>
					<comments>https://furushima.com.br/blog/como-usar-hint-no-oracle/#respond</comments>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Mon, 07 Apr 2025 19:31:00 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[Performance&Tuning]]></category>
		<category><![CDATA[TUNING]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2662</guid>

					<description><![CDATA[Super Dicionário de Hints do Oracle Quando trabalhamos com Oracle, um ponto importante para otimizar o desempenho das consultas SQL é entender como orientar o otimizador a escolher determinados planos de execução. É exatamente para isso que servem os hints. Ao inserir hints (dicas) diretamente na consulta, podemos influenciar o Cost Based Optimizer (CBO) a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"><strong>Super Dicionário de Hints do Oracle</strong></h1>



<p>Quando trabalhamos com Oracle, um ponto importante para otimizar o desempenho das consultas SQL é entender como orientar o otimizador a escolher determinados planos de execução. É exatamente para isso que servem os <em>hints</em>. </p>



<p>Ao inserir <em>hints</em> (dicas) diretamente na consulta, podemos influenciar o Cost Based Optimizer (CBO) a tomar decisões mais adequadas em situações específicas. </p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">O que são Hints?</h2>



<p>Os <em>hints</em> são instruções especiais escritas em comentários dentro de uma consulta SQL, que afetam o plano de execução escolhido pelo Oracle. O formato geral é:</p>



<pre class="wp-block-preformatted"></pre>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT /*+ HINT_EXEMPLO */ coluna1, coluna2
FROM tabela
WHERE condicao;" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+ HINT_EXEMPLO */</span><span style="color: #D4D4D4"> coluna1, coluna2</span></span>
<span class="line"><span style="color: #569CD6">FROM</span><span style="color: #D4D4D4"> tabela</span></span>
<span class="line"><span style="color: #569CD6">WHERE</span><span style="color: #D4D4D4"> condicao;</span></span></code></pre></div>



<ul class="wp-block-list">
<li><strong>Comentário especial</strong>: O Oracle reconhece a estrutura <code>/*+ ... */</code> após o <code>SELECT</code>.</li>



<li><strong>Case sensitive</strong>: Tecnicamente, o texto do <em>hint</em> não faz distinção entre maiúsculas e minúsculas, mas é fundamental que a sintaxe e o nome do <em>hint</em> estejam corretos para que ele seja reconhecido.</li>



<li><strong>Uso do CBO</strong>: Qualquer <em>hint</em> (exceto o <code>RULE</code>) instrui o Oracle a usar o <strong>Cost Based Optimizer</strong>. Se a sintaxe do <em>hint</em> estiver incorreta, ele é simplesmente ignorado.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-eb8d26691779070bcb8d87108bbff7bd">A</h2>



<h3 class="wp-block-heading">AND_EQUAL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o otimizador a fazer um “merge scan” de vários índices de coluna única.</li>



<li><strong>Sintaxe</strong>: <code>AND_EQUAL(tabela índice1 índice2 ...)</code></li>



<li><strong>Status</strong>: Depreciado no Oracle 10g e versões posteriores.</li>
</ul>



<h3 class="wp-block-heading">APPEND</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Em instruções <code>INSERT</code>, faz uma inserção em <em>direct path</em>, ignorando espaço livre no bloco. Pode reduzir o volume de <em>redo</em> gerado quando a tabela está em modo <code>NOLOGGING</code>.</li>



<li><strong>Sintaxe</strong>: <code>INSERT /*+ APPEND */ INTO tabela ...</code></li>



<li><strong>Observação</strong>: Exige que a tabela não seja indexada de forma a impedir o uso de <em>bulk inserts</em>, e que não haja triggers ou constraints que impeçam <em>direct path load</em>.</li>



<li><strong>Status</strong>: Suportado em várias versões. Continua válido.</li>
</ul>



<h3 class="wp-block-heading">APPEND_VALUES</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Similar ao <code>APPEND</code>, mas para instruções <code>INSERT ... VALUES</code>, introduzido em versões mais recentes (por volta do Oracle 12c+).</li>



<li><strong>Sintaxe</strong>: <code>INSERT /*+ APPEND_VALUES */ INTO tabela VALUES (...)</code></li>



<li><strong>Observação</strong>: Otimiza a inserção de linhas únicas em modo de <em>direct path</em>. Útil quando não se está usando <code>INSERT SELECT</code>.</li>
</ul>



<h3 class="wp-block-heading">ALL_ROWS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Otimiza a consulta para melhor <em>throughput</em> (menor consumo total de recursos).</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ ALL_ROWS */ ...</code></li>



<li><strong>Status</strong>: Válido e muito comum.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-75474df6ad63a4dc6c74a1d8edfb284e">B</h2>



<h3 class="wp-block-heading">BITMAP</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o uso de um índice Bitmap para acessar a tabela.</li>



<li><strong>Sintaxe</strong>: <code>BITMAP(tabela índice_bitmap)</code></li>



<li><strong>Status</strong>: Em algumas versões é considerado obsoleto ou pouco suportado, pois a detecção automática de bitmap normalmente funciona bem.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-c88d9af5cb9bcce17f04b1d1bb824ee0">C</h2>



<h3 class="wp-block-heading">CACHE / NOCACHE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Controla como os blocos lidos são colocados no Buffer Cache em caso de <em>full table scan</em>.</li>



<li><strong>Sintaxe</strong>: <code>CACHE(tabela)</code> / <code>NOCACHE(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">CHOOSE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Permite ao otimizador escolher entre <em>rule-based</em> e <em>cost-based</em> baseado na presença de estatísticas.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ CHOOSE */ ...</code></li>



<li><strong>Status</strong>: Muito antigo, raramente usado hoje. A partir do 10g, o Oracle praticamente só usa <em>CBO</em>.</li>
</ul>



<h3 class="wp-block-heading">CLUSTER</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força um cluster scan para a tabela.</li>



<li><strong>Sintaxe</strong>: <code>CLUSTER(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">CURSOR_SHARING_EXACT</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desativa a substituição de literais por binds, mesmo que <code>CURSOR_SHARING</code> esteja habilitado no banco.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ CURSOR_SHARING_EXACT */ ...</code></li>
</ul>



<h3 class="wp-block-heading">CARDINALITY</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Informa ao otimizador uma estimativa do número de linhas esperadas da tabela ou subquery.</li>



<li><strong>Sintaxe</strong>: <code>CARDINALITY(tabela ou subquery, linhas)</code></li>



<li><strong>Observação:</strong> Pode ser útil quando as estatísticas não representam corretamente o volume real de dados.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-bcc12ff8a21a32be46ee06df58fb38a3">D</h2>



<h3 class="wp-block-heading">DISTRIBUTE / DISTRIBUTE_JOIN</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força a distribuição específica no join paralelo, semelhante ao PQ_DISTRIBUTE, mas usado principalmente em ambientes Exadata ou ambientes paralelos sofisticados.</li>



<li><strong>Sintaxe</strong>: <code>DISTRIBUTE_JOIN(tabela, método)</code></li>



<li><strong>Observação:</strong> Os métodos mais comuns são BROADCAST, PARTITION, NONE.</li>
</ul>



<h3 class="wp-block-heading">DRIVING_SITE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Em ambientes distribuídos, força a execução remota de parte da query em um site específico.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ DRIVING_SITE(tabela_ou_alias) */ ...</code></li>
</ul>



<h3 class="wp-block-heading">DYNAMIC_SAMPLING</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Controla a coleta de estatísticas dinâmicas em tempo de compilação para melhorar estimativas de seletividade.</li>



<li><strong>Sintaxe</strong>: <code>DYNAMIC_SAMPLING(nível)</code> ou <code>DYNAMIC_SAMPLING(tabela, nível)</code></li>



<li><strong>Valores</strong>: De 0 a 11. Quanto maior, mais esforço (e potencial custo de compilação) para coletar estatísticas. (11 não é documentado , mas ele trabalha como AUTO, legal né? mas trabalha mal.)</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-af7d4726b6ff0e7a1131f279db1a9e55">E</h2>



<h3 class="wp-block-heading">EXPAND_GSET_TO_UNION</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força a expansão de conjuntos (GROUPING SETS) para instruções <code>UNION ALL</code>.</li>



<li><strong>Status</strong>: Depreciado no Oracle 10g.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-a3405e994ad1dc4c70dfa3cc45144c5d">F</h2>



<h3 class="wp-block-heading">FACT / NO_FACT</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Em <em>star transformations</em>, indica se a tabela é ou não considerada <em>fact table</em>.</li>



<li><strong>Sintaxe</strong>: <code>FACT(tabela)</code> / <code>NO_FACT(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">FIRST_ROWS(n)</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Otimiza para resposta rápida dos primeiros <code>n</code> registros.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ FIRST_ROWS(10) */ ...</code></li>
</ul>



<h3 class="wp-block-heading">FULL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força um <em>full table scan</em> na tabela especificada.</li>



<li><strong>Sintaxe</strong>: <code>FULL(tabela)</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-d4e3a30f6c66b144f2eefcc9c72803d5">G</h2>



<h3 class="wp-block-heading">GATHER_PLAN_STATISTICS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Faz o Oracle coletar estatísticas detalhadas de execução para aquela query, que podem ser visualizadas com <code>DBMS_XPLAN.DISPLAY_CURSOR</code>.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ GATHER_PLAN_STATISTICS */ ...</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-a6bff913ee9b04b67767043a722d5461">H</h2>



<h3 class="wp-block-heading">HASH</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força <em>hash scan</em> (normalmente para tabelas em clusters hash).</li>



<li><strong>Sintaxe</strong>: <code>HASH(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">HASH_AJ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Transforma subconsulta <code>NOT IN</code> em <em>hash anti-join</em>.</li>



<li><strong>Sintaxe</strong>: <code>HASH_AJ(tabela)</code></li>



<li><strong>Status</strong>: Depreciado no 10g.</li>
</ul>



<h3 class="wp-block-heading">HASH_SJ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força <em>hash semi-join</em> ou <em>hash anti-join</em>.</li>



<li><strong>Sintaxe</strong>: <code>HASH_SJ(tabela)</code></li>



<li><strong>Status</strong>: Antigo e pouco utilizado em versões modernas.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-279226d7df95ca463b8520465033f853">I</h2>



<h3 class="wp-block-heading">INDEX</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o uso de um índice específico ou conjunto de índices.</li>



<li><strong>Sintaxe</strong>: <code>INDEX(tabela índice)</code> ou <code>INDEX(tabela índice1 índice2 ...)</code></li>
</ul>



<h3 class="wp-block-heading">INDEX_ASC / INDEX_DESC</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força <em>index range scan</em> em ordem ascendente ou descendente.</li>



<li><strong>Sintaxe</strong>: <code>INDEX_ASC(tabela índice)</code> / <code>INDEX_DESC(tabela índice)</code></li>
</ul>



<h3 class="wp-block-heading">INDEX_COMBINE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o otimizador a usar uma combinação de índices Bitmap.</li>



<li><strong>Sintaxe</strong>: <code>INDEX_COMBINE(tabela índice1 índice2 ...)</code></li>
</ul>



<h3 class="wp-block-heading">INDEX_FFS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força <em>fast full index scan</em>, em vez de <em>full table scan</em>.</li>



<li><strong>Sintaxe</strong>: <code>INDEX_FFS(tabela índice)</code></li>
</ul>



<h3 class="wp-block-heading">INDEX_JOIN</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o <em>index join</em> de várias combinações de índices para cobrir todas as colunas necessárias.</li>



<li><strong>Sintaxe</strong>: <code>INDEX_JOIN(tabela índice1 índice2 ...)</code></li>
</ul>



<h3 class="wp-block-heading">INDEX_SS / INDEX_SS_ASC / INDEX_SS_DESC</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força (ou impede) o <em>index skip scan</em> em ordem ascendente/descendente.</li>



<li><strong>Status</strong>: Oracle 10g+.</li>



<li><strong>Sintaxe</strong>: <code>INDEX_SS(tabela índice)</code>, <code>INDEX_SS_ASC(tabela índice)</code>, <code>INDEX_SS_DESC(tabela índice)</code></li>
</ul>



<h3 class="wp-block-heading">NO_INDEX / NO_INDEX_FFS / NO_INDEX_SS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desabilitam uso de índice em geral, <em>fast full index scan</em> ou <em>skip scan</em>, respectivamente.</li>



<li><strong>Sintaxe</strong>: <code>NO_INDEX(tabela índice)</code>, <code>NO_INDEX_FFS(tabela)</code>, <code>NO_INDEX_SS(tabela índice)</code></li>
</ul>



<h3 class="wp-block-heading">INVISIBLE (NO_USE_INVISIBLE_INDEXES / USE_INVISIBLE_INDEXES)</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Controla se o Otimizador pode ou não considerar índices marcados como invisíveis.</li>



<li><strong>Sintaxe</strong>: <code>USE_INVISIBLE_INDEXES</code> / <code>NO_USE_INVISIBLE_INDEXES</code></li>



<li><strong>Status</strong>: Disponível a partir do Oracle 11g R2+ (quando índices invisíveis foram introduzidos).</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-0847033c8f07ab19b2391aa4e33e5d3f">L</h2>



<h3 class="wp-block-heading">LEADING</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Define a tabela ou a sequência de tabelas que o Oracle deve usar primeiro em <em>joins</em>.</li>



<li><strong>Sintaxe</strong>: <code>LEADING(t1 t2 t3 ...)</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-756b3f72a50a3b7a8d810abb64f77a2a">M</h2>



<h3 class="wp-block-heading">MERGE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força a fusão de <em>views</em> no plano de execução.</li>



<li><strong>Sintaxe</strong>: <code>MERGE(tabela/view)</code></li>
</ul>



<h3 class="wp-block-heading">MERGE_AJ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Transforma subconsulta <code>NOT IN</code> em <em>merge anti-join</em>.</li>



<li><strong>Status</strong>: Depreciado no 10g.</li>
</ul>



<h3 class="wp-block-heading">MONITOR / NO_MONITOR</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Ativa ou desativa o monitoramento de query em tempo de execução (para V$SQL_MONITOR).</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ MONITOR */ ...</code> ou <code>SELECT /*+ NO_MONITOR */ ...</code></li>



<li><strong>Status</strong>: Introduzido no Oracle 11g para melhor monitoramento de SQL em tempo real.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-4828f3b5101eb988fffee4dde0c3145f">N</h2>



<h3 class="wp-block-heading">NL_AJ / NL_SJ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Forçam <em>nested loop anti-join</em> ou <em>nested loop semi-join</em>.</li>



<li><strong>Status</strong>: Obsoletos em algumas versões.</li>
</ul>



<h3 class="wp-block-heading">NO_EXPAND</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Impede a expansão de consultas com OR ou IN-lists em <code>UNION ALL</code>.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ NO_EXPAND */ ...</code></li>
</ul>



<h3 class="wp-block-heading">NO_MERGE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Impede a fusão de <em>views</em>.</li>



<li><strong>Sintaxe</strong>: <code>NO_MERGE(tabela/view)</code></li>
</ul>



<h3 class="wp-block-heading">NO_PARALLEL / NOPARALLEL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desativa a execução paralela, mesmo que a tabela tenha atributo <code>PARALLEL</code>.</li>



<li><strong>Sintaxe</strong>: <code>NO_PARALLEL(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">NO_PARALLEL_INDEX</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Evita <em>parallel index scan</em>.</li>



<li><strong>Sintaxe</strong>: <code>NO_PARALLEL_INDEX(tabela índice)</code></li>
</ul>



<h3 class="wp-block-heading">NO_PUSH_PRED / NO_PUSH_SUBQ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Impede que predicados ou subconsultas sejam “empurrados” para etapas anteriores do plano de execução.</li>



<li><strong>Sintaxe</strong>: <code>NO_PUSH_PRED</code>, <code>NO_PUSH_SUBQ</code></li>
</ul>



<h3 class="wp-block-heading">NO_QUERY_TRANSFORMATION</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desabilita transformações internas de consulta (por exemplo, unnesting, etc.).</li>



<li><strong>Sintaxe</strong>: <code>NO_QUERY_TRANSFORMATION</code></li>
</ul>



<h3 class="wp-block-heading">NO_REWRITE / NOREWRITE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desabilita o uso de <em>materialized views</em> para reescrever a query.</li>



<li><strong>Sintaxe</strong>: <code>NO_REWRITE</code> (renomeado a partir de <code>NOREWRITE</code> no 10g)</li>
</ul>



<h3 class="wp-block-heading">NO_STAR_TRANSFORMATION</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Impede que o otimizador faça a transformação <em>star</em>.</li>



<li><strong>Sintaxe</strong>: <code>NO_STAR_TRANSFORMATION</code></li>
</ul>



<h3 class="wp-block-heading">NO_USE_HASH / NO_USE_MERGE / NO_USE_NL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Forçam o otimizador a <strong>não</strong> usar <em>hash join</em>, <em>merge join</em> ou <em>nested loops</em>.</li>



<li><strong>Sintaxe</strong>: <code>NO_USE_HASH(tabela)</code>, <code>NO_USE_MERGE(tabela)</code>, <code>NO_USE_NL(tabela)</code></li>
</ul>



<h3 class="wp-block-heading">NOCACHE</h3>



<ul class="wp-block-list">
<li>Ver <strong>CACHE</strong> / <strong>NOCACHE</strong>.</li>
</ul>



<h3 class="wp-block-heading">NOAPPEND</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Desabilita inserção via <em>direct path</em>, mesmo se <code>APPEND</code> estiver setado como default.</li>



<li><strong>Sintaxe</strong>: <code>NOAPPEND</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-ac22bc5c29f8cb43e502802923f82011">O</h2>



<h3 class="wp-block-heading">OPT_PARAM</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Altera parâmetros de otimização apenas para aquela query (como se fosse um <em>session-level hint</em>).</li>



<li><strong>Exemplo</strong>: <code>SELECT /*+ OPT_PARAM('_optimizer_cost_based_transformation' 'off') */ ...</code></li>



<li><strong>Status</strong>: Útil para tunar consultas sem alterar parâmetros de todo o banco.</li>
</ul>



<h3 class="wp-block-heading">ORDERED</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Faz o Oracle fazer <em>joins</em> na ordem em que as tabelas aparecem no <code>FROM</code>.</li>



<li><strong>Sintaxe</strong>: <code>ORDERED</code></li>
</ul>



<h3 class="wp-block-heading">ORDERED_PREDICATES</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Solicita que o Oracle avalie os predicados na ordem que aparecem na cláusula WHERE.</li>



<li><strong>Status</strong>: Depreciado no 10g.</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-7ffb8d8ff9aaae56ff95b0e9cc278d8c">P</h2>



<h3 class="wp-block-heading">PARALLEL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Ativa a execução paralela para a tabela especificada. Pode receber grau de paralelismo.</li>



<li><strong>Sintaxe</strong>: <code>PARALLEL(tabela, DOP)</code> ou <code>PARALLEL(tabela, DEFAULT)</code></li>
</ul>



<h3 class="wp-block-heading">PQ_DISTRIBUTE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Controla a distribuição de linhas entre <em>slaves</em> no join paralelo.</li>



<li><strong>Sintaxe</strong>: <code>PQ_DISTRIBUTE(tabela, método_produtor, método_consumidor)</code></li>
</ul>



<h3 class="wp-block-heading">PUSH_PRED / PUSH_SUBQ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Forçam o “empurrão” de predicados ou subconsultas para etapas anteriores do plano.</li>



<li><strong>Sintaxe</strong>: <code>PUSH_PRED</code>, <code>PUSH_SUBQ</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-06393fed843175c908c3d8b39cb668a3">Q</h2>



<h3 class="wp-block-heading">QB_NAME</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Nomeia um bloco de consulta (query block) para efeitos de análise e aplicação de outros <em>hints</em>.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ QB_NAME(meu_bloco) */ ...</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-dd1b5a8ed63d8af317038b7f993b50d9">R</h2>



<h3 class="wp-block-heading">REWRITE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força a reescrita da consulta usando <em>materialized views</em> disponíveis (independente do custo).</li>



<li><strong>Sintaxe</strong>: <code>REWRITE</code></li>
</ul>



<h3 class="wp-block-heading">RESULT_CACHE / NO_RESULT_CACHE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Faz caching do resultado da query (ou impede caching) no <em>Query Result Cache</em>.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ RESULT_CACHE */ ...</code> ou <code>SELECT /*+ NO_RESULT_CACHE */ ...</code></li>



<li><strong>Status</strong>: Disponível a partir do 11g para frente, se o <em>result cache</em> estiver habilitado.</li>
</ul>



<h3 class="wp-block-heading">ROWID</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força acesso via ROWID na tabela especificada.</li>



<li><strong>Sintaxe</strong>: <code>ROWID(tabela)</code></li>



<li><strong>Status</strong>: Depreciado no 10g.</li>
</ul>



<h3 class="wp-block-heading">RULE</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o uso do <strong>Rule-Based Optimizer</strong>. Ignora quaisquer outros hints.</li>



<li><strong>Status</strong>: Obsoleto a partir do 10g (Oracle praticamente não usa mais RBO).</li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-38474664e48aacf1a9affd5a1831ee00">S</h2>



<h3 class="wp-block-heading">SPREAD_MIN_ANALYSIS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Reduz algumas otimizações de planilha interna, focando em análises mínimas.</li>



<li><strong>Status</strong>: Oracle 10g+.</li>
</ul>



<h3 class="wp-block-heading">STAR</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força a tabela maior a ser <em>joinada</em> por último usando <em>nested loops</em> em índices.</li>



<li><strong>Status</strong>: Depreciado no 10g.</li>
</ul>



<h3 class="wp-block-heading">STAR_TRANSFORMATION</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Permite o melhor plano gerado via transformação <em>star</em>.</li>



<li><strong>Sintaxe</strong>: <code>STAR_TRANSFORMATION</code></li>
</ul>



<h3 class="wp-block-heading">SWAP_JOIN_INPUTS</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Instrui o otimizador a inverter a ordem das tabelas no join, trocando o lado do driver e driven na operação de join</li>



<li><strong>Sintaxe</strong>: <code>SWAP_JOIN_INPUTS(tabela)</code></li>



<li><strong>Observação:</strong> Pode melhorar o desempenho quando a ordem natural de join do otimizador não é a ideal.</li>
</ul>



<h3 class="wp-block-heading">SWAP_JOIN_INPUTS_AJ</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Similar ao SWAP_JOIN_INPUTS, mas aplicado para anti-joins. (subqueries transformadas em NOT EXISTS ou JOIN anti-join).</li>



<li><strong>Sintaxe</strong>: <code>SWAP_JOIN_INPUTS_AJ(tabela)</code></li>
</ul>



<h2 class="wp-block-heading has-vivid-cyan-blue-color has-light-green-cyan-background-color has-text-color has-background has-link-color wp-elements-51fe779b279f2e3494d5b38936a0f173">U</h2>



<h3 class="wp-block-heading">UNNEST / NO_UNNEST</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Controlam a “descompactação” (unnesting) de subconsultas, transformando-as em <em>joins</em>.</li>



<li><strong>Sintaxe</strong>: <code>UNNEST</code> ou <code>NO_UNNEST</code></li>
</ul>



<h3 class="wp-block-heading">USE_SEMI</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Força o otimizador a usar semi-joins (subqueries transformadas em EXISTS ou JOIN com filtragem).</li>



<li><strong>Sintaxe</strong>: USE_SEMI(tabela)</li>
</ul>



<h3 class="wp-block-heading">USE_CONCAT</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Converte condições OR em um <code>UNION ALL</code>.</li>



<li><strong>Sintaxe</strong>: <code>SELECT /*+ USE_CONCAT */ ...</code></li>
</ul>



<h3 class="wp-block-heading">USE_ANTI</h3>



<ul class="wp-block-list">
<li><strong>Função:</strong> Força o otimizador a usar anti-joins (subqueries transformadas em NOT EXISTS ou JOIN anti-join).</li>



<li><strong>Sintaxe:</strong> USE_ANTI(tabela)</li>
</ul>



<h3 class="wp-block-heading">USE_HASH / USE_MERGE / USE_NL</h3>



<ul class="wp-block-list">
<li><strong>Função</strong>: Forçam o uso de <em>hash join</em>, <em>merge join</em> ou <em>nested loops</em> para as tabelas especificadas.</li>



<li><strong>Sintaxe</strong>: <code>USE_HASH(tabela1 tabela2)</code>, <code>USE_MERGE(tabela1 tabela2)</code>, <code>USE_NL(tabela1 tabela2)</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Dica sobre a Dica..</h1>



<p></p>



<ol class="wp-block-list">
<li><strong>Versão do Oracle</strong>: Alguns hints surgiram ou foram removidos em certas versões. Sempre verifique a documentação da sua versão específica (10g, 11g, 12c, 18c, 19c, 21c, etc.).</li>



<li><strong>Sintaxe Exata</strong>: Um simples erro de ortografia (por exemplo, esquecer o “+” em <code>/*+ ... */</code>, escrever <code>INDEXS</code> em vez de <code>INDEX</code>) faz o Oracle ignorar completamente o <em>hint</em>.</li>



<li><strong>Estatísticas Atualizadas</strong>: O Cost Based Optimizer (CBO) funciona melhor com estatísticas de tabelas e índices coerentes. Sem elas, mesmo os <em>hints</em> podem produzir resultados inconsistentes.</li>



<li><strong>Ferramentas de Análise</strong>:
<ul class="wp-block-list">
<li>Use <code>EXPLAIN PLAN</code> e <code>DBMS_XPLAN.DISPLAY</code> (ou <code>DBMS_XPLAN.DISPLAY_CURSOR</code>) para verificar se o <em>hint</em> foi aplicado e qual foi o plano de execução.</li>



<li>Verifique também colunas como <code>NOTE</code> que podem indicar se houve “unrecognized hint” ou “hint ignored”.</li>
</ul>
</li>



<li><strong>Relevância</strong>:
<ul class="wp-block-list">
<li>Alguns <em>hints</em> (especialmente os marcados como <strong>dep.</strong> ou <strong>deprecated</strong>) podem não ter efeito.</li>



<li>Muitos <em>hints</em> antigos foram substituídos por melhorias automáticas no CBO nas versões recentes.</li>
</ul>
</li>



<li><strong>Testes A/B</strong>: Sempre compare o plano de execução com e sem o <em>hint</em>. Às vezes, o otimizador padrão pode ser melhor do que forçar um caminho específico.</li>



<li><strong>Documentação Oficial</strong>: Consulte o capítulo “Hints” do <em>Oracle Database SQL Tuning Guide</em> para sua versão.</li>
</ol>



<p>Boa consulta e bons tunings!</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://furushima.com.br/blog/como-usar-hint-no-oracle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como ativar o Slow Query log no SQL Server?</title>
		<link>https://furushima.com.br/blog/como-ativar-o-slow-query-log-no-sql-server/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Thu, 13 Mar 2025 18:25:39 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[TUNING]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2655</guid>

					<description><![CDATA[Como Capturar Queries Lentas no SQL Server? Se você vem do mundo MySQL, PostgreSQL ou até mesmo Oracle, pode já ter se perguntado: como capturar queries lentas no SQL Server? No MySQL, temos o slow_query_log , no PostgreSQL, o pg_stat_statements/ slowquery e Oracle AWR/ASH* podem ajudar. Mas e no SQL Server? Podemos analisar queries em [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Como Capturar Queries Lentas no SQL Server?</h2>



<p>Se você vem do mundo MySQL, PostgreSQL ou até mesmo Oracle, pode já ter se perguntado: <strong>como capturar queries lentas no SQL Server?</strong></p>



<p>No MySQL, temos o <code>slow_query_log</code> , no PostgreSQL, o <code>pg_stat_statements</code>/ slowquery  e Oracle AWR/ASH* podem ajudar. Mas e no SQL Server? </p>



<p>Podemos analisar queries em execução no momento utilizando <code>sys.dm_exec_requests</code>, mas e se quisermos consultar o histórico?</p>



<p>Err.. Dai habilitamos o Query Store!</p>



<p>Uma boa solução o <strong>Query Store</strong>. Ele permite armazenar e analisar estatísticas de execução de queries ao longo do tempo. No entanto, dependendo do volume de dados e da granularidade desejada, ele pode não ser a melhor opção para um monitoramento detalhado.</p>



<p>Foi nesse contexto que pesquisei alternativas e encontrei uma solução eficiente: <strong>o uso de Extended Events (XEvents)</strong>. Se você também busca uma forma confiável de capturar queries lentas no SQL Server, este artigo é para você.</p>



<p><strong>Referências:</strong></p>



<ul class="wp-block-list">
<li>Documentação oficial da Microsoft sobre <a href="https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver16">Query Store</a></li>



<li>Blog do <a href="https://www.dirceuresende.com/">Dirceu Resende</a></li>
</ul>



<p></p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Monitorando Queries Lentas com Extended Events</p>



<p>A partir do SQL Server 2012, os <strong>Extended Events (XEvents)</strong> se tornaram uma das melhores formas de capturar eventos internos do SQL Server. Eles funcionam como um sistema de auditoria leve e personalizável, permitindo registrar queries lentas, deadlocks, commits e por ai vai..</p>



<p>Podemos compará-los a <strong>triggers</strong>, mas ao invés de serem executados em nível de tabela, eles capturam eventos no nível da instância do SQL Server.</p>



<p><a href="https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver16">Extended Events (XEvents)</a></p>



<h2 class="wp-block-heading">1º Criar o Evento de Captura</h2>



<p>Antes de tudo, precisamos criar um <strong>evento de captura</strong> para registrar as queries demoradas. Para isso, utilizaremos o Extended Events, garantindo que os arquivos de saída sejam gravados em um diretório onde o SQL Server tenha permissão de escrita, no meu caso.</p>



<p>K:\SLOW_QUERIES</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="CREATE EVENT SESSION [SLOW_QUERIES] ON SERVER  
ADD EVENT sqlserver.sql_batch_completed (  
    ACTION (  
        sqlserver.session_id,  
        sqlserver.client_app_name,  
        sqlserver.client_hostname,  
        sqlserver.database_name,  
        sqlserver.username,  
        sqlserver.session_nt_username,  
        sqlserver.session_server_principal_name,  
        sqlserver.sql_text  
    )  
    WHERE duration &gt; 5000000  -- AJUSTE O TEMPO CONFORME SUA NECESSIDADE
)  
ADD TARGET package0.event_file (  
    SET filename = N'K:\SLOW_QUERIES\slow.xel',   -- AQUI TAMBEM, AJUSTE SEU DIRETORIO
        max_file_size = 10,  
        max_rollover_files = 10  
)  
WITH (STARTUP_STATE = ON);  
GO  

-- Ativa o Extended Event
ALTER EVENT SESSION [SLOW_QUERIES] ON SERVER STATE = START
GO" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SESSION</span><span style="color: #D4D4D4"> [SLOW_QUERIES] </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SERVER</span><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #569CD6">ADD</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> sqlserver.sql_batch_completed (  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">ACTION</span><span style="color: #D4D4D4"> (  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_id,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.client_app_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.client_hostname,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.database_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.username,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_nt_username,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_server_principal_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.sql_text  </span></span>
<span class="line"><span style="color: #D4D4D4">    )  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">WHERE</span><span style="color: #D4D4D4"> duration &gt; </span><span style="color: #B5CEA8">5000000</span><span style="color: #D4D4D4">  </span><span style="color: #6A9955">-- AJUSTE O TEMPO CONFORME SUA NECESSIDADE</span></span>
<span class="line"><span style="color: #D4D4D4">)  </span></span>
<span class="line"><span style="color: #569CD6">ADD</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TARGET</span><span style="color: #D4D4D4"> package0.event_file (  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">SET</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">filename</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">N&#39;K:\SLOW_QUERIES\slow.xel&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #6A9955">-- AQUI TAMBEM, AJUSTE SEU DIRETORIO</span></span>
<span class="line"><span style="color: #D4D4D4">        max_file_size = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">,  </span></span>
<span class="line"><span style="color: #D4D4D4">        max_rollover_files = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">)  </span></span>
<span class="line"><span style="color: #569CD6">WITH</span><span style="color: #D4D4D4"> (STARTUP_STATE = </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4">);  </span></span>
<span class="line"><span style="color: #569CD6">GO</span><span style="color: #D4D4D4">  </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">-- Ativa o Extended Event</span></span>
<span class="line"><span style="color: #569CD6">ALTER</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SESSION</span><span style="color: #D4D4D4"> [SLOW_QUERIES] </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SERVER</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">STATE</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">START</span></span>
<span class="line"><span style="color: #569CD6">GO</span></span></code></pre></div>



<p>neste caso iremos coletar tudo que for acima de 5 segundos , com 10 arquivos de no maximo 10MB, em D:\SLOW_QUERIES\.</p>



<h2 class="wp-block-heading">2º Criar uma Tabela para salvar estes dados</h2>



<p>Agora, precisamos de um local para armazenar os dados coletados pelo XEvents. Criamos uma tabela que receberá as informações capturadas.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="CREATE TABLE dbo.Historico_Query_Lenta (
    [Dt_Evento] DATETIME,
    [session_id] INT,
    [database_name] VARCHAR(128),
    [username] VARCHAR(128),
    [session_server_principal_name] VARCHAR(128),
    [session_nt_username] VARCHAR(128),
    [client_hostname] VARCHAR(128),
    [client_app_name] VARCHAR(128),
    [duration] DECIMAL(18, 2),
    [cpu_time] DECIMAL(18, 2),
    [logical_reads] BIGINT,
    [physical_reads] BIGINT,
    [writes] BIGINT,
    [row_count] BIGINT,
    [sql_text] XML,
    [batch_text] XML,
    [result] VARCHAR(100)
) WITH(DATA_COMPRESSION=PAGE)
GO" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">dbo</span><span style="color: #D4D4D4">.Historico_Query_Lenta (</span></span>
<span class="line"><span style="color: #D4D4D4">    [Dt_Evento] </span><span style="color: #569CD6">DATETIME</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_id] </span><span style="color: #569CD6">INT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [database_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [username] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_server_principal_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_nt_username] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [client_hostname] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [client_app_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [duration] </span><span style="color: #569CD6">DECIMAL</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">18</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [cpu_time] </span><span style="color: #569CD6">DECIMAL</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">18</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [logical_reads] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [physical_reads] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [writes] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [row_count] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [sql_text] </span><span style="color: #569CD6">XML</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [batch_text] </span><span style="color: #569CD6">XML</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [result] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">) </span><span style="color: #569CD6">WITH</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">DATA_COMPRESSION</span><span style="color: #D4D4D4">=</span><span style="color: #569CD6">PAGE</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #569CD6">GO</span></span></code></pre></div>



<h2 class="wp-block-heading">3º Criar uma Procedure para Captura dos Dados</h2>



<p>O próximo passo é criar uma <strong>Stored Procedure</strong> para extrair os dados do Extended Events e armazená-los na tabela criada no Passo 2, crie um database de sua escolha , recomendo a ter sempre um database administrativo para tais acoes.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=" 
CREATE PROCEDURE dbo.stpCarga_Query_Lenta
AS
BEGIN
    
    
    DECLARE 
        @TimeZone INT = DATEDIFF(HOUR, GETUTCDATE(), GETDATE()),
        @Dt_Ultimo_Registro DATETIME = ISNULL((SELECT MAX(Dt_Evento) FROM dbo.Historico_Query_Lenta), '1900-01-01')
 
 
    IF (OBJECT_ID('tempdb..#Eventos') IS NOT NULL) DROP TABLE #Eventos
    ;WITH CTE AS (
        SELECT CONVERT(XML, event_data) AS event_data
        FROM sys.fn_xe_file_target_read_file(N'K:\SLOW_QUERIES\slow*.xel', NULL, NULL, NULL)
    )
    SELECT
        DATEADD(HOUR, @TimeZone, CTE.event_data.value('(//event/@timestamp)[1]', 'datetime')) AS Dt_Evento,
        CTE.event_data
    INTO
        #Eventos
    FROM
        CTE
    WHERE
        DATEADD(HOUR, @TimeZone, CTE.event_data.value('(//event/@timestamp)[1]', 'datetime')) &gt; @Dt_Ultimo_Registro
    
 
    INSERT INTO dbo.Historico_Query_Lenta
    SELECT
        A.Dt_Evento,
        xed.event_data.value('(action[@name=&quot;session_id&quot;]/value)[1]', 'int') AS session_id,
        xed.event_data.value('(action[@name=&quot;database_name&quot;]/value)[1]', 'varchar(128)') AS [database_name],
        xed.event_data.value('(action[@name=&quot;username&quot;]/value)[1]', 'varchar(128)') AS username,
        xed.event_data.value('(action[@name=&quot;session_server_principal_name&quot;]/value)[1]', 'varchar(128)') AS session_server_principal_name,
        xed.event_data.value('(action[@name=&quot;session_nt_username&quot;]/value)[1]', 'varchar(128)') AS [session_nt_username],
        xed.event_data.value('(action[@name=&quot;client_hostname&quot;]/value)[1]', 'varchar(128)') AS [client_hostname],
        xed.event_data.value('(action[@name=&quot;client_app_name&quot;]/value)[1]', 'varchar(128)') AS [client_app_name],
        CAST(xed.event_data.value('(//data[@name=&quot;duration&quot;]/value)[1]', 'bigint') / 1000000.0 AS NUMERIC(18, 2)) AS duration,
        CAST(xed.event_data.value('(//data[@name=&quot;cpu_time&quot;]/value)[1]', 'bigint') / 1000000.0 AS NUMERIC(18, 2)) AS cpu_time,
        xed.event_data.value('(//data[@name=&quot;logical_reads&quot;]/value)[1]', 'bigint') AS logical_reads,
        xed.event_data.value('(//data[@name=&quot;physical_reads&quot;]/value)[1]', 'bigint') AS physical_reads,
        xed.event_data.value('(//data[@name=&quot;writes&quot;]/value)[1]', 'bigint') AS writes,
        xed.event_data.value('(//data[@name=&quot;row_count&quot;]/value)[1]', 'bigint') AS row_count,
        TRY_CAST(xed.event_data.value('(//action[@name=&quot;sql_text&quot;]/value)[1]', 'varchar(max)') AS XML) AS sql_text,
        TRY_CAST(xed.event_data.value('(//data[@name=&quot;batch_text&quot;]/value)[1]', 'varchar(max)') AS XML) AS batch_text,
        xed.event_data.value('(//data[@name=&quot;result&quot;]/text)[1]', 'varchar(100)') AS result
    FROM
        #Eventos A
        CROSS APPLY A.event_data.nodes('//event') AS xed (event_data)
 
 
END" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">PROCEDURE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dbo.stpCarga_Query_Lenta</span></span>
<span class="line"><span style="color: #DCDCAA">AS</span></span>
<span class="line"><span style="color: #DCDCAA">BEGIN</span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">DECLARE</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">@TimeZone</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">INT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">=</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">DATEDIFF</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">GETUTCDATE</span><span style="color: #D4D4D4">()</span><span style="color: #CE9178">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">GETDATE</span><span style="color: #D4D4D4">())</span><span style="color: #CE9178">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">@Dt_Ultimo_Registro</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">DATETIME</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">=</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">ISNULL</span><span style="color: #D4D4D4">((SELECT MAX(Dt_Evento) FROM dbo.Historico_Query_Lenta), &#39;</span><span style="color: #B5CEA8">1900</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">01</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">01</span><span style="color: #D4D4D4">&#39;)</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">IF</span><span style="color: #D4D4D4"> (OBJECT_ID(</span><span style="color: #CE9178">&#39;tempdb..#Eventos&#39;</span><span style="color: #D4D4D4">) IS NOT NULL) DROP TABLE </span><span style="color: #6A9955">#Eventos</span></span>
<span class="line"><span style="color: #D4D4D4">    ;</span><span style="color: #DCDCAA">WITH</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CONVERT</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">XML,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">event_data</span><span style="color: #D4D4D4">) </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">event_data</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">sys.fn_xe_file_target_read_file</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">N</span><span style="color: #DCDCAA">&#39;K:\SLOW_QUERIES\slow*.xel&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    )</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">SELECT</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">DATEADD(HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@TimeZone,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE.event_data.value</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;(//event/@timestamp)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;datetime&#39;</span><span style="color: #D4D4D4">)) AS Dt_Evento,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CTE.event_data</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">INTO</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">#Eventos</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">FROM</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CTE</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">WHERE</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">DATEADD(HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@TimeZone,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE.event_data.value</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;(//event/@timestamp)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;datetime&#39;</span><span style="color: #D4D4D4">)) &gt; @Dt_Ultimo_Registro</span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">INSERT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">INTO</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dbo.Historico_Query_Lenta</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">SELECT</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">A.Dt_Evento,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_id&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;int&#39;</span><span style="color: #D4D4D4">) AS session_id,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;database_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [database_name],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;username&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS username,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_server_principal_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS session_server_principal_name,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_nt_username&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [session_nt_username],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;client_hostname&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [client_hostname],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;client_app_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [client_app_name],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;duration&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) / 1000000.0 AS NUMERIC(</span><span style="color: #DCDCAA">18,</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)) AS duration,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;cpu_time&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) / 1000000.0 AS NUMERIC(</span><span style="color: #DCDCAA">18,</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)) AS cpu_time,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;logical_reads&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS logical_reads,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;physical_reads&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS physical_reads,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;writes&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS writes,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;row_count&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS row_count,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">TRY_CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//action[@name=&quot;sql_text&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(max)&#39;</span><span style="color: #D4D4D4">) AS XML) AS sql_text,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">TRY_CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;batch_text&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(max)&#39;</span><span style="color: #D4D4D4">) AS XML) AS batch_text,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;result&quot;]/text)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(100)&#39;</span><span style="color: #D4D4D4">) AS result</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">FROM</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">#Eventos A</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CROSS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">APPLY</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">A.event_data.nodes</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;//event&#39;</span><span style="color: #D4D4D4">) </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">xed</span><span style="color: #D4D4D4"> (event_data)</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">END</span></span></code></pre></div>



<h2 class="wp-block-heading">4º Criar um Job para coletas frequentes.</h2>



<p>Para garantir que a coleta de queries lentas ocorra de forma contínua, podemos configurar um <strong>SQL Server Agent Job</strong> para executar a stored procedure periodicamente.</p>



<figure class="wp-block-image size-full"><img alt="" fetchpriority="high" decoding="async" width="699" height="651" src="https://furushima.com.br/wp-content/uploads/2025/03/Slow_query-1.gif" alt="" class="wp-image-2657"/></figure>



<p>Então podemos consultar nossa tabela Historico_Query_Lenta onde estarão nossos dados.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Como fazer upload de um backup SQL Server para OCI Bucket.</title>
		<link>https://furushima.com.br/blog/como-fazer-upload-de-um-backup-sql-server-para-oci-bucket/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 03:10:05 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[OCI]]></category>
		<category><![CDATA[ORACLE CLOUD]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SQLSERVER]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2512</guid>

					<description><![CDATA[A segurança dos backups é um dos principais pilares na administração de bancos de dados. Ter uma cópia externa garante a recuperação dos dados em caso de falhas. Neste artigo, vamos demonstrar como configurar o backup do SQL Server utilizando o Rclone para enviar os arquivos para um bucket da Oracle Cloud. Criando o Bucket [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>A segurança dos backups é um dos principais pilares na administração de bancos de dados. Ter uma cópia externa garante a recuperação dos dados em caso de falhas. Neste artigo, vamos demonstrar como configurar o <strong>backup do SQL Server</strong> utilizando o <a href="https://rclone.org/" data-type="link" data-id="https://rclone.org/"><strong>Rclone</strong> </a>para enviar os arquivos para um <strong>bucket da Oracle Cloud</strong>.</p>



<h2 class="wp-block-heading">Criando o Bucket na Oracle Cloud</h2>



<ol start="1" class="wp-block-list">
<li>Acesse a Oracle Cloud: <a href="https://cloud.oracle.com">https://cloud.oracle.com</a></li>



<li>Navegue até a seção de Armazenamento e crie um <strong>Bucket</strong></li>
</ol>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="848" height="391" src="https://furushima.com.br/wp-content/uploads/2025/02/image-7.png" alt="" class="wp-image-2520" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-7.png 848w, https://furushima.com.br/wp-content/uploads/2025/02/image-7-300x138.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-7-768x354.png 768w" sizes="(max-width: 848px) 100vw, 848px" /></figure>



<p>    3. Salve o <strong>namespace</strong> gerado, pois ele será necessário para configuração</p>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="857" height="410" src="https://furushima.com.br/wp-content/uploads/2025/02/image-6.png" alt="" class="wp-image-2519" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-6.png 857w, https://furushima.com.br/wp-content/uploads/2025/02/image-6-300x144.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-6-768x367.png 768w" sizes="(max-width: 857px) 100vw, 857px" /></figure>



<p></p>



<h2 class="wp-block-heading">Gerando as Chaves de Acesso</h2>



<ol start="1" class="wp-block-list">
<li>Acesse a Oracle Cloud e crie uma <strong>Secret Key e Access Key</strong></li>
</ol>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="683" height="211" src="https://furushima.com.br/wp-content/uploads/2025/02/image-8.png" alt="" class="wp-image-2521" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-8.png 683w, https://furushima.com.br/wp-content/uploads/2025/02/image-8-300x93.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></figure>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="840" height="434" src="https://furushima.com.br/wp-content/uploads/2025/02/image-9-1.jpg" alt="" class="wp-image-2523" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-9-1.jpg 840w, https://furushima.com.br/wp-content/uploads/2025/02/image-9-1-300x155.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-9-1-768x397.jpg 768w" sizes="(max-width: 840px) 100vw, 840px" /></figure>



<p>Anote a <strong>Secret Key</strong> no momento da geração, pois não será exibida novamente</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="844" height="253" src="https://furushima.com.br/wp-content/uploads/2025/02/image-9.png" alt="" class="wp-image-2524" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-9.png 844w, https://furushima.com.br/wp-content/uploads/2025/02/image-9-300x90.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-9-768x230.png 768w" sizes="(max-width: 844px) 100vw, 844px" /></figure>



<h2 class="wp-block-heading">Instalando e Configurando o Rclone no Windows</h2>



<h3 class="wp-block-heading">1. Download do Rclone</h3>



<p>Baixe a versão mais recente do Rclone para Windows: <a href="https://rclone.org/downloads/">https://rclone.org/downloads/</a></p>



<figure class="wp-block-image size-full is-resized"><img alt="" loading="lazy" decoding="async" width="746" height="268" src="https://furushima.com.br/wp-content/uploads/2025/02/image-10.png" alt="" class="wp-image-2525" style="width:749px;height:auto" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-10.png 746w, https://furushima.com.br/wp-content/uploads/2025/02/image-10-300x108.png 300w" sizes="(max-width: 746px) 100vw, 746px" /></figure>



<h3 class="wp-block-heading">2. Configuração Inicial do Rclone</h3>



<ol start="1" class="wp-block-list">
<li>Abra o <strong>Prompt de Comando (CMD)</strong></li>



<li>Digite <code>rclone.exe config</code> e siga os passos abaixo:
<ul class="wp-block-list">
<li>Escolha <strong>n</strong> para criar uma nova configuração</li>



<li>Nomeie a configuração como <strong>oci_s3</strong></li>



<li>Escolha <code>s3</code> como tipo de armazenamento</li>



<li>Selecione <strong>Other</strong> como provedor</li>



<li>Escolha <code>1</code> para inserir manualmente as credenciais</li>



<li>Insira sua <strong>Access Key</strong> e <strong>Secret Key</strong></li>



<li>Informe a região (exemplo: <code>sa-saopaulo-1</code>)</li>



<li>Configure o endpoint no formato: <code>https://NAMESPACE.compat.objectstorage.REGION.oraclecloud.com</code></li>



<li>O restante da configuração pode manter default, apenas pressionando enter.</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="976" height="511" src="https://furushima.com.br/wp-content/uploads/2025/02/rclone.gif" alt="" class="wp-image-2528"/></figure>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<p>3. Teste a sua configuração</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="886" height="59" src="https://furushima.com.br/wp-content/uploads/2025/02/image-11.png" alt="" class="wp-image-2529" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-11.png 886w, https://furushima.com.br/wp-content/uploads/2025/02/image-11-300x20.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-11-768x51.png 768w" sizes="(max-width: 886px) 100vw, 886px" /></figure>



<p></p>



<h2 class="wp-block-heading">Criando o Script PowerShell para Backup Automático</h2>



<p>Agora que o Rclone está configurado, podemos criar um <strong>script PowerShell</strong> para automatizar o backup e o envio para a Oracle Cloud.</p>



<h3 class="wp-block-heading">Exemplo de Script PowerShell:</h3>



<p>Este script tem como entrada:</p>



<ul class="wp-block-list">
<li><strong>backupFolder </strong>: Para o local onde está o backup</li>



<li><strong>RcloneConfig</strong>: Onde está o config do Rclone, caso deseje mudar.</li>



<li><strong>bucketName</strong>: Caminho do Bucket a ser criado</li>



<li><strong>remote</strong>: Qual configuração irá utilizar do Rclone, lembra aquele oci_s3?</li>



<li><strong>logDir</strong>: Diretorio de logs.</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# Diretório de backup
$backupFolder = &quot;K:\BACKUPS\LOG&quot;
$RcloneConfig = &quot;C:\zabbix\scripts\rclone.conf&quot;

# Nome do bucket na OCI
$bucketName = &quot;BACKUP-MSSQL-OCI/LOG&quot;

# Nome do remote configurado no Rclone
$remote = &quot;oci_s3&quot;

# Diretório de logs
$logDir = &quot;C:\zabbix\scripts\logs&quot;

# Criar diretório de logs se não existir
if (!(Test-Path -Path $logDir)) {
    New-Item -ItemType Directory -Path $logDir | Out-Null
}

# Criar nome do log por dia
$logFile = &quot;$logDir\backup_LOG_$(Get-Date -Format 'yyyyMMdd_HHmm').log&quot;

# Data e hora atual
$date = Get-Date -Format &quot;yyyy-MM-dd HH:mm:ss&quot;
Write-Output &quot;[$date] Iniciando verificação e sincronização...&quot; | Out-File -Append -Encoding utf8 $logFile

# Função para verificar se um arquivo está em uso
function Test-FileInUse {
    param([string]$filePath)
    try {
        $file = [System.IO.File]::Open($filePath, 'Open', 'Read', 'None')
        if ($file) { $file.Close() }
        return $false  # Arquivo não está em uso
    } catch {
        return $true   # Arquivo está em uso
    }
}

# Definir os diretórios do dia atual e do dia anterior
$today = Get-Date -Format 'yyyyMMdd'
$yesterday = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
$todayDir = Join-Path $backupFolder $today
$yesterdayDir = Join-Path $backupFolder $yesterday

# Lista de diretórios válidos
$validDirs = @()
if (Test-Path $todayDir) { $validDirs += $todayDir }
if (Test-Path $yesterdayDir) { $validDirs += $yesterdayDir }

# Criar uma lista de arquivos prontos para upload
$filesToSync = @()
foreach ($dir in $validDirs) {
    Get-ChildItem -Path $dir -Recurse -File | ForEach-Object {
        $filePath = $_.FullName
        if (-not (Test-FileInUse $filePath)) {
            $filesToSync += $filePath
        } else {
            Write-Output &quot;[$date] Ignorando (arquivo ainda em uso): $filePath&quot; | Out-File -Append -Encoding utf8 $logFile
        }
    }
}

# Se houver arquivos prontos, enviar para o OCI
if ($filesToSync.Count -gt 0) {
    Write-Output &quot;[$date] Enviando $( $filesToSync.Count ) arquivos para OCI...&quot; | Out-File -Append -Encoding utf8 $logFile

    # Criar diretório no bucket
    $bucketPathToday = &quot;$remote`:$bucketName/$today&quot;
    $bucketPathYesterday = &quot;$remote`:$bucketName/$yesterday&quot;

    # Enviar arquivos com Rclone
    if (Test-Path $todayDir) {
        &amp; &quot;C:\Program Files\Rclone\rclone.exe&quot; copy &quot;$todayDir&quot; &quot;$bucketPathToday&quot; --config &quot;$RcloneConfig&quot; --progress --transfers 8 --checkers 16 --fast-list --log-file=&quot;$logFile&quot; --log-level DEBUG
    }
    if (Test-Path $yesterdayDir) {
        &amp; &quot;C:\Program Files\Rclone\rclone.exe&quot; copy &quot;$yesterdayDir&quot; &quot;$bucketPathYesterday&quot; --config &quot;$RcloneConfig&quot; --progress --transfers 8 --checkers 16 --fast-list --log-file=&quot;$logFile&quot; --log-level DEBUG
    }

    Write-Output &quot;[$date] Sincronização concluída!&quot; | Out-File -Append -Encoding utf8 $logFile
} else {
    Write-Output &quot;[$date] Nenhum arquivo disponível para sincronização.&quot; | Out-File -Append -Encoding utf8 $logFile
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">Console</span><span style="color: #D4D4D4">]::</span><span style="color: #9CDCFE">OutputEncoding</span><span style="color: #D4D4D4"> = [</span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Text</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4">]::</span><span style="color: #4FC1FF">UTF8</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Diretório</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">backup</span></span>
<span class="line"><span style="color: #9CDCFE">$backupFolder</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;K:</span><span style="color: #D7BA7D">\B</span><span style="color: #CE9178">ACKUPS</span><span style="color: #D7BA7D">\L</span><span style="color: #CE9178">OG&quot;</span></span>
<span class="line"><span style="color: #9CDCFE">$RcloneConfig</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;C:</span><span style="color: #D7BA7D">\z</span><span style="color: #CE9178">abbix</span><span style="color: #D7BA7D">\s</span><span style="color: #CE9178">cripts</span><span style="color: #D7BA7D">\r</span><span style="color: #CE9178">clone.conf&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Nome</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">bucket</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">na</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">OCI</span></span>
<span class="line"><span style="color: #9CDCFE">$bucketName</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;BACKUP-MSSQL-OCI/LOG&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Nome</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">remote</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">configurado</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">no</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Rclone</span></span>
<span class="line"><span style="color: #9CDCFE">$remote</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;oci_s3&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Diretório</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">logs</span></span>
<span class="line"><span style="color: #9CDCFE">$logDir</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;C:</span><span style="color: #D7BA7D">\z</span><span style="color: #CE9178">abbix</span><span style="color: #D7BA7D">\s</span><span style="color: #CE9178">cripts</span><span style="color: #D7BA7D">\l</span><span style="color: #CE9178">ogs&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Criar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">diretório</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">logs</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">se</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">não</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">existir</span></span>
<span class="line"><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (!(</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logDir</span><span style="color: #D4D4D4">)) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">New</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Item</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">ItemType</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Directory</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logDir</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Null</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Criar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">nome</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">log</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">por</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dia</span></span>
<span class="line"><span style="color: #9CDCFE">$logFile</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;$logDir</span><span style="color: #D7BA7D">\b</span><span style="color: #CE9178">ackup_LOG_$(Get-Date -Format &#39;yyyyMMdd_HHmm&#39;).log&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Data</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">hora</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">atual</span></span>
<span class="line"><span style="color: #9CDCFE">$date</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Get</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Date</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Format</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;yyyy-MM-dd HH:mm:ss&quot;</span></span>
<span class="line"><span style="color: #9CDCFE">Write</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Output</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;[$date] Iniciando verificação e sincronização...&quot;</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Append</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">utf8</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logFile</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Função</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">para</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">verificar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">se</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">um</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">arquivo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">está</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">em</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">uso</span></span>
<span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Test</span><span style="color: #D4D4D4">-</span><span style="color: #DCDCAA">FileInUse</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">param</span><span style="color: #D4D4D4">([</span><span style="color: #9CDCFE">string</span><span style="color: #D4D4D4">]</span><span style="color: #9CDCFE">$filePath</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">$file</span><span style="color: #D4D4D4"> = [</span><span style="color: #9CDCFE">System</span><span style="color: #D4D4D4">.</span><span style="color: #4FC1FF">IO</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4">]::</span><span style="color: #DCDCAA">Open</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">$filePath</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;Open&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;Read&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;None&#39;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">$file</span><span style="color: #D4D4D4">) { </span><span style="color: #9CDCFE">$file</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Close</span><span style="color: #D4D4D4">() }</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$false</span><span style="color: #D4D4D4">  # </span><span style="color: #9CDCFE">Arquivo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">não</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">está</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">em</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">uso</span></span>
<span class="line"><span style="color: #D4D4D4">    } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$true</span><span style="color: #D4D4D4">   # </span><span style="color: #9CDCFE">Arquivo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">está</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">em</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">uso</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Definir</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">os</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">diretórios</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dia</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">atual</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dia</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">anterior</span></span>
<span class="line"><span style="color: #9CDCFE">$today</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Get</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Date</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Format</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;yyyyMMdd&#39;</span></span>
<span class="line"><span style="color: #9CDCFE">$yesterday</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">Get</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Date</span><span style="color: #D4D4D4">).</span><span style="color: #DCDCAA">AddDays</span><span style="color: #D4D4D4">(-</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">).</span><span style="color: #DCDCAA">ToString</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;yyyyMMdd&#39;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #9CDCFE">$todayDir</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Join</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$backupFolder</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$today</span></span>
<span class="line"><span style="color: #9CDCFE">$yesterdayDir</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Join</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$backupFolder</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$yesterday</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Lista</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">diretórios</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">válidos</span></span>
<span class="line"><span style="color: #9CDCFE">$validDirs</span><span style="color: #D4D4D4"> = @()</span></span>
<span class="line"><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$todayDir</span><span style="color: #D4D4D4">) { </span><span style="color: #9CDCFE">$validDirs</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">$todayDir</span><span style="color: #D4D4D4"> }</span></span>
<span class="line"><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$yesterdayDir</span><span style="color: #D4D4D4">) { </span><span style="color: #9CDCFE">$validDirs</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">$yesterdayDir</span><span style="color: #D4D4D4"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Criar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">uma</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">lista</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">arquivos</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">prontos</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">para</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">upload</span></span>
<span class="line"><span style="color: #9CDCFE">$filesToSync</span><span style="color: #D4D4D4"> = @()</span></span>
<span class="line"><span style="color: #DCDCAA">foreach</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">$dir</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">in</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$validDirs</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Get</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">ChildItem</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$dir</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Recurse</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">ForEach</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Object</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">$filePath</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">$_</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">FullName</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (-</span><span style="color: #DCDCAA">not</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">FileInUse</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$filePath</span><span style="color: #D4D4D4">)) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">$filesToSync</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">$filePath</span></span>
<span class="line"><span style="color: #D4D4D4">        } </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #9CDCFE">Write</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Output</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;[$date] Ignorando (arquivo ainda em uso): $filePath&quot;</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Append</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">utf8</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logFile</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># </span><span style="color: #9CDCFE">Se</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">houver</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">arquivos</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">prontos</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">enviar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">para</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">o</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">OCI</span></span>
<span class="line"><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">$filesToSync</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">Count</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">gt</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Write</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Output</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;[$date] Enviando $( $filesToSync.Count ) arquivos para OCI...&quot;</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Append</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">utf8</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logFile</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    # </span><span style="color: #9CDCFE">Criar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">diretório</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">no</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">bucket</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">$bucketPathToday</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;$remote`:$bucketName/$today&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">$bucketPathYesterday</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;$remote`:$bucketName/$yesterday&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    # </span><span style="color: #9CDCFE">Enviar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">arquivos</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">com</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Rclone</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$todayDir</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        &amp; </span><span style="color: #CE9178">&quot;C:</span><span style="color: #D7BA7D">\P</span><span style="color: #CE9178">rogram Files</span><span style="color: #D7BA7D">\R</span><span style="color: #CE9178">clone</span><span style="color: #D7BA7D">\r</span><span style="color: #CE9178">clone.exe&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">copy</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$todayDir&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$bucketPathToday&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">config</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$RcloneConfig&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">progress</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">transfers</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">8</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">checkers</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">16</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">fast</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">list</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">log</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">file</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;$logFile&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">log</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">level</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">DEBUG</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">Test</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Path</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$yesterdayDir</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        &amp; </span><span style="color: #CE9178">&quot;C:</span><span style="color: #D7BA7D">\P</span><span style="color: #CE9178">rogram Files</span><span style="color: #D7BA7D">\R</span><span style="color: #CE9178">clone</span><span style="color: #D7BA7D">\r</span><span style="color: #CE9178">clone.exe&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">copy</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$yesterdayDir&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$bucketPathYesterday&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">config</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;$RcloneConfig&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">progress</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">transfers</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">8</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">checkers</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">16</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">fast</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">list</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">log</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">file</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;$logFile&quot;</span><span style="color: #D4D4D4"> --</span><span style="color: #9CDCFE">log</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">level</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">DEBUG</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Write</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Output</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;[$date] Sincronização concluída!&quot;</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Append</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">utf8</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logFile</span></span>
<span class="line"><span style="color: #D4D4D4">} </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">Write</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Output</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;[$date] Nenhum arquivo disponível para sincronização.&quot;</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">Out</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">File</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Append</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">Encoding</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">utf8</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$logFile</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<h2 class="wp-block-heading">Agendando o Backup no SQL Server Agent</h2>



<ol start="1" class="wp-block-list">
<li>Abra o <strong>SQL Server Management Studio (SSMS)</strong></li>



<li>Navegue até <strong>SQL Server Agent &gt; Jobs</strong></li>



<li>Abra o Job de Backup que é necessário criar o upload.</li>



<li>Escolha <strong>CmdExec</strong> como tipo de comando e insira o script acima (Ajustado ao seu ambiente).</li>



<li>Insira a chamada do script <strong>powershell </strong><code>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\furushima_send_oci_log.ps1"</code></li>



<li>Defina um agendamento adequado (diário, horário, etc.)</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img alt="" loading="lazy" decoding="async" width="699" height="651" src="https://furushima.com.br/wp-content/uploads/2025/02/job.gif" alt="" class="wp-image-2530" style="width:838px;height:auto"/></figure>



<p>E Então&#8230;. estão nossos backups feito upload para o OCI S3, de forma automatizada pós backup! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="856" height="189" src="https://furushima.com.br/wp-content/uploads/2025/02/image-12.png" alt="" class="wp-image-2531" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-12.png 856w, https://furushima.com.br/wp-content/uploads/2025/02/image-12-300x66.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-12-768x170.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[SCRIPT] – showplan.sql</title>
		<link>https://furushima.com.br/blog/script-showplan-sql-2/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Wed, 29 Jan 2025 16:58:22 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[scripts]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2337</guid>

					<description><![CDATA[Como saber em qual parte do Plano a query está demorando mais?
]]></description>
										<content:encoded><![CDATA[
<p></p>



<p><strong>Utilidade do script showplan.sql</strong></p>



<ol class="wp-block-list">
<li>Identificar a parte específica do plano de execução que está causando gargalos em um determinado SQL_ID.</li>



<li>Analisar os eventos de espera principais associados a um SQL_ID específico para identificar possíveis ineficiências.</li>



<li>Avaliar quais objetos no Oracle demandam maior tempo de processamento para um determinado SQL_ID.</li>
</ol>



<figure class="wp-block-image size-large"><img alt="" loading="lazy" decoding="async" width="1024" height="75" src="https://furushima.com.br/wp-content/uploads/2025/01/image-6-1024x75.png" alt="" class="wp-image-2338" srcset="https://furushima.com.br/wp-content/uploads/2025/01/image-6-1024x75.png 1024w, https://furushima.com.br/wp-content/uploads/2025/01/image-6-300x22.png 300w, https://furushima.com.br/wp-content/uploads/2025/01/image-6-768x56.png 768w, https://furushima.com.br/wp-content/uploads/2025/01/image-6.png 1034w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img alt="" loading="lazy" decoding="async" width="1024" height="506" src="https://furushima.com.br/wp-content/uploads/2025/01/image-7-1024x506.png" alt="" class="wp-image-2339" srcset="https://furushima.com.br/wp-content/uploads/2025/01/image-7-1024x506.png 1024w, https://furushima.com.br/wp-content/uploads/2025/01/image-7-300x148.png 300w, https://furushima.com.br/wp-content/uploads/2025/01/image-7-768x379.png 768w, https://furushima.com.br/wp-content/uploads/2025/01/image-7.png 1029w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img alt="" loading="lazy" decoding="async" width="1024" height="557" src="https://furushima.com.br/wp-content/uploads/2025/01/image-8-1024x557.jpg" alt="" class="wp-image-2342" srcset="https://furushima.com.br/wp-content/uploads/2025/01/image-8-1024x557.jpg 1024w, https://furushima.com.br/wp-content/uploads/2025/01/image-8-300x163.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/01/image-8-768x418.jpg 768w, https://furushima.com.br/wp-content/uploads/2025/01/image-8.jpg 1026w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="1019" height="357" src="https://furushima.com.br/wp-content/uploads/2025/01/image-8.png" alt="" class="wp-image-2343" srcset="https://furushima.com.br/wp-content/uploads/2025/01/image-8.png 1019w, https://furushima.com.br/wp-content/uploads/2025/01/image-8-300x105.png 300w, https://furushima.com.br/wp-content/uploads/2025/01/image-8-768x269.png 768w" sizes="(max-width: 1019px) 100vw, 1019px" /></figure>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="-- ################################################################################
-- #
-- #          name: showplan.sql v1.0
-- #
-- #          File: showplan.sql
-- #   Description: Show SQL Plan and performance details
-- #         Usage: @showplan &lt;SQL_ID&gt; [Plan Hash Value] [Details: [+](B)inds|SQL (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics]
-- #       Created: 2014-03-12
-- #        Author: Wei Huang
-- #      Web Site: www.HelloDBA.com
-- #Latest Version: http://www.HelloDBA.com/download/showplan.zip
-- #   User run as: dba
-- #     Tested DB: 11gR2
-- #    Parameters: 1: SQL_ID of SQL to be shown
-- #    Parameters: 2: Plan Hash Value, if null (Default), will show all plans
-- #    Parameters: 3: Details to be shown: [+](B)inds|SQL (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics, 
-- #                   default is BPDTLWS; + stand for the default options
-- #
-- #  Copyright (c) 2014 Wei Huang
-- #
-- # History
-- # Modified by   When      Why
-- # -----------   -------   ----------------------------------------------------
-- ################################################################################
set autot off verify off feedback off pagesize 50000 lines 2000 long 10000000 longchunksize 10000000 serveroutput on size unlimited format wrapped buffer 99999999 head off
set termout off
col p1 noprint
col p2 new_value 2 noprint
col p3 new_value 3 noprint
select null p2, null p3 from dual where 1=2;
select nvl(upper(decode(upper('&amp;2'),'NULL',null,upper('&amp;2'))),null) p2, nvl(upper(decode(upper('&amp;3'),'NULL','BPDTLWS',upper('&amp;3'))),'BPDTLWS')||decode(instr('&amp;3','+'),0,'','BPDTLWS') p3 from dual;
set termout on
clear columns
col xxx format a2000

prompt Usage: @showplan &lt;SQL_ID&gt; [Plan Hash Value] [Details: [+](B)inds|SQL (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics]
prompt Description: Show SQL Plan
prompt 

set termout off
var sqlid varchar2(32);
var planHashValue varchar2(32);
var showOptions varchar2(32);
begin select '&amp;1', decode(upper('&amp;2'),'NULL',null,'&amp;2'), nvl(upper(decode(upper('&amp;3'),'NULL','BPDTLWS',upper('&amp;3'))),'BPDTLWS')||decode(instr('&amp;3','+'),0,'','BPDTLWS') into :sqlid, :planHashValue, :showOptions from dual; end;
/
set termout on

with q as (select /*+materialize*/*
           from (select sql_fulltext from v$sqlarea where sql_id=:sqlid
                 union all
                 select sql_text from dba_hist_sqltext
                 where sql_id=:sqlid and not exists (select 1 from v$sqlarea where sql_id=:sqlid))),
     p as (select /*+materialize*/*
           from (select m.SQL_ID,SQL_PLAN_HASH_VALUE PLAN_HASH_VALUE,PLAN_LINE_ID ID,PLAN_PARENT_ID PARENT_ID,
                        PLAN_OPERATION OPERATION,p.OTHER_TAG,PLAN_OPTIONS OPTIONS,PLAN_OBJECT_NAME OBJECT_NAME,
                        PLAN_OBJECT_TYPE OBJECT_TYPE,p.OPTIMIZER,PLAN_COST COST,OUTPUT_ROWS||' rows' CARDINALITY,
                        PHYSICAL_READ_BYTES+PHYSICAL_WRITE_BYTES||'/'||PLAN_BYTES BYTES,
                        p.access_predicates, p.filter_predicates, p.parsing_schema_name
                 from v$sql_plan_monitor m, (select p.SQL_ID, p.PLAN_HASH_VALUE, p.ID, p.CHILD_ADDRESS, p.OTHER_TAG, 
                                                    p.OPTIMIZER, p.access_predicates, p.filter_predicates, q.parsing_schema_name 
                                             from v$sql_plan p, v$sql q
                                             where p.SQL_ID=:sqlid AND (:planHashValue is NULL or p.PLAN_HASH_VALUE=to_number(:planHashValue))
                                             and p.sql_id=q.sql_id(+) and p.CHILD_ADDRESS=q.CHILD_ADDRESS(+)
                                             union
                                             select p.SQL_ID, p.PLAN_HASH_VALUE, ID, null CHILD_ADDRESS, p.OTHER_TAG, 
                                                    p.OPTIMIZER, access_predicates, p.filter_predicates, q.parsing_schema_name 
                                             from dba_hist_sql_plan p, dba_hist_sqlstat q
                                             where p.SQL_ID=:sqlid AND (:planHashValue is NULL or p.PLAN_HASH_VALUE=to_number(:planHashValue))
                                             and p.sql_id=q.sql_id(+) and p.PLAN_HASH_VALUE=q.PLAN_HASH_VALUE(+)
                                             and not exists (select 1 from V$SQL_PLAN p1 
                                                             where p1.SQL_ID=:sqlid AND (:planHashValue is NULL or p1.PLAN_HASH_VALUE=to_number(:planHashValue)))) p
                 where m.SQL_ID=:sqlid AND (:planHashValue is NULL or m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue))
                   and last_refresh_time = (select max(last_refresh_time) from v$sql_plan_monitor m
                                             where m.SQL_ID=:sqlid AND (:planHashValue is NULL or m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))
                   and m.SQL_ID=p.SQL_ID(+) and m.SQL_PLAN_HASH_VALUE=p.PLAN_HASH_VALUE(+) and m.PLAN_LINE_ID=p.ID(+) and m.SQL_CHILD_ADDRESS=p.CHILD_ADDRESS(+)
                 union
                 select p.SQL_ID,p.PLAN_HASH_VALUE, p.ID, p.PARENT_ID,p.OPERATION,p.OTHER_TAG,p.OPTIONS,p.OBJECT_NAME,
                        p.OBJECT_TYPE, p.OPTIMIZER,p.COST,''||p.CARDINALITY CARDINALITY,''||p.BYTES BYTES,
                        p.access_predicates, p.filter_predicates, q.parsing_schema_name
                 from V$SQL_PLAN p, v$sql q
                 where p.SQL_ID=:sqlid AND (:planHashValue is NULL or p.PLAN_HASH_VALUE=to_number(:planHashValue))
                 and p.child_number = (select max(child_number) from V$SQL_PLAN p1
                                       where p1.SQL_ID=:sqlid AND (:planHashValue is NULL or p1.PLAN_HASH_VALUE=to_number(:planHashValue)))
                 and not exists (select 1 from v$sql_plan_monitor m
                                  where m.SQL_ID=:sqlid AND (:planHashValue is NULL or m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))
                 and p.sql_id=q.sql_id(+) and p.CHILD_ADDRESS=q.CHILD_ADDRESS(+)
                 union 
                 select p.SQL_ID,p.PLAN_HASH_VALUE, p.ID, p.PARENT_ID,p.OPERATION,p.OTHER_TAG,p.OPTIONS,p.OBJECT_NAME,
                        p.OBJECT_TYPE,p.OPTIMIZER,p.COST,''||p.CARDINALITY CARDINALITY,''||p.BYTES BYTES,
                        p.access_predicates, p.filter_predicates, q.parsing_schema_name
                 from dba_hist_sql_plan p, dba_hist_sqlstat q
                 where p.SQL_ID=:sqlid AND (:planHashValue is NULL or p.PLAN_HASH_VALUE=to_number(:planHashValue))
                 and timestamp = (select max(timestamp) from dba_hist_sql_plan p1
                                  where p1.SQL_ID=:sqlid AND (:planHashValue is NULL or p1.PLAN_HASH_VALUE=to_number(:planHashValue)))
                 and not exists (select 1 from v$sql_plan_monitor  m
                                  where m.SQL_ID=:sqlid AND (:planHashValue is NULL or m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))
                 and not exists (select 1 from V$SQL_PLAN p1
                                  where p1.SQL_ID=:sqlid AND (:planHashValue is NULL or p1.PLAN_HASH_VALUE=to_number(:planHashValue)))
                 and p.sql_id=q.sql_id(+) and p.PLAN_HASH_VALUE=q.PLAN_HASH_VALUE(+))),
     pa as ( select /*+materialize*/sql_plan_hash_value plan_hash_value, sql_plan_line_id, 
                    sql_plan_operation||' '||nvl(sql_plan_options,'') sql_plan_op,nvl(event, 'ON CPU') event, 
                    TEMP_SPACE_ALLOCATED, PGA_ALLOCATED, current_obj#, count(*) over () total_waits
               from v$active_session_history 
              where sql_plan_line_id is not null and sql_id=:sqlid AND (:planHashValue is NULL or SQL_PLAN_HASH_VALUE=to_number(:planHashValue))
              union all
             select sql_plan_hash_value plan_hash_value, sql_plan_line_id, 
                    sql_plan_operation||' '||nvl(sql_plan_options,'') sql_plan_op,nvl(event, 'ON CPU') event, 
                    TEMP_SPACE_ALLOCATED, PGA_ALLOCATED, current_obj#, count(*) over () total_waits
               from dba_hist_active_sess_history 
              where not exists (select 1 from v$active_session_history 
                                 where sql_id=:sqlid AND (:planHashValue is NULL or SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))
                and sql_plan_line_id is not null and sql_id=:sqlid AND (:planHashValue is NULL or SQL_PLAN_HASH_VALUE=to_number(:planHashValue))),
     pl as ( select plan_hash_value, sql_plan_line_id, sql_plan_op, total_waits, count(*) waits
               from pa
              group by plan_hash_value, sql_plan_line_id, sql_plan_op, total_waits),
     we as (select pa.plan_hash_value, pa.event, o.owner||'.'||o.object_name||'('||o.object_type||')' wait_object, 
                   count(*) waits, total_waits from pa, dba_objects o
             where pa.current_obj#=o.object_id
             group by pa.plan_hash_value, pa.event, o.owner, o.object_name, o.object_type, total_waits),
     pb as (select /*+inline*/plan_hash_value,b.name,b.value,
                  decode(b.type#, 
                       1, 'VARCHAR2('||b.maxlength||')',
                       2, decode(b.scale, null,
                                 decode(b.precision#, null, 'NUMBER', 'FLOAT'),
                                 'NUMBER'),
                       8, 'LONG',
                       9, 'VARCHAR('||b.maxlength||')',
                       12, 'DATE',
                       23, 'RAW', 24, 'LONG RAW',
                       69, 'ROWID',
                       96, 'CHAR('||b.maxlength||')',
                       100, 'BINARY_FLOAT',
                       101, 'BINARY_DOUBLE',
                       105, 'MLSLABEL',
                       106, 'MLSLABEL',
                       112, 'CLOB',
                       113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
                       178, 'TIME(' ||b.scale|| ')',
                       179, 'TIME(' ||b.scale|| ')' || ' WITH TIME ZONE',
                       180, 'TIMESTAMP(' ||b.scale|| ')',
                       181, 'TIMESTAMP(' ||b.scale|| ')' || ' WITH TIME ZONE',
                       231, 'TIMESTAMP(' ||b.scale|| ')' || ' WITH LOCAL TIME ZONE',
                       182, 'INTERVAL YEAR(' ||b.precision#||') TO MONTH',
                       183, 'INTERVAL DAY(' ||b.precision#||') TO SECOND(' ||
                             b.scale || ')',
                       208, 'UROWID',
                       'UNDEFINED') data_type
              from v$sql_plan m, xmltable('/*/peeked_binds/bind' passing xmltype(m.OTHER_XML)
                                 columns name varchar2(4000) path '/bind/@nam', 
                                         type# varchar2(4000) path '/bind/@dty',
                                         precision# varchar2(4000) path '/bind/@pre',
                                         scale varchar2(4000) path '/bind/@scl',
                                         maxlength varchar2(4000) path '/bind/@mxl',
                                         value varchar2(4000) path '/bind') b
             where m.sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue))
               and trim(OTHER_XML) is not null),
     mb as (select /*+inline*/m.sid,m.session_serial#,sql_id,b.name,b.data_type,b.value
            from V$SQL_MONITOR m, xmltable('/binds/bind' passing xmltype(m.BINDS_XML)
                                           columns name varchar2(30) path '/bind/@name', 
                                                   data_type varchar2(30) path '/bind/@dtystr', 
                                                   value varchar2(4000) path '/bind') b
           where m.sql_id = :sqlid
             and exists (select 1 from V$SQL_MONITOR m1 
                          where m1.sid=m.sid and m1.session_serial#=m.session_serial# and m1.sql_id=m.sql_id
                           and (not exists (select 1 from v$sql_plan 
                                            where sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue)))
                                or exists (select 1 from v$sql_plan p 
                                           where sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue))
                                             and m1.sql_child_address=p.child_address))
                          group by sid,session_serial#,sql_id 
                         having max(m1.last_refresh_time)=m.last_refresh_time)
             and m.BINDS_XML is not null),
     ol as (select /*+inline*/plan_hash_value,b.hint
              from v$sql_plan m, xmltable('/*/outline_data/hint' passing xmltype(m.OTHER_XML)
                                 columns hint varchar2(4000) path '/hint') b
             where m.sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue))
               and trim(OTHER_XML) is not null),
     bc  as ( select distinct name,datatype,datatype_string,value_string from v$sql_bind_capture
               where sql_id = :sqlid
                 and last_captured = (select max(last_captured) from v$sql_bind_capture c 
                                       where sql_id = :sqlid
                                       and (not exists (select 1 from v$sql_plan 
                                                        where sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue)))
                                            or exists (select 1 from v$sql_plan p 
                                                       where sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue))
                                                         and c.child_address=p.child_address)))),
     bc1 as ( select distinct b.name,b.datatype,b.datatype_string,b.value_string,b.snap_id from dba_hist_sqlbind b, dba_hist_snapshot s
               where b.sql_id = :sqlid and b.snap_id=s.snap_id and b.instance_number=s.instance_number
                 and not exists (select 1 from bc)
                 and b.snap_id = (select max(c.snap_id) from dba_hist_sqlbind c
                                  where sql_id = :sqlid)),
     cb as (select /*+materialize*/* 
            from (select LISTAGG('var '||substr(name,2)||' '||decode(datatype_string,'VARCHAR2(4001)','CLOB',datatype_string)||';' ,chr(10)) WITHIN GROUP (ORDER BY name) var,
                         LISTAGG('exec '||name||':='||nvl2(value_string,decode(datatype,1,'''','')||value_string||decode(datatype,1,'''','')||';','null;'),chr(10)) WITHIN GROUP (ORDER BY name) exe
                  from bc
                  union all
                  select LISTAGG('var '||substr(name,2)||' '||decode(datatype_string,'VARCHAR2(4001)','CLOB',datatype_string)||';' ,chr(10)) WITHIN GROUP (ORDER BY name) var,
                         LISTAGG('exec '||name||':='||nvl2(value_string,decode(datatype,1,'''','')||value_string||decode(datatype,1,'''','')||';','null;'),chr(10)) WITHIN GROUP (ORDER BY name) exe
                  from bc1
                  group by snap_id)
          where (var is not null or exe is not null)),
     sd as (select PLAN_HASH_VALUE, '1,Loads: '||q.LOADS||'; 2,Load Versions: '||q.LOADED_VERSIONS||'; 3,First Load Time: '||q.FIRST_LOAD_TIME||'; 4,Last Load Time: '||q.LAST_LOAD_TIME||'; 5,User Openings: '||q.USERS_OPENING||'; 6,Parse Calls: '||q.PARSE_CALLS||'; 7,Executions: '||q.EXECUTIONS||'; 8,Sorts(Average): '||round(q.SORTS/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||'; 9,Fetches(Average): '||round(q.FETCHES/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||'; 10,Disk Reads(Average): '||round(q.DISK_READS/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||'; 11,Buffer Gets(Average): '||round(q.BUFFER_GETS/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||'; 12,Elapsed Time(Average): '||ROUND(q.ELAPSED_TIME/1000/1000/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||' seconds; 13,CPU Time(Average): '||ROUND(q.CPU_TIME/1000/1000/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||' seconds; 14,Run Time Memory(Average): '||ROUND(q.RUNTIME_MEM/1024/1024/decode(nvl(q.EXECUTIONS,0),0,1,q.EXECUTIONS),3)||'M' str, 
                   ';' spliter 
            from (select PLAN_HASH_VALUE, sum(LOADS) LOADS, min(FIRST_LOAD_TIME) FIRST_LOAD_TIME, max(LAST_LOAD_TIME) LAST_LOAD_TIME, 
                         sum(LOADED_VERSIONS) LOADED_VERSIONS, sum(USERS_OPENING) USERS_OPENING, sum(EXECUTIONS) EXECUTIONS, 
                         sum(PARSE_CALLS) PARSE_CALLS, sum(SORTS) SORTS, sum(FETCHES) FETCHES, sum(DISK_READS) DISK_READS, 
                         sum(BUFFER_GETS) BUFFER_GETS, max(RUNTIME_MEM) RUNTIME_MEM, sum(CPU_TIME) CPU_TIME, 
                         sum(ELAPSED_TIME) ELAPSED_TIME 
                  from v$sql
                  where sql_id=:sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue)) 
                  group by PLAN_HASH_VALUE
                  union
                  select PLAN_HASH_VALUE, max(LOADS_TOTAL) LOADS, null FIRST_LOAD_TIME, null LAST_LOAD_TIME, 
                         max(LOADED_VERSIONS) LOADED_VERSIONS, 0 USERS_OPENING, max(EXECUTIONS_TOTAL) EXECUTIONS, 
                         max(PARSE_CALLS_TOTAL) PARSE_CALLS, max(SORTS_TOTAL) SORTS, max(FETCHES_TOTAL) FETCHES, 
                         max(DISK_READS_TOTAL) DISK_READS, max(BUFFER_GETS_TOTAL) BUFFER_GETS, 0 RUNTIME_MEM, 
                         max(CPU_TIME_TOTAL) CPU_TIME, max(ELAPSED_TIME_TOTAL) ELAPSED_TIME 
                  from dba_hist_sqlstat
                  where sql_id=:sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue))
                  and not exists (select 1 from v$sqlarea where sql_id = :sqlid and (:planHashValue is NULL or PLAN_HASH_VALUE=to_number(:planHashValue)))
                  group by PLAN_HASH_VALUE) q
           where EXECUTIONS is not null and CPU_TIME is not null and ELAPSED_TIME is not null),
     ss as (select /*+materialize*/*
              from (select PLAN_HASH_VALUE, max(temp_size) temp_size, 0 pga_size 
                      from (select t.SESSION_ADDR,nvl(q.PLAN_HASH_VALUE,99999999999999) PLAN_HASH_VALUE, 
                                   nvl(sum(t.BLOCKS*to_number(p.value)/1024/1024/1024),0) temp_size
                              from v$sort_usage t, v$parameter p, v$session s, v$sql q 
                             where p.name = 'db_block_size' and t.sql_id=:sqlid 
                               and t.SESSION_ADDR=s.saddr(+) and t.sql_id=s.sql_id(+) 
                               and s.sql_id=q.sql_id(+) and s.sql_child_number=q.child_number(+)
                               and (:planHashValue is NULL or q.PLAN_HASH_VALUE is null or q.PLAN_HASH_VALUE=to_number(:planHashValue))
                             group by t.SESSION_ADDR,nvl(q.PLAN_HASH_VALUE,99999999999999))
                     group by PLAN_HASH_VALUE
                     union all
                    select nvl(q.PLAN_HASH_VALUE,99999999999999) PLAN_HASH_VALUE,0 temp_size, nvl(max(PGA_MAX_MEM/1024/1024/1024),0) pga_size 
                      from v$process p, v$session s, v$sql q 
                     where s.paddr=p.addr and s.sql_id = :sqlid
                       and s.sql_id=q.sql_id(+) and s.sql_child_number=q.child_number(+)
                       and (:planHashValue is NULL or q.PLAN_HASH_VALUE is null or q.PLAN_HASH_VALUE=to_number(:planHashValue))
                     group by nvl(q.PLAN_HASH_VALUE,99999999999999)
                     union all
                    select pa.PLAN_HASH_VALUE,nvl(max(TEMP_SPACE_ALLOCATED/1024/1024/1024),0) temp_size, 
                           nvl(max(PGA_ALLOCATED/1024/1024/1024),0) pga_size 
                      from pa
                     group by pa.PLAN_HASH_VALUE))
select /*+no_monitoring*/xxx
  from (
        select 0 PLAN_HASH_VALUE, 1 seq, 0 ID, 'SQL ID: '||:sqlid xxx from dual
        union
        select 0 PLAN_HASH_VALUE, 1 seq, 1 ID, chr(10)||'------------- Last Monitored Binds --------------' xxx from dual where exists (select 1 from mb) and instr(:showOptions,'B')&gt;0
        union
        select 0 PLAN_HASH_VALUE, 2 seq, to_number(sid||'.'||session_serial#||'000001') ID, 
               '--SID: '||sid||','||session_serial#||chr(10)||LISTAGG('var '||substr(b.name,2)||' '||b.data_type,chr(10)) WITHIN GROUP (ORDER BY b.name) xxx 
        from mb b
        where instr(:showOptions,'B')&gt;0
        GROUP BY sid,session_serial#,sql_id
        union 
        select 0 PLAN_HASH_VALUE, 2 seq, to_number(sid||'.'||session_serial#||'000002') ID, 
               '--SID: '||sid||','||session_serial#||chr(10)||LISTAGG('exec '||b.name||':='||decode(instr(b.data_type,'NUMBER'),0,''''||b.value||''';',b.value),chr(10)) WITHIN GROUP (ORDER BY b.name) xxx
        from mb b
        where instr(:showOptions,'B')&gt;0
        GROUP BY sid,session_serial#,sql_id
        union 
        select 0 PLAN_HASH_VALUE, 3 seq, 1 ID, chr(10)||'------------- Last Captured Binds --------------' xxx from dual where exists (select 1 from cb) and instr(:showOptions,'B')&gt;0 and not exists (select 1 from mb)
        union 
        select 0 PLAN_HASH_VALUE, 3 seq, 2 ID, var xxx from cb
        where instr(:showOptions,'B')&gt;0 and not exists (select 1 from mb)
        union 
        select 0 PLAN_HASH_VALUE, 3 seq, 3 ID, exe xxx from cb
        where instr(:showOptions,'B')&gt;0 and not exists (select 1 from mb)
        union
        select 0 PLAN_HASH_VALUE, 10 seq, 0 ID, chr(10)||'------------- SQL Text --------------' xxx from dual
        where instr(:showOptions,'T')&gt;0
        union
        select *
        from (select /*+no_merge*/0 PLAN_HASH_VALUE, 11 seq, level ID, to_char(substr(sql_fulltext,(level-1)*2000+1,2000)) sql_text
              from q
              where instr(:showOptions,'T')&gt;0
              connect by level&lt;=ceil(length(sql_fulltext)/2000))
        UNION
        select distinct PLAN_HASH_VALUE, 30 seq, -1 ID, chr(10)||'------------- SQL Plan (Plan Hash Value:'||PLAN_HASH_VALUE||'; Parsed by schema:'||PARSING_SCHEMA_NAME||') --------------' xxx
        from p
        where instr(:showOptions,'P')&gt;0
        UNION
        select *
        from (SELECT /*+no_merge*/PLAN_HASH_VALUE, 31 seq, ID,
               lpad(nvl2(access_predicates,'*','')||nvl2(filter_predicates,'#','')||ID,6,' ')||lpad('('||nvl(PARENT_ID||'',' ')||')',6,' ')||LPAD(' ',(LEVEL-1))||OPERATION||DECODE(OTHER_TAG,NULL,'','*')||DECODE(OPTIONS,NULL,'',' ('||OPTIONS||')')||DECODE(OBJECT_NAME,NULL,'',' OF '''||OBJECT_NAME||'''')||DECODE(OBJECT_TYPE,NULL,'',' ('||OBJECT_TYPE||')')||DECODE(ID,0,DECODE(OPTIMIZER,NULL,'',' Optimizer='||OPTIMIZER))||DECODE(COST,NULL,'',' (Cost='||COST||DECODE(CARDINALITY,NULL,'',' Card='||CARDINALITY)||DECODE(BYTES,NULL,'',' Bytes='||BYTES)||')') xxx --,OBJECT_NODE OBJECT_NODE_PLUS_EXP
              FROM P
              where instr(:showOptions,'P')&gt;0
              START WITH ID=0
              CONNECT BY PRIOR ID=PARENT_ID AND PRIOR SQL_ID=SQL_ID AND PRIOR PLAN_HASH_VALUE=PLAN_HASH_VALUE)
        UNION
        select distinct PLAN_HASH_VALUE, 33 seq, 0 ID, chr(10)||'------------- Stored Outline (Plan Hash Value:'||PLAN_HASH_VALUE||') --------------' xxx
        from OL
        where instr(:showOptions,'O')&gt;0
        UNION
        select PLAN_HASH_VALUE, 33 seq, 1 ID, '/*+' xxx from OL
        where instr(:showOptions,'O')&gt;0
        UNION
        select PLAN_HASH_VALUE, 33 seq, 2 ID, lpad(' ',3,' ')||'BEGIN_OUTLINE_DATA' xxx from OL
        where instr(:showOptions,'O')&gt;0
        UNION
        select PLAN_HASH_VALUE, 33 seq, 3 ID,lpad(' ',3,' ')||hint xxx from OL
        where instr(:showOptions,'O')&gt;0
        union
        select PLAN_HASH_VALUE, 33 seq, 4 ID, lpad(' ',3,' ')||'END_OUTLINE_DATA' xxx from OL
        where instr(:showOptions,'O')&gt;0
        UNION
        select PLAN_HASH_VALUE, 33 seq, 5 ID, '*/' xxx from OL
        where instr(:showOptions,'O')&gt;0
        UNION
        select distinct PLAN_HASH_VALUE, 35 seq, 0 ID, chr(10)||'------------- Peeked Binds (Plan Hash Value:'||PLAN_HASH_VALUE||') --------------' xxx
        from pb
        where instr(:showOptions,'K')&gt;0
        UNION
        select PLAN_HASH_VALUE, 35 seq, 1 ID,
               LISTAGG('var '||substr(name,2)||' '||data_type,chr(10)) WITHIN GROUP (ORDER BY name) xxx
        from pb
        where instr(:showOptions,'K')&gt;0
        group by PLAN_HASH_VALUE
        UNION
        select PLAN_HASH_VALUE, 35 seq, 2 ID,LISTAGG('exec '||name||':='||decode(instr(data_type,'NUMBER'),0,''''||value||''';',value),chr(10)) WITHIN GROUP (ORDER BY name) xxx
        from pb
        where instr(:showOptions,'K')&gt;0
        group by PLAN_HASH_VALUE
        UNION
        select distinct PLAN_HASH_VALUE, 36 seq, -1 ID, chr(10)||'------------- Predicate Information (Plan Hash Value:'||PLAN_HASH_VALUE||') --------------' xxx
        from P 
        where ((access_predicates is not null) or (filter_predicates is not null))
        and instr(:showOptions,'D')&gt;0
        UNION
        select PLAN_HASH_VALUE, 36 seq, ID,lpad(id,3,' ')||' Access: '||access_predicates xxx
        from P
        where (access_predicates is not null)
        and instr(:showOptions,'D')&gt;0
        union
        select PLAN_HASH_VALUE, 36 seq, ID,lpad(id,3,' ')||' Filter: '||filter_predicates xxx
        from P
        where (filter_predicates is not null)
        and instr(:showOptions,'D')&gt;0
        union
        select distinct P.PLAN_HASH_VALUE, 50 seq, -1 ID, chr(10)||'------------- Plan Loading (Plan Hash Value:'||P.PLAN_HASH_VALUE||') --------------' xxx
        from P, PL
        where P.PLAN_HASH_VALUE=PL.PLAN_HASH_VALUE and p.ID=SQL_PLAN_LINE_ID
        and total_waits&gt;0
        and instr(:showOptions,'L')&gt;0
        UNION
        select P.PLAN_HASH_VALUE, 50 seq, PL.TOTAL_WAITS-PL.WAITS ID, 
               lpad(P.ID,3,' ')||': '||RPAD(PL.sql_plan_op,50,' ')||rpad('#',round(pl.waits/pl.total_waits*50),'#')||'('||round(pl.waits/pl.total_waits*100,2)||'%)' xxx
        from P, PL
        where P.PLAN_HASH_VALUE=PL.PLAN_HASH_VALUE and p.ID=SQL_PLAN_LINE_ID
        and PL.total_waits&gt;0
        and instr(:showOptions,'L')&gt;0
        union
        select distinct PLAN_HASH_VALUE, 55 seq, -1 ID, chr(10)||'------------- Waits Events (Plan Hash Value:'||PLAN_HASH_VALUE||') --------------' xxx
        from we
        where total_waits&gt;0
        and instr(:showOptions,'W')&gt;0
        UNION
        select PLAN_HASH_VALUE, 55 seq, TOTAL_WAITS-WAITS ID, 
               rpad(event||' on '||wait_object,75,' ')||rpad('#',round(waits/total_waits*50),'#')||'('||round(waits/total_waits*100,2)||'%)' xxx
        from we 
        where total_waits&gt;0
        and instr(:showOptions,'W')&gt;0
        union
        select PLAN_HASH_VALUE, 60 seq, 1 ID, chr(10)||'------------- Statistics Data '||decode(PLAN_HASH_VALUE,99999999999999,'','(Plan Hash Value:'||PLAN_HASH_VALUE||')')||'--------------' xxx from sd
        where instr(:showOptions,'S')&gt;0
        union
        select PLAN_HASH_VALUE, 60 seq, 
               10+to_number(substr(str,1,instr(str,',')-1)) ID, substr(str,instr(str,',')+1) xxx
          from (select PLAN_HASH_VALUE, trim(regexp_substr(str, '[^'||spliter||']+', 1, level)) str from sd 
                connect by level &lt;= length (regexp_replace (str, '[^'||spliter||']+'))  + 1)
        union
        select PLAN_HASH_VALUE, 60 seq, 101 ID, 
               'PGA Size(Maximum): '||round(max(nvl(pga_size,0)),3)||'G' xxx 
          from ss
         where instr(:showOptions,'S')&gt;0
         group by PLAN_HASH_VALUE
        union
        select PLAN_HASH_VALUE, 60 seq, 102 ID, 
               'Temp Space(Maximum): '||round(max(nvl(temp_size,0)),3)||'G' xxx 
          from ss
         where instr(:showOptions,'S')&gt;0
         group by PLAN_HASH_VALUE
         order by PLAN_HASH_VALUE, SEQ, ID, XXX)
;

undef 1 2 3
set head on
clear columns
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #6A9955">-- ################################################################################</span></span>
<span class="line"><span style="color: #6A9955">-- #</span></span>
<span class="line"><span style="color: #6A9955">-- #          name: showplan.sql v1.0</span></span>
<span class="line"><span style="color: #6A9955">-- #</span></span>
<span class="line"><span style="color: #6A9955">-- #          File: showplan.sql</span></span>
<span class="line"><span style="color: #6A9955">-- #   Description: Show SQL Plan and performance details</span></span>
<span class="line"><span style="color: #6A9955">-- #         Usage: @showplan &lt;SQL_ID&gt; [Plan Hash Value] [Details: [+](B)inds|SQL (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics]</span></span>
<span class="line"><span style="color: #6A9955">-- #       Created: 2014-03-12</span></span>
<span class="line"><span style="color: #6A9955">-- #        Author: Wei Huang</span></span>
<span class="line"><span style="color: #6A9955">-- #      Web Site: www.HelloDBA.com</span></span>
<span class="line"><span style="color: #6A9955">-- #Latest Version: http://www.HelloDBA.com/download/showplan.zip</span></span>
<span class="line"><span style="color: #6A9955">-- #   User run as: dba</span></span>
<span class="line"><span style="color: #6A9955">-- #     Tested DB: 11gR2</span></span>
<span class="line"><span style="color: #6A9955">-- #    Parameters: 1: SQL_ID of SQL to be shown</span></span>
<span class="line"><span style="color: #6A9955">-- #    Parameters: 2: Plan Hash Value, if null (Default), will show all plans</span></span>
<span class="line"><span style="color: #6A9955">-- #    Parameters: 3: Details to be shown: [+](B)inds|SQL (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics, </span></span>
<span class="line"><span style="color: #6A9955">-- #                   default is BPDTLWS; + stand for the default options</span></span>
<span class="line"><span style="color: #6A9955">-- #</span></span>
<span class="line"><span style="color: #6A9955">-- #  Copyright (c) 2014 Wei Huang</span></span>
<span class="line"><span style="color: #6A9955">-- #</span></span>
<span class="line"><span style="color: #6A9955">-- # History</span></span>
<span class="line"><span style="color: #6A9955">-- # Modified by   When      Why</span></span>
<span class="line"><span style="color: #6A9955">-- # -----------   -------   ----------------------------------------------------</span></span>
<span class="line"><span style="color: #6A9955">-- ################################################################################</span></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> autot </span><span style="color: #569CD6">off</span><span style="color: #D4D4D4"> verify </span><span style="color: #569CD6">off</span><span style="color: #D4D4D4"> feedback </span><span style="color: #569CD6">off</span><span style="color: #D4D4D4"> pagesize </span><span style="color: #B5CEA8">50000</span><span style="color: #D4D4D4"> lines </span><span style="color: #B5CEA8">2000</span><span style="color: #D4D4D4"> long </span><span style="color: #B5CEA8">10000000</span><span style="color: #D4D4D4"> longchunksize </span><span style="color: #B5CEA8">10000000</span><span style="color: #D4D4D4"> serveroutput </span><span style="color: #569CD6">on</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">size</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">unlimited</span><span style="color: #D4D4D4"> format wrapped </span><span style="color: #569CD6">buffer</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">99999999</span><span style="color: #D4D4D4"> head </span><span style="color: #569CD6">off</span></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> termout </span><span style="color: #569CD6">off</span></span>
<span class="line"><span style="color: #D4D4D4">col p1 noprint</span></span>
<span class="line"><span style="color: #D4D4D4">col p2 new_value </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> noprint</span></span>
<span class="line"><span style="color: #D4D4D4">col p3 new_value </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> noprint</span></span>
<span class="line"><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> p2, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> p3 </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">=</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> nvl(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(decode(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;2&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;NULL&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">,</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;2&#39;</span><span style="color: #D4D4D4">))),</span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">) p2, nvl(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(decode(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;NULL&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">))),</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">)||decode(instr(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;+&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">) p3 </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual;</span></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> termout </span><span style="color: #569CD6">on</span></span>
<span class="line"><span style="color: #569CD6">clear</span><span style="color: #D4D4D4"> columns</span></span>
<span class="line"><span style="color: #D4D4D4">col xxx format a2000</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">prompt Usage: @showplan &lt;SQL_ID&gt; [Plan Hash Value] [Details: [+](B)inds|</span><span style="color: #569CD6">SQL</span><span style="color: #D4D4D4"> (T)ext|(Pee(K)ed Binds|(P)lan|(O)utlines|Pre(D)icate|Plan (L)oading|(W)ait events|(S)tatistics]</span></span>
<span class="line"><span style="color: #D4D4D4">prompt </span><span style="color: #569CD6">Description</span><span style="color: #D4D4D4">: Show </span><span style="color: #569CD6">SQL</span><span style="color: #D4D4D4"> Plan</span></span>
<span class="line"><span style="color: #D4D4D4">prompt </span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> termout </span><span style="color: #569CD6">off</span></span>
<span class="line"><span style="color: #D4D4D4">var sqlid </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">32</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">var planHashValue </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">32</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">var showOptions </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">32</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #569CD6">begin</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;&amp;1&#39;</span><span style="color: #D4D4D4">, decode(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;2&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;NULL&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&amp;2&#39;</span><span style="color: #D4D4D4">), nvl(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(decode(</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;NULL&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #DCDCAA">upper</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">))),</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">)||decode(instr(</span><span style="color: #CE9178">&#39;&amp;3&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;+&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;BPDTLWS&#39;</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">into</span><span style="color: #D4D4D4"> :sqlid, :planHashValue, :showOptions </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual; </span><span style="color: #569CD6">end</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">/</span></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> termout </span><span style="color: #569CD6">on</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">with</span><span style="color: #D4D4D4"> q </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+materialize*/</span><span style="color: #D4D4D4">*</span></span>
<span class="line"><span style="color: #D4D4D4">           </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> sql_fulltext </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sqlarea </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">union all</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> sql_text </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sqltext</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sqlarea </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid))),</span></span>
<span class="line"><span style="color: #D4D4D4">     p </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+materialize*/</span><span style="color: #D4D4D4">*</span></span>
<span class="line"><span style="color: #D4D4D4">           </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> m.SQL_ID,SQL_PLAN_HASH_VALUE PLAN_HASH_VALUE,PLAN_LINE_ID ID,PLAN_PARENT_ID PARENT_ID,</span></span>
<span class="line"><span style="color: #D4D4D4">                        PLAN_OPERATION OPERATION,p.OTHER_TAG,PLAN_OPTIONS OPTIONS,PLAN_OBJECT_NAME OBJECT_NAME,</span></span>
<span class="line"><span style="color: #D4D4D4">                        PLAN_OBJECT_TYPE OBJECT_TYPE,p.OPTIMIZER,PLAN_COST COST,OUTPUT_ROWS||</span><span style="color: #CE9178">&#39; rows&#39;</span><span style="color: #D4D4D4"> CARDINALITY,</span></span>
<span class="line"><span style="color: #D4D4D4">                        PHYSICAL_READ_BYTES+PHYSICAL_WRITE_BYTES||</span><span style="color: #CE9178">&#39;/&#39;</span><span style="color: #D4D4D4">||PLAN_BYTES BYTES,</span></span>
<span class="line"><span style="color: #D4D4D4">                        p.access_predicates, p.filter_predicates, p.parsing_schema_name</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan_monitor m, (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> p.SQL_ID, p.PLAN_HASH_VALUE, p.ID, p.CHILD_ADDRESS, p.OTHER_TAG, </span></span>
<span class="line"><span style="color: #D4D4D4">                                                    p.OPTIMIZER, p.access_predicates, p.filter_predicates, q.parsing_schema_name </span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan p, v$</span><span style="color: #569CD6">sql</span><span style="color: #D4D4D4"> q</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.CHILD_ADDRESS=q.CHILD_ADDRESS(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> p.SQL_ID, p.PLAN_HASH_VALUE, ID, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> CHILD_ADDRESS, p.OTHER_TAG, </span></span>
<span class="line"><span style="color: #D4D4D4">                                                    p.OPTIMIZER, access_predicates, p.filter_predicates, q.parsing_schema_name </span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sql_plan p, dba_hist_sqlstat q</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=q.PLAN_HASH_VALUE(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_PLAN p1 </span></span>
<span class="line"><span style="color: #D4D4D4">                                                             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p1.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p1.PLAN_HASH_VALUE=to_number(:planHashValue)))) p</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                   </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> last_refresh_time = (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(last_refresh_time) </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan_monitor m</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                   </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m.SQL_ID=p.SQL_ID(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m.SQL_PLAN_HASH_VALUE=p.PLAN_HASH_VALUE(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m.PLAN_LINE_ID=p.ID(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m.SQL_CHILD_ADDRESS=p.CHILD_ADDRESS(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> p.SQL_ID,p.PLAN_HASH_VALUE, p.ID, p.PARENT_ID,p.OPERATION,p.OTHER_TAG,p.OPTIONS,p.OBJECT_NAME,</span></span>
<span class="line"><span style="color: #D4D4D4">                        p.OBJECT_TYPE, p.OPTIMIZER,p.COST,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">||p.CARDINALITY CARDINALITY,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">||p.BYTES BYTES,</span></span>
<span class="line"><span style="color: #D4D4D4">                        p.access_predicates, p.filter_predicates, q.parsing_schema_name</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_PLAN p, v$</span><span style="color: #569CD6">sql</span><span style="color: #D4D4D4"> q</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.child_number = (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(child_number) </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_PLAN p1</span></span>
<span class="line"><span style="color: #D4D4D4">                                       </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p1.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p1.PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan_monitor m</span></span>
<span class="line"><span style="color: #D4D4D4">                                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.CHILD_ADDRESS=q.CHILD_ADDRESS(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">union</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> p.SQL_ID,p.PLAN_HASH_VALUE, p.ID, p.PARENT_ID,p.OPERATION,p.OTHER_TAG,p.OPTIONS,p.OBJECT_NAME,</span></span>
<span class="line"><span style="color: #D4D4D4">                        p.OBJECT_TYPE,p.OPTIMIZER,p.COST,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">||p.CARDINALITY CARDINALITY,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">||p.BYTES BYTES,</span></span>
<span class="line"><span style="color: #D4D4D4">                        p.access_predicates, p.filter_predicates, q.parsing_schema_name</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sql_plan p, dba_hist_sqlstat q</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">timestamp</span><span style="color: #D4D4D4"> = (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">timestamp</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sql_plan p1</span></span>
<span class="line"><span style="color: #D4D4D4">                                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p1.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p1.PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan_monitor  m</span></span>
<span class="line"><span style="color: #D4D4D4">                                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> m.SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_PLAN p1</span></span>
<span class="line"><span style="color: #D4D4D4">                                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p1.SQL_ID=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> p1.PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.PLAN_HASH_VALUE=q.PLAN_HASH_VALUE(+))),</span></span>
<span class="line"><span style="color: #D4D4D4">     pa </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> ( </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+materialize*/</span><span style="color: #D4D4D4">sql_plan_hash_value plan_hash_value, sql_plan_line_id, </span></span>
<span class="line"><span style="color: #D4D4D4">                    sql_plan_operation||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||nvl(sql_plan_options,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">) sql_plan_op,nvl(</span><span style="color: #569CD6">event</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ON CPU&#39;</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">event</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">                    TEMP_SPACE_ALLOCATED, PGA_ALLOCATED, current_obj#, </span><span style="color: #DCDCAA">count</span><span style="color: #D4D4D4">(*) </span><span style="color: #569CD6">over</span><span style="color: #D4D4D4"> () total_waits</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$active_session_history </span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_plan_line_id </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> SQL_PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">union all</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> sql_plan_hash_value plan_hash_value, sql_plan_line_id, </span></span>
<span class="line"><span style="color: #D4D4D4">                    sql_plan_operation||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||nvl(sql_plan_options,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">) sql_plan_op,nvl(</span><span style="color: #569CD6">event</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ON CPU&#39;</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">event</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">                    TEMP_SPACE_ALLOCATED, PGA_ALLOCATED, current_obj#, </span><span style="color: #DCDCAA">count</span><span style="color: #D4D4D4">(*) </span><span style="color: #569CD6">over</span><span style="color: #D4D4D4"> () total_waits</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_active_sess_history </span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$active_session_history </span></span>
<span class="line"><span style="color: #D4D4D4">                                 </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> SQL_PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> sql_plan_line_id </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> SQL_PLAN_HASH_VALUE=to_number(:planHashValue))),</span></span>
<span class="line"><span style="color: #D4D4D4">     pl </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> ( </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> plan_hash_value, sql_plan_line_id, sql_plan_op, total_waits, </span><span style="color: #DCDCAA">count</span><span style="color: #D4D4D4">(*) waits</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pa</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> plan_hash_value, sql_plan_line_id, sql_plan_op, total_waits),</span></span>
<span class="line"><span style="color: #D4D4D4">     we </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> pa.plan_hash_value, pa.event, o.owner||</span><span style="color: #CE9178">&#39;.&#39;</span><span style="color: #D4D4D4">||o.object_name||</span><span style="color: #CE9178">&#39;(&#39;</span><span style="color: #D4D4D4">||o.object_type||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4"> wait_object, </span></span>
<span class="line"><span style="color: #D4D4D4">                   </span><span style="color: #DCDCAA">count</span><span style="color: #D4D4D4">(*) waits, total_waits </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pa, dba_objects o</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> pa.current_obj#=o.object_id</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> pa.plan_hash_value, pa.event, o.owner, o.object_name, o.object_type, total_waits),</span></span>
<span class="line"><span style="color: #D4D4D4">     pb </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+inline*/</span><span style="color: #D4D4D4">plan_hash_value,b.name,b.value,</span></span>
<span class="line"><span style="color: #D4D4D4">                  decode(b.type#, </span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;VARCHAR2(&#39;</span><span style="color: #D4D4D4">||b.maxlength||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">, decode(b.scale, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                                 decode(b.precision#, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;NUMBER&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;FLOAT&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">                                 </span><span style="color: #CE9178">&#39;NUMBER&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">8</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;LONG&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;VARCHAR(&#39;</span><span style="color: #D4D4D4">||b.maxlength||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">12</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;DATE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">23</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;RAW&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">24</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;LONG RAW&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">69</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ROWID&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">96</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;CHAR(&#39;</span><span style="color: #D4D4D4">||b.maxlength||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BINARY_FLOAT&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">101</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BINARY_DOUBLE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">105</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;MLSLABEL&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">106</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;MLSLABEL&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">112</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;CLOB&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">113</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BLOB&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">114</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BFILE&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">115</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;CFILE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">178</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TIME(&#39;</span><span style="color: #D4D4D4"> ||b.scale|| </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">179</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TIME(&#39;</span><span style="color: #D4D4D4"> ||b.scale|| </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4"> || </span><span style="color: #CE9178">&#39; WITH TIME ZONE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">180</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TIMESTAMP(&#39;</span><span style="color: #D4D4D4"> ||b.scale|| </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">181</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TIMESTAMP(&#39;</span><span style="color: #D4D4D4"> ||b.scale|| </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4"> || </span><span style="color: #CE9178">&#39; WITH TIME ZONE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">231</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TIMESTAMP(&#39;</span><span style="color: #D4D4D4"> ||b.scale|| </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4"> || </span><span style="color: #CE9178">&#39; WITH LOCAL TIME ZONE&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">182</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;INTERVAL YEAR(&#39;</span><span style="color: #D4D4D4"> ||b.precision#||</span><span style="color: #CE9178">&#39;) TO MONTH&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">183</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;INTERVAL DAY(&#39;</span><span style="color: #D4D4D4"> ||b.precision#||</span><span style="color: #CE9178">&#39;) TO SECOND(&#39;</span><span style="color: #D4D4D4"> ||</span></span>
<span class="line"><span style="color: #D4D4D4">                             b.scale || </span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #B5CEA8">208</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;UROWID&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #CE9178">&#39;UNDEFINED&#39;</span><span style="color: #D4D4D4">) data_type</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan m, xmltable(</span><span style="color: #CE9178">&#39;/*/peeked_binds/bind&#39;</span><span style="color: #D4D4D4"> passing xmltype(m.OTHER_XML)</span></span>
<span class="line"><span style="color: #D4D4D4">                                 columns </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@nam&#39;</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">                                         </span><span style="color: #569CD6">type</span><span style="color: #D4D4D4"># </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@dty&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                                         </span><span style="color: #569CD6">precision</span><span style="color: #D4D4D4"># </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@pre&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                                         scale </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@scl&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                                         </span><span style="color: #569CD6">maxlength</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@mxl&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">                                         </span><span style="color: #569CD6">value</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind&#39;</span><span style="color: #D4D4D4">) b</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">trim</span><span style="color: #D4D4D4">(OTHER_XML) </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">     mb </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+inline*/</span><span style="color: #D4D4D4">m.sid,m.session_serial#,sql_id,b.name,b.data_type,b.value</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_MONITOR m, xmltable(</span><span style="color: #CE9178">&#39;/binds/bind&#39;</span><span style="color: #D4D4D4"> passing xmltype(m.BINDS_XML)</span></span>
<span class="line"><span style="color: #D4D4D4">                                           columns </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@name&#39;</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">                                                   data_type </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind/@dtystr&#39;</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">                                                   </span><span style="color: #569CD6">value</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/bind&#39;</span><span style="color: #D4D4D4">) b</span></span>
<span class="line"><span style="color: #D4D4D4">           </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.sql_id = :sqlid</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> V$SQL_MONITOR m1 </span></span>
<span class="line"><span style="color: #D4D4D4">                          </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m1.sid=m.sid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m1.session_serial#=m.session_serial# </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m1.sql_id=m.sql_id</span></span>
<span class="line"><span style="color: #D4D4D4">                           </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan </span></span>
<span class="line"><span style="color: #D4D4D4">                                            </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                                </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan p </span></span>
<span class="line"><span style="color: #D4D4D4">                                           </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                                             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m1.sql_child_address=p.child_address))</span></span>
<span class="line"><span style="color: #D4D4D4">                          </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">,session_serial#,sql_id </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #569CD6">having</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(m1.last_refresh_time)=m.last_refresh_time)</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> m.BINDS_XML </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">     ol </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+inline*/</span><span style="color: #D4D4D4">plan_hash_value,b.hint</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan m, xmltable(</span><span style="color: #CE9178">&#39;/*/outline_data/hint&#39;</span><span style="color: #D4D4D4"> passing xmltype(m.OTHER_XML)</span></span>
<span class="line"><span style="color: #D4D4D4">                                 columns hint </span><span style="color: #569CD6">varchar2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4000</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;/hint&#39;</span><span style="color: #D4D4D4">) b</span></span>
<span class="line"><span style="color: #D4D4D4">             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> m.sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">trim</span><span style="color: #D4D4D4">(OTHER_XML) </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">     bc  </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> ( </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">,datatype,datatype_string,value_string </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_bind_capture</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> last_captured = (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(last_captured) </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_bind_capture c </span></span>
<span class="line"><span style="color: #D4D4D4">                                       </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid</span></span>
<span class="line"><span style="color: #D4D4D4">                                       </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan </span></span>
<span class="line"><span style="color: #D4D4D4">                                                        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                                            </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sql_plan p </span></span>
<span class="line"><span style="color: #D4D4D4">                                                       </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                                                         </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> c.child_address=p.child_address)))),</span></span>
<span class="line"><span style="color: #D4D4D4">     bc1 </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> ( </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> b.name,b.datatype,b.datatype_string,b.value_string,b.snap_id </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sqlbind b, dba_hist_snapshot s</span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> b.sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> b.snap_id=s.snap_id </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> b.instance_number=s.instance_number</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> bc)</span></span>
<span class="line"><span style="color: #D4D4D4">                 </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> b.snap_id = (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(c.snap_id) </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sqlbind c</span></span>
<span class="line"><span style="color: #D4D4D4">                                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid)),</span></span>
<span class="line"><span style="color: #D4D4D4">     cb </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+materialize*/</span><span style="color: #D4D4D4">* </span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> LISTAGG(</span><span style="color: #CE9178">&#39;var &#39;</span><span style="color: #D4D4D4">||substr(</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||decode(datatype_string,</span><span style="color: #CE9178">&#39;VARCHAR2(4001)&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;CLOB&#39;</span><span style="color: #D4D4D4">,datatype_string)||</span><span style="color: #CE9178">&#39;;&#39;</span><span style="color: #D4D4D4"> ,chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) var,</span></span>
<span class="line"><span style="color: #D4D4D4">                         LISTAGG(</span><span style="color: #CE9178">&#39;exec &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;:=&#39;</span><span style="color: #D4D4D4">||nvl2(value_string,decode(datatype,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||value_string||decode(datatype,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;null;&#39;</span><span style="color: #D4D4D4">),chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) exe</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> bc</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">union all</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> LISTAGG(</span><span style="color: #CE9178">&#39;var &#39;</span><span style="color: #D4D4D4">||substr(</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||decode(datatype_string,</span><span style="color: #CE9178">&#39;VARCHAR2(4001)&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;CLOB&#39;</span><span style="color: #D4D4D4">,datatype_string)||</span><span style="color: #CE9178">&#39;;&#39;</span><span style="color: #D4D4D4"> ,chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) var,</span></span>
<span class="line"><span style="color: #D4D4D4">                         LISTAGG(</span><span style="color: #CE9178">&#39;exec &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;:=&#39;</span><span style="color: #D4D4D4">||nvl2(value_string,decode(datatype,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||value_string||decode(datatype,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;null;&#39;</span><span style="color: #D4D4D4">),chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) exe</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> bc1</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> snap_id)</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> (var </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> exe </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">)),</span></span>
<span class="line"><span style="color: #D4D4D4">     sd </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #CE9178">&#39;1,Loads: &#39;</span><span style="color: #D4D4D4">||q.LOADS||</span><span style="color: #CE9178">&#39;; 2,Load Versions: &#39;</span><span style="color: #D4D4D4">||q.LOADED_VERSIONS||</span><span style="color: #CE9178">&#39;; 3,First Load Time: &#39;</span><span style="color: #D4D4D4">||q.FIRST_LOAD_TIME||</span><span style="color: #CE9178">&#39;; 4,Last Load Time: &#39;</span><span style="color: #D4D4D4">||q.LAST_LOAD_TIME||</span><span style="color: #CE9178">&#39;; 5,User Openings: &#39;</span><span style="color: #D4D4D4">||q.USERS_OPENING||</span><span style="color: #CE9178">&#39;; 6,Parse Calls: &#39;</span><span style="color: #D4D4D4">||q.PARSE_CALLS||</span><span style="color: #CE9178">&#39;; 7,Executions: &#39;</span><span style="color: #D4D4D4">||q.EXECUTIONS||</span><span style="color: #CE9178">&#39;; 8,Sorts(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(q.SORTS/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;; 9,Fetches(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(q.FETCHES/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;; 10,Disk Reads(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(q.DISK_READS/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;; 11,Buffer Gets(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(q.BUFFER_GETS/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;; 12,Elapsed Time(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">ROUND</span><span style="color: #D4D4D4">(q.ELAPSED_TIME/</span><span style="color: #B5CEA8">1000</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1000</span><span style="color: #D4D4D4">/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; seconds; 13,CPU Time(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">ROUND</span><span style="color: #D4D4D4">(q.CPU_TIME/</span><span style="color: #B5CEA8">1000</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1000</span><span style="color: #D4D4D4">/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; seconds; 14,Run Time Memory(Average): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">ROUND</span><span style="color: #D4D4D4">(q.RUNTIME_MEM/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/decode(nvl(q.EXECUTIONS,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,q.EXECUTIONS),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;M&#39;</span><span style="color: #D4D4D4"> str, </span></span>
<span class="line"><span style="color: #D4D4D4">                   </span><span style="color: #CE9178">&#39;;&#39;</span><span style="color: #D4D4D4"> spliter </span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(LOADS) LOADS, </span><span style="color: #DCDCAA">min</span><span style="color: #D4D4D4">(FIRST_LOAD_TIME) FIRST_LOAD_TIME, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(LAST_LOAD_TIME) LAST_LOAD_TIME, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(LOADED_VERSIONS) LOADED_VERSIONS, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(USERS_OPENING) USERS_OPENING, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(EXECUTIONS) EXECUTIONS, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(PARSE_CALLS) PARSE_CALLS, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(SORTS) SORTS, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(FETCHES) FETCHES, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(DISK_READS) DISK_READS, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(BUFFER_GETS) BUFFER_GETS, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(RUNTIME_MEM) RUNTIME_MEM, </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(CPU_TIME) CPU_TIME, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(ELAPSED_TIME) ELAPSED_TIME </span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$</span><span style="color: #569CD6">sql</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue)) </span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(LOADS_TOTAL) LOADS, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> FIRST_LOAD_TIME, </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> LAST_LOAD_TIME, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(LOADED_VERSIONS) LOADED_VERSIONS, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> USERS_OPENING, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(EXECUTIONS_TOTAL) EXECUTIONS, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(PARSE_CALLS_TOTAL) PARSE_CALLS, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(SORTS_TOTAL) SORTS, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(FETCHES_TOTAL) FETCHES, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(DISK_READS_TOTAL) DISK_READS, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(BUFFER_GETS_TOTAL) BUFFER_GETS, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> RUNTIME_MEM, </span></span>
<span class="line"><span style="color: #D4D4D4">                         </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(CPU_TIME_TOTAL) CPU_TIME, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(ELAPSED_TIME_TOTAL) ELAPSED_TIME </span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dba_hist_sqlstat</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id=:sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sqlarea </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> sql_id = :sqlid </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=to_number(:planHashValue)))</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE) q</span></span>
<span class="line"><span style="color: #D4D4D4">           </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> EXECUTIONS </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> CPU_TIME </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> ELAPSED_TIME </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">     ss </span><span style="color: #569CD6">as</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+materialize*/</span><span style="color: #D4D4D4">*</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(temp_size) temp_size, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> pga_size </span></span>
<span class="line"><span style="color: #D4D4D4">                      </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> t.SESSION_ADDR,nvl(q.PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">99999999999999</span><span style="color: #D4D4D4">) PLAN_HASH_VALUE, </span></span>
<span class="line"><span style="color: #D4D4D4">                                   nvl(</span><span style="color: #DCDCAA">sum</span><span style="color: #D4D4D4">(t.BLOCKS*to_number(p.value)/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">) temp_size</span></span>
<span class="line"><span style="color: #D4D4D4">                              </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$sort_usage t, v$parameter p, v$</span><span style="color: #569CD6">session</span><span style="color: #D4D4D4"> s, v$</span><span style="color: #569CD6">sql</span><span style="color: #D4D4D4"> q </span></span>
<span class="line"><span style="color: #D4D4D4">                             </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> p.name = </span><span style="color: #CE9178">&#39;db_block_size&#39;</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> t.sql_id=:sqlid </span></span>
<span class="line"><span style="color: #D4D4D4">                               </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> t.SESSION_ADDR=s.saddr(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> t.sql_id=s.sql_id(+) </span></span>
<span class="line"><span style="color: #D4D4D4">                               </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> s.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> s.sql_child_number=q.child_number(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                               </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> q.PLAN_HASH_VALUE </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> q.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                             </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> t.SESSION_ADDR,nvl(q.PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">99999999999999</span><span style="color: #D4D4D4">))</span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">union all</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> nvl(q.PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">99999999999999</span><span style="color: #D4D4D4">) PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> temp_size, nvl(</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(PGA_MAX_MEM/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">) pga_size </span></span>
<span class="line"><span style="color: #D4D4D4">                      </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> v$process p, v$</span><span style="color: #569CD6">session</span><span style="color: #D4D4D4"> s, v$</span><span style="color: #569CD6">sql</span><span style="color: #D4D4D4"> q </span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> s.paddr=p.addr </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> s.sql_id = :sqlid</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> s.sql_id=q.sql_id(+) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> s.sql_child_number=q.child_number(+)</span></span>
<span class="line"><span style="color: #D4D4D4">                       </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> (:planHashValue </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> q.PLAN_HASH_VALUE </span><span style="color: #569CD6">is</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> q.PLAN_HASH_VALUE=to_number(:planHashValue))</span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> nvl(q.PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">99999999999999</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">union all</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> pa.PLAN_HASH_VALUE,nvl(</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(TEMP_SPACE_ALLOCATED/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">) temp_size, </span></span>
<span class="line"><span style="color: #D4D4D4">                           nvl(</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(PGA_ALLOCATED/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">1024</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">) pga_size </span></span>
<span class="line"><span style="color: #D4D4D4">                      </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pa</span></span>
<span class="line"><span style="color: #D4D4D4">                     </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> pa.PLAN_HASH_VALUE))</span></span>
<span class="line"><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+no_monitoring*/</span><span style="color: #D4D4D4">xxx</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> ID, </span><span style="color: #CE9178">&#39;SQL ID: &#39;</span><span style="color: #D4D4D4">||:sqlid xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Last Monitored Binds --------------&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> seq, to_number(</span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;.&#39;</span><span style="color: #D4D4D4">||session_serial#||</span><span style="color: #CE9178">&#39;000001&#39;</span><span style="color: #D4D4D4">) ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #CE9178">&#39;--SID: &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;,&#39;</span><span style="color: #D4D4D4">||session_serial#||chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||LISTAGG(</span><span style="color: #CE9178">&#39;var &#39;</span><span style="color: #D4D4D4">||substr(b.name,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||b.data_type,chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> b.name) xxx </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb b</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">GROUP BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">,session_serial#,sql_id</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> seq, to_number(</span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;.&#39;</span><span style="color: #D4D4D4">||session_serial#||</span><span style="color: #CE9178">&#39;000002&#39;</span><span style="color: #D4D4D4">) ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #CE9178">&#39;--SID: &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;,&#39;</span><span style="color: #D4D4D4">||session_serial#||chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||LISTAGG(</span><span style="color: #CE9178">&#39;exec &#39;</span><span style="color: #D4D4D4">||b.name||</span><span style="color: #CE9178">&#39;:=&#39;</span><span style="color: #D4D4D4">||decode(instr(b.data_type,</span><span style="color: #CE9178">&#39;NUMBER&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">||b.value||</span><span style="color: #CE9178">&#39;&#39;&#39;;&#39;</span><span style="color: #D4D4D4">,b.value),chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> b.name) xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb b</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">GROUP BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">sid</span><span style="color: #D4D4D4">,session_serial#,sql_id</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Last Captured Binds --------------&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> cb) </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> ID, var xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> cb</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> ID, exe xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> cb</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;B&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">exists</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> mb)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- SQL Text --------------&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> dual</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;T&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> *</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+no_merge*/</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">11</span><span style="color: #D4D4D4"> seq, </span><span style="color: #569CD6">level</span><span style="color: #D4D4D4"> ID, to_char(substr(sql_fulltext,(</span><span style="color: #569CD6">level</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)*</span><span style="color: #B5CEA8">2000</span><span style="color: #D4D4D4">+</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2000</span><span style="color: #D4D4D4">)) sql_text</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> q</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;T&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">connect</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">by</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">level</span><span style="color: #D4D4D4">&lt;=ceil(</span><span style="color: #569CD6">length</span><span style="color: #D4D4D4">(sql_fulltext)/</span><span style="color: #B5CEA8">2000</span><span style="color: #D4D4D4">))</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4"> seq, -</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- SQL Plan (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;; Parsed by schema:&#39;</span><span style="color: #D4D4D4">||PARSING_SCHEMA_NAME||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> p</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;P&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> *</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">/*+no_merge*/</span><span style="color: #D4D4D4">PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">31</span><span style="color: #D4D4D4"> seq, ID,</span></span>
<span class="line"><span style="color: #D4D4D4">               lpad(nvl2(access_predicates,</span><span style="color: #CE9178">&#39;*&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||nvl2(filter_predicates,</span><span style="color: #CE9178">&#39;#&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">)||ID,</span><span style="color: #B5CEA8">6</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||lpad(</span><span style="color: #CE9178">&#39;(&#39;</span><span style="color: #D4D4D4">||nvl(PARENT_ID||</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">6</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||LPAD(</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">,(</span><span style="color: #569CD6">LEVEL</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">))||OPERATION||DECODE(OTHER_TAG,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;*&#39;</span><span style="color: #D4D4D4">)||DECODE(OPTIONS,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; (&#39;</span><span style="color: #D4D4D4">||OPTIONS||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">)||DECODE(OBJECT_NAME,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; OF &#39;&#39;&#39;</span><span style="color: #D4D4D4">||OBJECT_NAME||</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">)||DECODE(OBJECT_TYPE,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; (&#39;</span><span style="color: #D4D4D4">||OBJECT_TYPE||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">)||DECODE(ID,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,DECODE(OPTIMIZER,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; Optimizer=&#39;</span><span style="color: #D4D4D4">||OPTIMIZER))||DECODE(COST,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; (Cost=&#39;</span><span style="color: #D4D4D4">||COST||DECODE(CARDINALITY,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; Card=&#39;</span><span style="color: #D4D4D4">||CARDINALITY)||DECODE(BYTES,</span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; Bytes=&#39;</span><span style="color: #D4D4D4">||BYTES)||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">) xxx </span><span style="color: #6A9955">--,OBJECT_NODE OBJECT_NODE_PLUS_EXP</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">FROM</span><span style="color: #D4D4D4"> P</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;P&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">START</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">WITH</span><span style="color: #D4D4D4"> ID=</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #569CD6">CONNECT</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">PRIOR</span><span style="color: #D4D4D4"> ID=PARENT_ID </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">PRIOR</span><span style="color: #D4D4D4"> SQL_ID=SQL_ID </span><span style="color: #569CD6">AND</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">PRIOR</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE=PLAN_HASH_VALUE)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Stored Outline (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, </span><span style="color: #CE9178">&#39;/*+&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> ID, lpad(</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;BEGIN_OUTLINE_DATA&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4"> ID,lpad(</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||hint xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">4</span><span style="color: #D4D4D4"> ID, lpad(</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;END_OUTLINE_DATA&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">33</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">5</span><span style="color: #D4D4D4"> ID, </span><span style="color: #CE9178">&#39;*/&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> OL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;O&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">35</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Peeked Binds (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pb</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;K&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">35</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID,</span></span>
<span class="line"><span style="color: #D4D4D4">               LISTAGG(</span><span style="color: #CE9178">&#39;var &#39;</span><span style="color: #D4D4D4">||substr(</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">||data_type,chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pb</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;K&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">35</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> ID,LISTAGG(</span><span style="color: #CE9178">&#39;exec &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;:=&#39;</span><span style="color: #D4D4D4">||decode(instr(data_type,</span><span style="color: #CE9178">&#39;NUMBER&#39;</span><span style="color: #D4D4D4">),</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;&#39;&#39;</span><span style="color: #D4D4D4">||</span><span style="color: #569CD6">value</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39;&#39;&#39;;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #569CD6">value</span><span style="color: #D4D4D4">),chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)) </span><span style="color: #569CD6">WITHIN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">GROUP</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">ORDER BY</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">) xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> pb</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;K&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">36</span><span style="color: #D4D4D4"> seq, -</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Predicate Information (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> P </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> ((access_predicates </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">or</span><span style="color: #D4D4D4"> (filter_predicates </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">))</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;D&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">36</span><span style="color: #D4D4D4"> seq, ID,lpad(id,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; Access: &#39;</span><span style="color: #D4D4D4">||access_predicates xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> P</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> (access_predicates </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;D&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">36</span><span style="color: #D4D4D4"> seq, ID,lpad(id,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39; Filter: &#39;</span><span style="color: #D4D4D4">||filter_predicates xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> P</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> (filter_predicates </span><span style="color: #569CD6">is not null</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;D&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> P.PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4"> seq, -</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Plan Loading (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||P.PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> P, PL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> P.PLAN_HASH_VALUE=PL.PLAN_HASH_VALUE </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.ID=SQL_PLAN_LINE_ID</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> total_waits&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;L&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> P.PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4"> seq, PL.TOTAL_WAITS-PL.WAITS ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               lpad(P.ID,</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;: &#39;</span><span style="color: #D4D4D4">||RPAD(PL.sql_plan_op,</span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||rpad(</span><span style="color: #CE9178">&#39;#&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(pl.waits/pl.total_waits*</span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;#&#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;(&#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(pl.waits/pl.total_waits*</span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;%)&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> P, PL</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> P.PLAN_HASH_VALUE=PL.PLAN_HASH_VALUE </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> p.ID=SQL_PLAN_LINE_ID</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> PL.total_waits&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;L&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select distinct</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">55</span><span style="color: #D4D4D4"> seq, -</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Waits Events (Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;) --------------&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> we</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> total_waits&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;W&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">UNION</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">55</span><span style="color: #D4D4D4"> seq, TOTAL_WAITS-WAITS ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               rpad(</span><span style="color: #569CD6">event</span><span style="color: #D4D4D4">||</span><span style="color: #CE9178">&#39; on &#39;</span><span style="color: #D4D4D4">||wait_object,</span><span style="color: #B5CEA8">75</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39; &#39;</span><span style="color: #D4D4D4">)||rpad(</span><span style="color: #CE9178">&#39;#&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(waits/total_waits*</span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4">),</span><span style="color: #CE9178">&#39;#&#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;(&#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(waits/total_waits*</span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;%)&#39;</span><span style="color: #D4D4D4"> xxx</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> we </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> total_waits&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;W&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">60</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> ID, chr(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;------------- Statistics Data &#39;</span><span style="color: #D4D4D4">||decode(PLAN_HASH_VALUE,</span><span style="color: #B5CEA8">99999999999999</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;(Plan Hash Value:&#39;</span><span style="color: #D4D4D4">||PLAN_HASH_VALUE||</span><span style="color: #CE9178">&#39;)&#39;</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;--------------&#39;</span><span style="color: #D4D4D4"> xxx </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> sd</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;S&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">60</span><span style="color: #D4D4D4"> seq, </span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">+to_number(substr(str,</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">,instr(str,</span><span style="color: #CE9178">&#39;,&#39;</span><span style="color: #D4D4D4">)-</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)) ID, substr(str,instr(str,</span><span style="color: #CE9178">&#39;,&#39;</span><span style="color: #D4D4D4">)+</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">) xxx</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #DCDCAA">trim</span><span style="color: #D4D4D4">(regexp_substr(str, </span><span style="color: #CE9178">&#39;[^&#39;</span><span style="color: #D4D4D4">||spliter||</span><span style="color: #CE9178">&#39;]+&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">level</span><span style="color: #D4D4D4">)) str </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> sd </span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #569CD6">connect</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">by</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">level</span><span style="color: #D4D4D4"> &lt;= </span><span style="color: #569CD6">length</span><span style="color: #D4D4D4"> (regexp_replace (str, </span><span style="color: #CE9178">&#39;[^&#39;</span><span style="color: #D4D4D4">||spliter||</span><span style="color: #CE9178">&#39;]+&#39;</span><span style="color: #D4D4D4">))  + </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">60</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">101</span><span style="color: #D4D4D4"> ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #CE9178">&#39;PGA Size(Maximum): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(nvl(pga_size,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">)),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;G&#39;</span><span style="color: #D4D4D4"> xxx </span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> ss</span></span>
<span class="line"><span style="color: #D4D4D4">         </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;S&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">         </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">union</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">select</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, </span><span style="color: #B5CEA8">60</span><span style="color: #D4D4D4"> seq, </span><span style="color: #B5CEA8">102</span><span style="color: #D4D4D4"> ID, </span></span>
<span class="line"><span style="color: #D4D4D4">               </span><span style="color: #CE9178">&#39;Temp Space(Maximum): &#39;</span><span style="color: #D4D4D4">||</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(nvl(temp_size,</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">)),</span><span style="color: #B5CEA8">3</span><span style="color: #D4D4D4">)||</span><span style="color: #CE9178">&#39;G&#39;</span><span style="color: #D4D4D4"> xxx </span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">from</span><span style="color: #D4D4D4"> ss</span></span>
<span class="line"><span style="color: #D4D4D4">         </span><span style="color: #569CD6">where</span><span style="color: #D4D4D4"> instr(:showOptions,</span><span style="color: #CE9178">&#39;S&#39;</span><span style="color: #D4D4D4">)&gt;</span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">         </span><span style="color: #569CD6">group by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE</span></span>
<span class="line"><span style="color: #D4D4D4">         </span><span style="color: #569CD6">order by</span><span style="color: #D4D4D4"> PLAN_HASH_VALUE, SEQ, ID, XXX)</span></span>
<span class="line"><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">undef </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">3</span></span>
<span class="line"><span style="color: #569CD6">set</span><span style="color: #D4D4D4"> head </span><span style="color: #569CD6">on</span></span>
<span class="line"><span style="color: #569CD6">clear</span><span style="color: #D4D4D4"> columns</span></span>
<span class="line"></span></code></pre></div>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Habilitando criptografia para um database MSSQL (TDE)</title>
		<link>https://furushima.com.br/blog/habilitando-criptografia-para-um-database-mssql-tde/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 18:31:36 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[lgpd]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[TDE]]></category>
		<guid isPermaLink="false">https://dev.furushima.com.br/?p=2162</guid>

					<description><![CDATA[Recentemente tivemos uma demanda por conta de LGPD, onde tivemos que habilitar criptografia na camada do Database em uma instancia MSSQL, utilizaremos de início TDE (Transparent database Encryption) como o nome já diz, será transparente para a nossa aplicação. È possível ver que a base está com Encryption Enabled = False. Primeiro iremos criar a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Recentemente tivemos uma demanda por conta de LGPD, onde tivemos que habilitar criptografia na camada do Database em uma instancia MSSQL, utilizaremos de início TDE (Transparent database Encryption) como o nome já diz, será transparente para a nossa aplicação.</p>



<p>È possível ver que a base está com Encryption Enabled = False.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="592" height="156" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image.png" alt="" class="wp-image-2163" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image.png 592w, https://furushima.com.br/wp-content/uploads/2024/04/image-300x79.png 300w" sizes="(max-width: 592px) 100vw, 592px" /></figure>



<p>Primeiro iremos criar a Master Key, esta chave terá um password, é muito importante salvá-lo.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="588" height="227" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-1.png" alt="" class="wp-image-2164" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-1.png 588w, https://furushima.com.br/wp-content/uploads/2024/04/image-1-300x116.png 300w" sizes="(max-width: 588px) 100vw, 588px" /></figure>



<p>E então criaremos o certificado que a Master Key irá utilizar.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="609" height="178" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-2.png" alt="" class="wp-image-2165" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-2.png 609w, https://furushima.com.br/wp-content/uploads/2024/04/image-2-300x88.png 300w" sizes="(max-width: 609px) 100vw, 609px" /></figure>



<p></p>



<p>Validando a criação do certificado através da query.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT name, pvt_key_encryption_type_desc, thumbprint FROM sys.certificates;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> name, pvt_key_encryption_type_desc, thumbprint </span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.certificates;</span></span></code></pre></div>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="709" height="223" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-3.png" alt="" class="wp-image-2166" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-3.png 709w, https://furushima.com.br/wp-content/uploads/2024/04/image-3-300x94.png 300w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<p>Agora deveremos conectar no database que iremos criptografar e criar a encryption key dentro deste database utilizando o certificado que criamos em nossa master.</p>



<p>Estamos utilizando o Algoritmo AES_256</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="USE <DATABASE&gt;;

CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256

ENCRYPTION BY SERVER CERTIFICATE TDE_CERT_GM;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">USE</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">&lt;</span><span style="color: #79B8FF">DATABASE</span><span style="color: #F97583">&gt;</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #79B8FF">CREATE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">DATABASE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">ENCRYPTION</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">KEY</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">WITH</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">ALGORITHM</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">AES_256</span></span>
<span class="line"></span>
<span class="line"><span style="color: #79B8FF">ENCRYPTION</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">BY</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">SERVER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">CERTIFICATE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">TDE_CERT_GM</span><span style="color: #E1E4E8">;</span></span></code></pre></div>



<p></p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="716" height="308" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-5.png" alt="" class="wp-image-2168" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-5.png 716w, https://furushima.com.br/wp-content/uploads/2024/04/image-5-300x129.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></figure>



<p>Podemos ver que recebemos um Aviso ao executar o comando, e está dizendo que devemos fazer um backup imediatamente deste certificado e sua chave privada, senão em caso de algum restore, não poderemos abrir mais este database sem estes itens!</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Warning: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated with the certificate. If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database." style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #B392F0">Warning</span><span style="color: #E1E4E8">: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated </span><span style="color: #F97583">with</span><span style="color: #E1E4E8"> the certificate. If the certificate ever becomes unavailable or </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> you must restore or attach the database on another server, you must have backups </span><span style="color: #F97583">of</span><span style="color: #E1E4E8"> both the certificate and the private key or you will not be able to open the database.</span></span></code></pre></div>



<p>Vamos agora vamos habilitar a criptografia em nosso database.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="709" height="182" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-6.png" alt="" class="wp-image-2169" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-6.png 709w, https://furushima.com.br/wp-content/uploads/2024/04/image-6-300x77.png 300w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<p></p>



<p>Esta etapa pode demorar um pouco, dependendo do tamanho do seu database, e pode ser avaliado o progresso através da query abaixo.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="DECLARE @state tinyint;<br&gt;DECLARE @encyrption_progress<br&gt;TABLE(sample_time DATETIME, percent_complete DECIMAL(5,2))" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">DECLARE</span><span style="color: #E1E4E8"> @state tinyint;</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">DECLARE</span><span style="color: #E1E4E8"> @encyrption_progress</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #B392F0">TABLE</span><span style="color: #E1E4E8">(sample_time </span><span style="color: #79B8FF">DATETIME</span><span style="color: #E1E4E8">, percent_complete </span><span style="color: #B392F0">DECIMAL</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">5</span><span style="color: #E1E4E8">,</span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">))</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT @state = k.encryption_state<br&gt;FROM sys.dm_database_encryption_keys k<br&gt;INNER JOIN sys.databases d<br&gt;ON k.database_id = d.database_id<br&gt;WHERE d.name = ‘TestTDE’;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> k.encryption_state</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="WHILE @state != 3<br&gt;BEGIN<br&gt;INSERT INTO @encyrption_progress(sample_time, percent_complete)<br&gt;SELECT GETDATE(), percent_complete<br&gt;FROM sys.dm_database_encryption_keys k<br&gt;INNER JOIN sys.databases d<br&gt;ON k.database_id = d.database_id<br&gt;WHERE d.name = ‘TestTDE’;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">WHILE</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">!=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">3</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">BEGIN</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INSERT</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">INTO</span><span style="color: #E1E4E8"> @</span><span style="color: #B392F0">encyrption_progress</span><span style="color: #E1E4E8">(sample_time, percent_complete)</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">GETDATE</span><span style="color: #E1E4E8">(), percent_complete</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="WAITFOR delay ’00:00:01′;SELECT @state = k.encryption_state&lt;br&gt;FROM sys.dm_database_encryption_keys k&lt;br&gt;INNER JOIN sys.databases d&lt;br&gt;ON k.database_id = d.database_id&lt;br&gt;WHERE d.name = ‘TestTDE’;&lt;br&gt;END" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">WAITFOR</span><span style="color: #E1E4E8"> delay ’</span><span style="color: #79B8FF">00</span><span style="color: #E1E4E8">:</span><span style="color: #79B8FF">00</span><span style="color: #E1E4E8">:</span><span style="color: #79B8FF">01</span><span style="color: #E1E4E8">′;</span><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> k.encryption_state</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">END</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT * FROM @encyrption_progress;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">*</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> @encyrption_progress;</span></span></code></pre></div>



<p></p>



<p>E então nosso database está criptografado!</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="915" height="181" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-7.png" alt="" class="wp-image-2170" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-7.png 915w, https://furushima.com.br/wp-content/uploads/2024/04/image-7-300x59.png 300w, https://furushima.com.br/wp-content/uploads/2024/04/image-7-768x152.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></figure>



<p>Mas antes de finalizarmos, lembra do nosso Warning?</p>



<p>Precisamos Fazer um backup de nosso certificado e master Key! Não deixe isso para depois, pode ser um problemão!</p>



<p>Todos estes itens estão vinculados ao database Master, então devemos dar um use neste database, você deverá utilizar a mesma senha que fez para criação da Master Key.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>use master;</p>



<p>— Servico MK<br>BACKUP SERVICE MASTER KEY<br>TO FILE = ‘G:\TDE\svcMASTERKEY.bak’<br>ENCRYPTION BY PASSWORD = ‘XPTO’;</p>



<p>— MK<br>BACKUP MASTER KEY<br>TO FILE = ‘G:\TDE\MASTERKEY.key’<br>ENCRYPTION BY PASSWORD = ‘XPTO’;</p>



<p>— CERTIFICATE<br>BACKUP CERTIFICATE TDE_CERT_GM<br>TO FILE = ‘G:\TDE\TDE_CERT_GM.cert’<br>WITH PRIVATE KEY(<br>FILE = ‘G:\ TDE\TDE_CERT_GM.prvk’,<br>ENCRYPTION BY PASSWORD = ‘XPTO’<br>);</p>
</blockquote>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="801" height="378" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-8.png" alt="" class="wp-image-2171" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-8.png 801w, https://furushima.com.br/wp-content/uploads/2024/04/image-8-300x142.png 300w, https://furushima.com.br/wp-content/uploads/2024/04/image-8-768x362.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></figure>



<p>E então finalizamos nossa implementação de TDE , para outros databases , você deverá apenas repetir o procedimento depois da criação do certificado.</p>



<p>Lembre-se de armazenar esses backups sempre em lugares seguro e suas respectivas senhas.</p>



<p>Até a Próxima!</p>



<p></p>



<p><strong><em>Criado por: Matsuo Furushima</em></strong></p>



<p></p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
