<?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>ORACLE &#8211; Furushima</title>
	<atom:link href="https://furushima.com.br/blog/tag/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>https://furushima.com.br</link>
	<description>- Consultoria de Banco de Dados &#124; Furushima</description>
	<lastBuildDate>Tue, 10 Jun 2025 11:04:16 +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>ORACLE &#8211; Furushima</title>
	<link>https://furushima.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Estruturas de Armazenamento do Oracle</title>
		<link>https://furushima.com.br/blog/estruturas-de-armazenamento-do-oracle/</link>
		
		<dc:creator><![CDATA[Weverton Amorim]]></dc:creator>
		<pubDate>Tue, 10 Jun 2025 10:59:20 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[ORACLE]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2841</guid>

					<description><![CDATA[Como o Oracle armazena os dados? A estrutura de armazenamento do Oracle Database é projetada para ser altamente eficiente e flexível, permitindo o armazenamento e o gerenciamento de grandes volumes de dados de forma organizada e segura. Visão Geral da Estrutura de Armazenamento O Oracle organiza os dados em várias camadas hierárquicas, garantindo escalabilidade e [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Como o Oracle armazena os dados?</h3>



<p>A estrutura de armazenamento do <strong>Oracle Database</strong> é projetada para ser altamente eficiente e flexível, permitindo o armazenamento e o gerenciamento de grandes volumes de dados de forma organizada e segura. </p>



<h3 class="wp-block-heading">Visão Geral da Estrutura de Armazenamento</h3>



<p>O Oracle organiza os dados em várias camadas hierárquicas, garantindo escalabilidade e otimização. As principais estruturas de armazenamento do Oracle são:</p>



<ul class="wp-block-list">
<li><strong>Database</strong> (Banco de dados)</li>



<li><strong>Tablespace</strong></li>



<li><strong>Segment</strong></li>



<li><strong>Extent</strong></li>



<li><strong>Oracle Data Block</strong></li>
</ul>



<p>Cada um desses níveis desempenha um papel importante na organização e armazenamento dos dados.</p>



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



<p>No nível mais alto da hierarquia, temos o <strong>Database</strong>. O banco de dados Oracle é composto por vários arquivos de dados que armazenam as informações do usuário e os metadados necessários para o funcionamento do sistema. Ele é o contêiner principal que engloba todos os outros componentes de armazenamento.</p>



<p>O Oracle Database é composto por três tipos principais de arquivos:</p>



<ul class="wp-block-list">
<li><strong>Datafiles</strong>: Armazenam os dados reais.</li>



<li><strong>Redo Log Files</strong>: Guardam um histórico das alterações no banco, usados para recuperação em caso de falhas.</li>



<li><strong>Control Files</strong>: Contêm informações estruturais sobre o banco, como a localização dos datafiles e redo logs.</li>
</ul>



<figure class="wp-block-image size-full"><img alt="" fetchpriority="high" decoding="async" width="823" height="695" src="https://furushima.com.br/wp-content/uploads/2025/06/image.png" alt="" class="wp-image-2842" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image.png 823w, https://furushima.com.br/wp-content/uploads/2025/06/image-300x253.png 300w, https://furushima.com.br/wp-content/uploads/2025/06/image-768x649.png 768w" sizes="(max-width: 823px) 100vw, 823px" /></figure>



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



<p>O <strong>Tablespace</strong> é o próximo nível da hierarquia e age como um contêiner lógico para organizar os dados dentro do banco de dados. Ele agrupa múltiplos <strong>datafiles</strong>, que são arquivos físicos no sistema operacional onde os dados reais são armazenados. Um banco de dados pode ter vários tablespaces, sendo cada um especializado em armazenar diferentes tipos de objetos de dados.</p>



<p>Os <strong>tablespaces</strong> podem ser divididos em dois tipos principais:</p>



<ul class="wp-block-list">
<li><strong>Permanent Tablespaces</strong>: Armazenam dados persistentes, como tabelas e índices.</li>



<li><strong>Temporary Tablespaces</strong>: Usados para operações temporárias, como ordenações ou junções de dados durante consultas.</li>
</ul>



<p>Exemplos comuns de tablespaces incluem:</p>



<ul class="wp-block-list">
<li><strong>SYSTEM</strong>: Onde ficam os dicionários de dados (metadados do banco).</li>



<li><strong>SYSAUX</strong>: Um tablespace auxiliar para armazenar componentes não-críticos, como o AWR.</li>



<li><strong>USERS</strong>: Um tablespace típico onde são armazenados os dados dos usuários.</li>
</ul>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="650" height="495" src="https://furushima.com.br/wp-content/uploads/2025/06/image-1.png" alt="" class="wp-image-2843" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image-1.png 650w, https://furushima.com.br/wp-content/uploads/2025/06/image-1-300x228.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



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



<p>Dentro de cada <strong>tablespace</strong>, encontramos os <strong>segments</strong>. Um <strong>segmento</strong> é um espaço lógico alocado para armazenar um tipo específico de objeto de banco de dados, como uma <strong>tabela</strong>, <strong>índice</strong>, <strong>view materializada</strong>, <strong>rollback segment</strong>, etc.</p>



<p>Cada tipo de segmento desempenha um papel específico:</p>



<ul class="wp-block-list">
<li><strong>Data Segments</strong>: Armazenam os dados reais das tabelas.</li>



<li><strong>Index Segments</strong>: Contêm os índices de tabelas para melhorar a performance de busca.</li>



<li><strong>Temporary Segments</strong>: Usados para operações temporárias, como ao realizar consultas grandes.</li>



<li><strong>Undo Segments</strong>: Utilizados para manter o controle das transações para garantir a consistência dos dados e permitir rollback.</li>
</ul>



<p>Os segmentos são compostos por unidades de espaço chamadas <strong>extents</strong>.</p>



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



<p>Um <strong>extent</strong> é uma unidade contígua de espaço dentro de um segmento, onde os dados são armazenados fisicamente nos datafiles. Um segmento é composto por um ou mais extents, que são alocados conforme necessário para acomodar o crescimento do objeto de banco de dados (como uma tabela que aumenta de tamanho).</p>



<p>Quando um segmento precisa de mais espaço, o Oracle aloca um novo extent para ele. Os extents garantem que os dados sejam armazenados em blocos contínuos, o que melhora a eficiência de leitura/escrita.</p>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="607" height="406" src="https://furushima.com.br/wp-content/uploads/2025/06/image-2.png" alt="" class="wp-image-2844" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image-2.png 607w, https://furushima.com.br/wp-content/uploads/2025/06/image-2-300x201.png 300w" sizes="(max-width: 607px) 100vw, 607px" /></figure>



<h3 class="wp-block-heading">Oracle Data Block</h3>



<p>O nível mais baixo da hierarquia de armazenamento é o <strong>Oracle Data Block</strong>, também chamado de <strong>database block</strong> ou <strong>data block</strong>. Os <strong>data blocks</strong> representam a menor unidade de armazenamento no Oracle Database. Cada <strong>extent</strong> é composto de múltiplos <strong>data blocks</strong>.</p>



<p>Os <strong>data blocks</strong> armazenam os dados reais, como as linhas de uma tabela. Eles são a interface entre o banco de dados e o sistema de arquivos subjacente. O tamanho dos <strong>data blocks</strong> é configurável e pode variar (tipicamente 4KB, 8KB, 16KB ou 32KB), dependendo das necessidades do ambiente.</p>



<p>Os <strong>data blocks</strong> contêm várias informações, além dos dados do usuário, como cabeçalhos que registram metadados importantes, como o endereço do bloco e informações de transações.</p>



<h3 class="wp-block-heading">Componentes de um Oracle Data Block</h3>



<p>Um <strong>data block</strong> possui várias subestruturas:</p>



<ol class="wp-block-list">
<li><strong>Cabeçalho do Bloco (Block Header)</strong>: Contém metadados sobre o bloco, como o endereço do bloco, identificadores de transações ativas e status de formatação.</li>



<li><strong>Tabela de Diretório (Table Directory)</strong>: Mantém informações sobre as tabelas cujos dados estão armazenados neste bloco (importante em caso de blocos com dados de mais de uma tabela).</li>



<li><strong>Tabela de Linhas (Row Directory)</strong>: Lista de ponteiros para as linhas reais armazenadas no bloco.</li>



<li><strong>Linhas de Dados</strong>: São os dados reais das colunas de uma tabela.</li>



<li><strong>Espaço Livre (Free Space)</strong>: Espaço não utilizado no bloco que pode ser usado para inserções futuras ou expansões de linhas.</li>



<li><strong>Gerenciamento de Espaço</strong>: O Oracle utiliza métodos sofisticados para o gerenciamento de espaço dentro dos blocos, como o <strong>PCTFREE</strong> (percentual de espaço reservado para futuras atualizações) e <strong>PCTUSED</strong> (percentual de ocupação após o qual novos dados podem ser inseridos no bloco).</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img alt="" loading="lazy" decoding="async" width="737" height="781" src="https://furushima.com.br/wp-content/uploads/2025/06/image-3.png" alt="" class="wp-image-2845" style="width:741px;height:auto" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image-3.png 737w, https://furushima.com.br/wp-content/uploads/2025/06/image-3-283x300.png 283w" sizes="(max-width: 737px) 100vw, 737px" /></figure>



<h3 class="wp-block-heading">Tabelas e Índices no Oracle Data Block</h3>



<p>Os <strong>data blocks</strong> podem armazenar dados de tabelas e índices. Ao trabalhar com tabelas:</p>



<ul class="wp-block-list">
<li>As <strong>linhas</strong> da tabela são armazenadas dentro dos <strong>data blocks</strong>.</li>



<li>Em caso de atualização, se a linha de dados crescer e não couber no bloco original, pode ocorrer a <strong>migração de linhas</strong> ou <strong>encadeamento de linhas</strong>, em que a linha é movida para outro bloco, o que pode afetar a performance.</li>
</ul>



<p>No caso de índices, os <strong>data blocks</strong> são usados para armazenar as estruturas de árvore B-tree que organizam e aceleram a busca de dados.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="770" height="673" src="https://furushima.com.br/wp-content/uploads/2025/06/image-4.png" alt="" class="wp-image-2846" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image-4.png 770w, https://furushima.com.br/wp-content/uploads/2025/06/image-4-300x262.png 300w, https://furushima.com.br/wp-content/uploads/2025/06/image-4-768x671.png 768w" sizes="(max-width: 770px) 100vw, 770px" /></figure>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="538" height="352" src="https://furushima.com.br/wp-content/uploads/2025/06/image-5.png" alt="" class="wp-image-2847" srcset="https://furushima.com.br/wp-content/uploads/2025/06/image-5.png 538w, https://furushima.com.br/wp-content/uploads/2025/06/image-5-300x196.png 300w" sizes="(max-width: 538px) 100vw, 538px" /></figure>



<p><br>No <strong>Oracle Database</strong>, a parametrização de armazenamento em uma tabela, definida pela cláusula <strong>STORAGE</strong>, determina como o espaço em disco será alocado e gerenciado para essa tabela. Esses parâmetros são essenciais para otimizar o uso de espaço, controlar o crescimento dos segmentos e reduzir a fragmentação. Eles influenciam aspectos como o tamanho dos extents, a reserva de espaço para atualizações futuras e a frequência de alocação de novos extents. Vamos explorar esses parâmetros com base na tabela de exemplo <strong>&#8220;empregados&#8221;</strong>:</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 empregados (
    empregado_id NUMBER PRIMARY KEY,
    nome VARCHAR2(100),
    cargo VARCHAR2(50),
    salario NUMBER(10, 2),
    data_admissao DATE DEFAULT SYSDATE,
    departamento_id NUMBER,
    CONSTRAINT fk_departamento
    FOREIGN KEY (departamento_id) REFERENCES departamentos(departamento_id)
) TABLESPACE meu_tablespace
STORAGE (
    INITIAL 64K
    NEXT 128K
    PCTINCREASE 0
)
PCTFREE 10
PCTUSED 40;" 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: #4FC1FF">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">TABLE</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">empregados</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">empregado_id</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">NUMBER</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">PRIMARY</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">KEY</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">nome</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">VARCHAR2</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: #9CDCFE">cargo</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">VARCHAR2</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">salario</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">NUMBER</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">10</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">    </span><span style="color: #9CDCFE">data_admissao</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">DEFAULT</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">SYSDATE</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">departamento_id</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">NUMBER</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4FC1FF">CONSTRAINT</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">fk_departamento</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4FC1FF">FOREIGN</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">KEY</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">departamento_id</span><span style="color: #D4D4D4">) </span><span style="color: #4FC1FF">REFERENCES</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">departamentos</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">departamento_id</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">) </span><span style="color: #4FC1FF">TABLESPACE</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">meu_tablespace</span></span>
<span class="line"><span style="color: #DCDCAA">STORAGE</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4FC1FF">INITIAL</span><span style="color: #D4D4D4"> 64</span><span style="color: #4FC1FF">K</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4FC1FF">NEXT</span><span style="color: #D4D4D4"> 128</span><span style="color: #4FC1FF">K</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4FC1FF">PCTINCREASE</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span></span>
<span class="line"><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #4FC1FF">PCTFREE</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">10</span></span>
<span class="line"><span style="color: #4FC1FF">PCTUSED</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">40</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<h3 class="wp-block-heading">Parâmetros de Armazenamento (STORAGE Clause)</h3>



<h3 class="wp-block-heading">1. INITIAL</h3>



<ul class="wp-block-list">
<li><strong>Descrição</strong>: Define o tamanho do primeiro <strong>extent</strong> alocado para o segmento da tabela. Um <strong>extent</strong> é uma unidade contígua de espaço no disco alocada para armazenar dados.</li>



<li><strong>Exemplo</strong>: <kbd>"INITIAL 64K"</kbd> significa que o primeiro extent terá 64 kilobytes. Isso determina o espaço inicial reservado para a tabela ao ser criada, influenciando a capacidade inicial de armazenamento.</li>
</ul>



<h3 class="wp-block-heading">2. NEXT</h3>



<ul class="wp-block-list">
<li><strong>Descrição</strong>: Especifica o tamanho dos <strong>extents</strong> subsequentes alocados após o primeiro. À medida que a tabela cresce e o primeiro extent é preenchido, um novo extent é alocado com o tamanho definido aqui.</li>



<li><strong>Exemplo</strong>: <kbd>"NEXT 128K"</kbd> indica que cada novo extent alocado após o primeiro terá 128 kilobytes. Esse valor ajuda a controlar o crescimento da tabela ao longo do tempo, garantindo alocações eficientes de espaço.</li>
</ul>



<h3 class="wp-block-heading">3. PCTINCREASE</h3>



<ul class="wp-block-list">
<li><strong>Descrição</strong>: Define a porcentagem de aumento de cada novo extent em relação ao anterior. Isso controla o crescimento progressivo dos extents.</li>



<li><strong>Exemplo</strong>: <kbd>"PCTINCREASE 0"</kbd> indica que todos os extents subsequentes terão o mesmo tamanho definido em <kbd>"NEXT"</kbd>, ou seja, 128K. Se fosse configurado um valor diferente de zero, cada novo extent seria maior que o anterior, aumentando pela porcentagem especificada. Por exemplo, se <kbd>"PCTINCREASE"</kbd> fosse 50, o próximo extent após 128K seria 192K (50% maior).</li>
</ul>



<h3 class="wp-block-heading">Outros Parâmetros de Tabela</h3>



<h3 class="wp-block-heading">1. PCTFREE</h3>



<ul class="wp-block-list">
<li><strong>Descrição</strong>: Determina a porcentagem de espaço em cada <strong>data block</strong> que é reservada para futuras atualizações de linhas já existentes. Isso garante que, ao alterar valores de uma linha, o bloco tenha espaço suficiente para armazenar os novos dados sem precisar movê-los para um bloco diferente.</li>



<li><strong>Exemplo</strong>: <kbd>"PCTFREE 10"</kbd> reserva 10% de cada <strong>data block</strong> para atualizações futuras. Se uma linha for atualizada e seus novos dados excederem o espaço previamente alocado para ela, os 10% reservados serão usados para evitar a migração de linhas para outros blocos, o que poderia impactar a performance.</li>
</ul>



<h3 class="wp-block-heading">2. PCTUSED</h3>



<ul class="wp-block-list">
<li><strong>Descrição</strong>: Define a porcentagem mínima de ocupação de um <strong>data block</strong> antes que ele seja reutilizado para novas inserções de dados. Após a exclusão ou movimentação de linhas, se o percentual de uso do bloco cair abaixo desse limite, o bloco será reutilizado para novas inserções.</li>



<li><strong>Exemplo</strong>: <kbd>"PCTUSED 40"</kbd> indica que, quando a ocupação do bloco cair abaixo de 40%, ele será marcado como disponível para novas inserções de dados. Esse parâmetro ajuda a evitar fragmentação e melhora a eficiência na reutilização de blocos parcialmente cheios.</li>
</ul>



<h3 class="wp-block-heading">Como Esses Parâmetros Funcionam Juntos</h3>



<ol class="wp-block-list">
<li><strong>Alocação Inicial e Crescimento de Extents</strong>:
<ul class="wp-block-list">
<li>Ao criar a tabela, o Oracle aloca um <strong>extent</strong> inicial de 64K, conforme definido em <kbd>"INITIAL"</kbd>. À medida que os dados são inseridos e o extent inicial é preenchido, o Oracle aloca novos <strong>extents</strong> de 128K, conforme especificado em <kbd>"NEXT"</kbd>. Como <kbd>"PCTINCREASE"</kbd> está definido como 0, todos os extents subsequentes terão o mesmo tamanho de 128K. Isso mantém o crescimento linear e previsível da tabela.</li>
</ul>
</li>



<li><strong>Gerenciamento de Espaço Livre em Data Blocks</strong>:
<ul class="wp-block-list">
<li>O parâmetro <kbd>"PCTFREE 10"</kbd> garante que 10% de cada <strong>data block</strong> seja reservado para atualizações de dados. Isso é importante para evitar que atualizações frequentes de linhas movam os dados para novos blocos, o que reduziria a eficiência de leitura. Esse espaço reservado permite que as linhas cresçam dentro do mesmo bloco.</li>



<li>O parâmetro <kbd>"PCTUSED 40"</kbd> garante que blocos parcialmente utilizados sejam reutilizados para novas inserções quando sua ocupação cair abaixo de 40%. Isso ajuda a evitar o desperdício de espaço em blocos que não estão completamente cheios e reduz a necessidade de alocar novos blocos, otimizando o uso do espaço.</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">Benefícios da Configuração Correta dos Parâmetros de Armazenamento</h3>



<p>Ao configurar corretamente os parâmetros de armazenamento, é possível otimizar o uso de espaço e melhorar a performance da tabela. Esses parâmetros permitem ao DBA:</p>



<ul class="wp-block-list">
<li><strong>Controlar o crescimento do segmento</strong>: Ao especificar tamanhos adequados para os extents e definir políticas claras para a alocação subsequente, o crescimento da tabela é gerenciado de maneira eficiente, evitando fragmentação excessiva.</li>



<li><strong>Gerenciar atualizações e inserções</strong>: Parâmetros como <kbd>"PCTFREE"</kbd> e <kbd>"PCTUSED"</kbd> garantem que os blocos de dados sejam utilizados de forma inteligente, reservando espaço para atualizações e reutilizando blocos que ficaram abaixo da ocupação mínima.</li>



<li><strong>Prevenir fragmentação</strong>: O controle da alocação de extents e a reutilização de blocos parcialmente ocupados ajudam a minimizar a fragmentação, o que melhora a performance de leitura e escrita no banco de dados.</li>
</ul>



<p></p>



<p>Esses parâmetros, quando bem configurados, são ferramentas poderosas para otimizar o armazenamento e o desempenho de tabelas no Oracle Database, garantindo uma utilização eficiente dos recursos de hardware e mantendo a performance à medida que a tabela cresce e é atualizada ao longo do tempo.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Oracle Database Fases de Startup/Shutdown</title>
		<link>https://furushima.com.br/blog/oracle-database-fases-de-startup-shutdown/</link>
		
		<dc:creator><![CDATA[Weverton Amorim]]></dc:creator>
		<pubDate>Tue, 29 Apr 2025 15:11:13 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ORACLE]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2818</guid>

					<description><![CDATA[Iniciando a instância do banco de dados Oracle Antes que os usuários possam se conectar a uma instância de banco de dados, um administrador de banco de dados deve iniciar a instância do banco de dados. A instância e o banco de dados passam por estágios à medida que o banco de dados é disponibilizado [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Iniciando a instância do banco de dados Oracle</h3>



<p><br>Antes que os usuários possam se conectar a uma instância de banco de dados, um administrador de banco de dados deve iniciar a instância do banco de dados. A instância e o banco de dados passam por estágios à medida que o banco de dados é disponibilizado para acesso pelos usuários. A instância é iniciada, o banco de dados é montado e, em seguida, o banco de dados é aberto, como mostrado no slide.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="1006" height="478" src="https://furushima.com.br/wp-content/uploads/2025/04/image-6.png" alt="" class="wp-image-2819" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-6.png 1006w, https://furushima.com.br/wp-content/uploads/2025/04/image-6-300x143.png 300w, https://furushima.com.br/wp-content/uploads/2025/04/image-6-768x365.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></figure>



<p><br><strong>NOMOUNT</strong>: Nesta etapa, o software Oracle lê um arquivo de parâmetros de inicialização, <strong>PFILE</strong> ou <strong>SPFILE</strong>, inicia os processos em segundo plano, aloca memória para a SGA, abre o log de alerta e os arquivos de rastreamento. Uma instância é tipicamente iniciada apenas no modo NOMOUNT durante a criação do banco de dados, durante a recriação de arquivos de controle ou em cenários específicos de backup e recuperação.</p>



<p><br><strong>MOUNT</strong>: Nesta etapa, o software Oracle associa o banco de dados à instância de banco de dados previamente iniciada, abre e lê o controlefile especificado no arquivo de parâmetros de inicialização, <strong>PFILE</strong> ou <strong>SPFILE,</strong> e obtém os nomes e estados dos datafiles e dos redo logs. No entanto, nesta fase, não são realizadas verificações para confirmar a existência dos datafiles e dos redo logs. Iniciar no modo MOUNT para executar algumas operações de manutenção, como renomear datafiles e realizar restore do banco de dados.</p>



<p><br><strong>OPEN</strong>: O software Oracle abre os redo logs e os datafiles de acordo com a lista registrada no controlefile. Inicie no modo OPEN para permitir que os usuários se conectem à instância do banco de dados. Os PDBs não são iniciados por padrão quando você abre o banco de dados.</p>



<p></p>



<h3 class="wp-block-heading">Desligando a instância do banco de dados Oracle</h3>



<p></p>



<p>Às vezes, é necessário desligar a instância do banco de dados (por exemplo, para alterar um parâmetro estático ou aplicar um patch no servidor do banco de dados).</p>



<p>Use o comando SHUTDOWN para desligar a instância do banco de dados, porém há vários modos possívels de se desligar a instância: ABORT, IMMEDIATE, NORMAL e TRANSACTIONAL.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td></td><td>ABORT</td><td>IMMEDIATE</td><td>NORMAL</td><td>TRANSACTIONAL</td></tr><tr><td>Permite novas conexões</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td></tr><tr><td>Espera até que todas as sessões terminem</td><td>NO</td><td>NO</td><td>YES</td><td>NO</td></tr><tr><td>Espera até que todas as transações terminem</td><td>NO</td><td>NO</td><td>YES</td><td>YES</td></tr><tr><td>Força um checkpoint e fecha os todos os arquivos</td><td>NO</td><td>YES</td><td>YES</td><td>YES</td></tr></tbody></table></figure>



<p><br><strong>ABORT</strong>: Se os outros modos de desligamento não funcionarem, você pode usar o modo ABORT. O modo ABORT executa a menor quantidade de trabalho antes de desligar. Como esse modo coloca o banco de dados em um estado inconsistente e requer recuperação antes do reinício, use-o apenas quando necessário. Não é aconselhável fazer backup do banco de dados nesse estado. Geralmente, é usado quando nenhuma outra forma de desligamento funciona, quando há problemas para iniciar a instância do banco de dados ou quando você precisa desligar imediatamente devido a uma situação iminente (como aviso de queda de energia em questão de segundos). O modo ABORT costuma ser o modo de desligamento mais rápido, e o modo NORMAL é o mais lento. Os modos NORMAL e TRANSACTIONAL podem levar muito tempo, dependendo do número de sessões e transações.</p>



<p><br>Durante um desligamento no modo ABORT, uma falha na instância ou um reinício da instância do banco de dados no modo FORCE, o que acontece com o banco de dados:</p>



<ul class="wp-block-list">
<li>As declarações SQL atuais sendo processadas pelo servidor Oracle são imediatamente interrompidas.</li>



<li>O servidor Oracle não espera pelos usuários que estão atualmente conectados ao banco de dados se desconectarem.</li>



<li>Os buffers do banco de dados e de redo não são gravados em disco.</li>



<li>Transações não confirmadas não são revertidas.</li>



<li>A instância é terminada sem fechar os arquivos.</li>



<li>O banco de dados não é fechado ou desmontado.</li>



<li>O próximo reinício requer recuperação da instância, que ocorre automaticamente pelo processo SMON.</li>
</ul>



<p></p>



<p><strong>IMMEDIATE</strong>: Um desligamento no modo <strong>IMMEDIATE</strong> é a opção mais utilizada. • As declarações SQL atuais sendo processadas pela instância do banco de dados não são concluídas. • O servidor de banco de dados não espera pelos usuários que estão atualmente conectados à instância do banco de dados se desconectarem. • O servidor de banco de dados faz rollback das transações ativas e desconecta todos os usuários conectados. • O servidor de banco de dados fecha e desmonta o banco de dados antes de desligar a instância do banco de dados.</p>



<p><strong>NORMAL</strong>: NORMAL é o modo de desligamento padrão se nenhum modo for especificado com o comando SHUTDOWN. • Novas conexões não podem ser feitas. • O servidor Oracle <strong>espera</strong> que todos os usuários se desconectem antes de concluir o desligamento. • Buffers de banco de dados e de redo são gravados em disco. • Processos em segundo plano são terminados e a SGA é removida da memória. • O servidor Oracle fecha e desmonta o banco de dados antes de desligar a instância.</p>



<p><strong>TRANSACTIONAL</strong>: Um desligamento no modo TRANSACTIONAL impede que os clientes percam dados, incluindo resultados de sua atividade atual. • Nenhum cliente pode iniciar uma nova transação nesta instância específica. • Um cliente é desconectado quando o cliente encerra a transação que está em andamento. • Quando todas as transações forem concluídas, ocorre um desligamento imediato.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="1017" height="511" src="https://furushima.com.br/wp-content/uploads/2025/04/image-7.png" alt="" class="wp-image-2820" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-7.png 1017w, https://furushima.com.br/wp-content/uploads/2025/04/image-7-300x151.png 300w, https://furushima.com.br/wp-content/uploads/2025/04/image-7-768x386.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></figure>



<p></p>



<h3 class="wp-block-heading">Exemplos práticos:</h3>



<p>Executando apenas o comando <strong>STARTUP</strong> é possível verificar todas as etapas que a instância transita até o estado <strong>OPEN</strong>, onde a base de dados está aberta e pronta para receber conexões:</p>



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



<p>É possível escolher a fase de inicialização da instância utilizando as opções <strong>NOMOUNT</strong> ou <strong>MOUNT</strong>:</p>



<p><strong>STARTUP NOMOUNT</strong>, o arquivo de parametros PFILE ou SPFILE será lido e apenas a instância fará a alocação na memória:</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="610" height="233" src="https://furushima.com.br/wp-content/uploads/2025/04/image-9.png" alt="" class="wp-image-2822" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-9.png 610w, https://furushima.com.br/wp-content/uploads/2025/04/image-9-300x115.png 300w" sizes="(max-width: 610px) 100vw, 610px" /></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="-- VERIFICAR O STATUS(FASE) DA INSTÂNCIA

SELECT STATUS FROM V$INSTANCE;" 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: #4FC1FF">VERIFICAR</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">O</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">STATUS</span><span style="color: #D4D4D4">(</span><span style="color: #4FC1FF">FASE</span><span style="color: #D4D4D4">) </span><span style="color: #4FC1FF">DA</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">INSTÂNCIA</span></span>
<span class="line"></span>
<span class="line"><span style="color: #4FC1FF">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">STATUS</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">V$INSTANCE</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p><br>Ao consultar o status da instância, aparecerá</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="533" height="163" src="https://furushima.com.br/wp-content/uploads/2025/04/image-10.png" alt="" class="wp-image-2823" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-10.png 533w, https://furushima.com.br/wp-content/uploads/2025/04/image-10-300x92.png 300w" sizes="(max-width: 533px) 100vw, 533px" /></figure>



<p><br>STARTUP MOUNT, o arquivo de parametros PFILE ou SPFILE será lido, a instância iniciará e o controlfile será montado:</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="626" height="264" src="https://furushima.com.br/wp-content/uploads/2025/04/image-11.png" alt="" class="wp-image-2824" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-11.png 626w, https://furushima.com.br/wp-content/uploads/2025/04/image-11-300x127.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></figure>



<p><br>Ao consultar o status da instância, aparecerá como MOUNTED:</p>



<figure class="wp-block-image size-full is-resized"><img alt="" loading="lazy" decoding="async" width="542" height="160" src="https://furushima.com.br/wp-content/uploads/2025/04/image-12.png" alt="" class="wp-image-2825" style="width:542px;height:auto" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-12.png 542w, https://furushima.com.br/wp-content/uploads/2025/04/image-12-300x89.png 300w" sizes="(max-width: 542px) 100vw, 542px" /></figure>



<p><br>SHUTDOWN IMMEDIATE, que é o mais utilizado, ve-se também todas as fases:</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="478" height="132" src="https://furushima.com.br/wp-content/uploads/2025/04/image-14.png" alt="" class="wp-image-2827" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-14.png 478w, https://furushima.com.br/wp-content/uploads/2025/04/image-14-300x83.png 300w" sizes="(max-width: 478px) 100vw, 478px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Views no Oracle</title>
		<link>https://furushima.com.br/blog/views-no-oracle/</link>
		
		<dc:creator><![CDATA[Luis Jacoveto]]></dc:creator>
		<pubDate>Thu, 24 Apr 2025 12:11:29 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[RDBMS]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2806</guid>

					<description><![CDATA[As views (ou também visões) são recursos bastante úteis em bancos de dados relacionais, pois permitem a criação de representações lógicas dos dados armazenados em tabelas, facilitando a consulta, segurança e manutenção. Mas o que exatamente são as views? Uma view pode ser entendida como uma tabela virtual que se baseia no resultado de uma [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>As views (ou também visões) são recursos bastante úteis em bancos de dados relacionais, pois permitem a criação de representações lógicas dos dados armazenados em tabelas, facilitando a consulta, segurança e manutenção.</p>



<h2 class="wp-block-heading">Mas o que exatamente são as views?</h2>



<p>Uma view pode ser entendida como uma tabela virtual que se baseia no resultado de uma consulta, ou seja, ao invés de armazenar os dados diretamente ela apenas exibe os dados pertencentes a outras tabelas. Estes dados são recuperados através de uma instrucão SQL toda vez que a view é executada.</p>



<p>De acordo com a documentação da versão 19c do Oracle, temos:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Use the CREATE VIEW statement to define a view, which is a logical table based on one or more tables or views. A view contains no data itself. The tables upon which a view is based are called base tables.</p>
</blockquote>



<h2 class="wp-block-heading">Vantagens ao utilizar views</h2>



<h4 class="wp-block-heading"> &#8211; Simplicar consultar complexas</h4>



<p>A utilização de views possibilita que uma query complexa seja encapsulada em uma query simples.</p>



<h4 class="wp-block-heading"> &#8211; Segurança no acesso aos dados</h4>



<p>Através da utilização de views é possível restringir o acesso a colunas ou linhas específicas, podendo assim exibir somente os dados necessários.</p>



<h4 class="wp-block-heading"> &#8211; Abstração</h4>



<p>Com as views é possível implementar uma camada de abstração que permite ocultar tanto a estrutura das tabelas ou até mesmo a fonte dos dados.</p>



<h4 class="wp-block-heading"> &#8211; Reutilização de consulta</h4>



<p>Para consultas que são utilizadas com certa frequência é indica a criação de views para reduzir a repetição de código.</p>



<h2 class="wp-block-heading">Tipos de Views no Oracle</h2>



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



<p>Podem ter desde uma estrutura simplificada baseada em apenas uma tabela e sem funções de agregações e joins ou até mesmo mais complexas com joins entre multiplas tabelas, funções de agregação, subconsultas, etç.</p>



<p>As views com estrutura simples geralmente permitem que sejam feitas inserções e alterações nos dados da tabela de origem.</p>



<p>Já as views que não permitem inserções e alterações são as que possuem clasulas como DISTINCT, funções de agregação, GROPU BY, ORDER BY, sub queries no select, condições recursivas com a clásula WITH, etç.</p>



<p>Independente da estrutura da view, ela não ocupa espaço em disco.</p>



<p>Mais informações disponíveis em <a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/UPDATE.html">https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/UPDATE.html</a></p>



<p>Exemplo:</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 VIEW vw_empresas AS
SELECT id, nome_empresa
FROM empresas;" 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: #4FC1FF">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">VIEW</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">vw_empresas</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">AS</span></span>
<span class="line"><span style="color: #4FC1FF">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">nome_empresa</span></span>
<span class="line"><span style="color: #4FC1FF">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">empresas</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<h3 class="wp-block-heading">Materialized Views</h3>



<p>Já as materialized views (views materializadas) armazenam os dados fisicamente, ou seja, ela irá consumir espaço em disco.</p>



<p>As materialized views podem ser usadas para melhorar a performance em consultas complexas ou consultas que envolvam grandes volumes de dados.</p>



<p>Também é possível utiliá-las para transportar ou replicar dados para outros bancos de dados oracle através de database links.</p>



<p>As MVs podem ser atualizadas periodicamente ou sob demanda e podem ser totalmente reconstruídas a cada atualização ou de maneira incremental com a utilização de mlogs (materialized view logs).</p>



<p>Exemplo:</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 MATERIALIZED VIEW mv_vendas
REFRESH FAST ON COMMIT
AS
SELECT produto_id, SUM(quantidade) AS total_vendido
FROM vendas
GROUP BY produto_id;" 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: #4FC1FF">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">MATERIALIZED</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">VIEW</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">mv_vendas</span></span>
<span class="line"><span style="color: #4FC1FF">REFRESH</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">FAST</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">ON</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">COMMIT</span></span>
<span class="line"><span style="color: #4FC1FF">AS</span></span>
<span class="line"><span style="color: #4FC1FF">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">produto_id</span><span style="color: #D4D4D4">, </span><span style="color: #DCDCAA">SUM</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">quantidade</span><span style="color: #D4D4D4">) </span><span style="color: #4FC1FF">AS</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">total_vendido</span></span>
<span class="line"><span style="color: #4FC1FF">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">vendas</span></span>
<span class="line"><span style="color: #4FC1FF">GROUP</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">BY</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">produto_id</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<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 Criar banco de dados oracle 19c em silent mode</title>
		<link>https://furushima.com.br/blog/como-criar-banco-de-dados-oracle-em-silent-mode-19c/</link>
		
		<dc:creator><![CDATA[Weverton Amorim]]></dc:creator>
		<pubDate>Tue, 01 Apr 2025 09:46:12 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[CDB]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[PDB]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[response file]]></category>
		<category><![CDATA[SILENT MODE]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2750</guid>

					<description><![CDATA[Criando do banco de dados CDB single instance em Silent Mode Após a instalação do software gerenciador de base de dados (SGBD), é necessário proceder à criação do banco de dados. Para isso, pode-se utilizar a ferramenta Database Configuration Assistant (DBCA), localizada no diretório $ORACLE_HOME/bin. Esta ferramenta permite a criação do banco de dados tanto [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Criando do banco de dados CDB single instance em Silent Mode</strong></h2>



<p><br>Após a <a href="https://furushima.com.br/blog/instalar-oracle-database-19c-no-oracle-linux/" data-type="link" data-id="https://furushima.com.br/blog/instalar-oracle-database-19c-no-oracle-linux/">instalação do software gerenciador de base de dados (SGBD)</a>, é necessário proceder à criação do banco de dados. Para isso, pode-se utilizar a ferramenta <em>Database Configuration Assistant</em> (DBCA), localizada no diretório <code>$ORACLE_HOME/bin</code>. Esta ferramenta permite a criação do banco de dados tanto em modo gráfico como em <em>silent mode</em> (modo texto), dependendo das necessidades e preferências do ambiente</p>



<h3 class="wp-block-heading">1) Criação do response file</h3>



<p>Para criação de um banco de dados utilizando Silent mode, por linha de comando, é necessário criar um arquivo de configuração passando os parâmetros de criação do banco de dados. Existe no caminho $ORACLE_HOME/assistants/dbca, um arquivo padrão chamado <strong>dbca.rsp</strong> para o preenchimento manual, porém, iremos criar o nosso próprio arquivo de configuração.</p>



<p>Acesse o servidor de banco de dados com o usuário <strong>oracle</strong> e crie um arquivo de configuração chamado <strong>create_db.rsp</strong> seguindo os passos abaixo:</p>



<p>Levando em consideração que as variáveis mencionadas a seguir, como <strong><code>ORACLE_BASE</code> </strong>e <code><strong>ORACLE_HOME</strong></code>, são específicas para o meu ambiente, é importante destacar que estas podem variar em outros ambientes e devem ser ajustadas conforme necessário.</p>



<p>Além disso, é fundamental prestar atenção aos parâmetros de senha, como <strong><code>sysPassword</code>, <code>systemPassword</code> e <code>pdbAdminPassword</code></strong>. No exemplo apresentado, foi utilizada uma senha fraca, que deve ser substituída por uma senha mais robusta em ambientes produtivos, garantindo maior segurança.</p>



<p>Por fim, o nome do banco de dados <em>container</em>, configurado pelo parâmetro <code><strong>gdbName</strong></code>, está definido como <strong><code>orcl</code> </strong>no exemplo. Este valor também pode ser alterado para atender às necessidades específicas do seu ambiente.</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="## Configurar variáveis de ambiente Oracle
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home1

## criar arquivo de configuração
vi /u01/app/oracle/product/19.0.0/db_home1/assistants/dbca/db_create.rsp


## Copiar o conteúdo abaixo para dentro do arquivo de configuração db_create.rsp

responseFileVersion=/home/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
databaseConfigType=SI
gdbName=orcl
createAsContainerDatabase=true
pdbName=pdb1
useLocalUndoForPDBs=true
sysPassword=oracle
systemPassword=oracle
pdbAdminPassword=oracle
templateName=General_Purpose.dbc
storageType=FS
datafileDestination=/u01/app/oracle/oradata
characterSet=AL32UTF8
databaseType=OLTP
totalMemory=2048" 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">Configurar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">variáveis</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ambiente</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Oracle</span></span>
<span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">ORACLE_BASE</span><span style="color: #D4D4D4">=/</span><span style="color: #9CDCFE">u01</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">app</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span></span>
<span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">ORACLE_HOME</span><span style="color: #D4D4D4">=/</span><span style="color: #9CDCFE">u01</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">app</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">product</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">19.0</span><span style="color: #D4D4D4">.</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">db_home1</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">arquivo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">configuração</span></span>
<span class="line"><span style="color: #9CDCFE">vi</span><span style="color: #D4D4D4"> /</span><span style="color: #9CDCFE">u01</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">app</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">product</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">19.0</span><span style="color: #D4D4D4">.</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">db_home1</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">assistants</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">dbca</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">db_create</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">rsp</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">## </span><span style="color: #9CDCFE">Copiar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">o</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">conteúdo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">abaixo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">para</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dentro</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">do</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">arquivo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">configuração</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">db_create</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">rsp</span></span>
<span class="line"></span>
<span class="line"><span style="color: #9CDCFE">responseFileVersion</span><span style="color: #D4D4D4">=/</span><span style="color: #9CDCFE">home</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">assistants</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">rspfmt_dbca_response_schema_v19</span><span style="color: #D4D4D4">.</span><span style="color: #B5CEA8">0.0</span></span>
<span class="line"><span style="color: #9CDCFE">databaseConfigType</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">SI</span></span>
<span class="line"><span style="color: #9CDCFE">gdbName</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">orcl</span></span>
<span class="line"><span style="color: #9CDCFE">createAsContainerDatabase</span><span style="color: #D4D4D4">=</span><span style="color: #569CD6">true</span></span>
<span class="line"><span style="color: #9CDCFE">pdbName</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">pdb1</span></span>
<span class="line"><span style="color: #9CDCFE">useLocalUndoForPDBs</span><span style="color: #D4D4D4">=</span><span style="color: #569CD6">true</span></span>
<span class="line"><span style="color: #9CDCFE">sysPassword</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">oracle</span></span>
<span class="line"><span style="color: #9CDCFE">systemPassword</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">oracle</span></span>
<span class="line"><span style="color: #9CDCFE">pdbAdminPassword</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">oracle</span></span>
<span class="line"><span style="color: #9CDCFE">templateName</span><span style="color: #D4D4D4">=</span><span style="color: #9CDCFE">General_Purpose</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">dbc</span></span>
<span class="line"><span style="color: #9CDCFE">storageType</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">FS</span></span>
<span class="line"><span style="color: #9CDCFE">datafileDestination</span><span style="color: #D4D4D4">=/</span><span style="color: #9CDCFE">u01</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">app</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oradata</span></span>
<span class="line"><span style="color: #9CDCFE">characterSet</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">AL32UTF8</span></span>
<span class="line"><span style="color: #9CDCFE">databaseType</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">OLTP</span></span>
<span class="line"><span style="color: #9CDCFE">totalMemory</span><span style="color: #D4D4D4">=</span><span style="color: #B5CEA8">2048</span></span></code></pre></div>



<p>Será criado um banco de dados <strong>container </strong>com um <strong>pdb</strong>, utilizando a configuração padrão, os datafiles, controlfiles e redo log files estarão localizados no caminho: <strong>/u01/app/oracle/oradata</strong>.</p>



<p>Se a criação do seu banco de dados for em <strong>diskgroup </strong>ASM, basta substituir os parametros relacionado ao storage <strong>diskGroupName </strong>e <strong>storageType </strong>conforme abaixo, por exemplo, diskgroup DATA.</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="storageType=ASM
diskGroupName=DATA" 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: #9CDCFE">storageType</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">ASM</span></span>
<span class="line"><span style="color: #9CDCFE">diskGroupName</span><span style="color: #D4D4D4">=</span><span style="color: #4FC1FF">DATA</span></span></code></pre></div>



<h3 class="wp-block-heading">2) Criação do banco de dados</h3>



<p>Após a configuração do reponse file, com o usuário <strong>oracle</strong>, execute a criação do banco de dados em modo Silent conforme 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:#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="## Acessar diretório ORACLE_HOME
cd $ORACLE_HOME

## Executar instalação em Silent Mode
dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.0.0/db_home1/assistants/dbca/db_create.rsp" 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">Acessar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">diretório</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">ORACLE_HOME</span></span>
<span class="line"><span style="color: #9CDCFE">cd</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_HOME</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">## </span><span style="color: #9CDCFE">Executar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">instalação</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">em</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Silent</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Mode</span></span>
<span class="line"><span style="color: #9CDCFE">dbca</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">silent</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">createDatabase</span><span style="color: #D4D4D4"> -</span><span style="color: #9CDCFE">responseFile</span><span style="color: #D4D4D4"> /</span><span style="color: #9CDCFE">u01</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">app</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oracle</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">product</span><span style="color: #D4D4D4">/</span><span style="color: #B5CEA8">19.0</span><span style="color: #D4D4D4">.</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">db_home1</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">assistants</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">dbca</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">db_create</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">rsp</span></span></code></pre></div>



<p>No processo de criação poderá aparecer alguns alertas devido a complexidade das senhas, pode ignorar os alertas.</p>



<figure class="wp-block-image size-large"><img alt="" loading="lazy" decoding="async" width="1024" height="245" src="https://furushima.com.br/wp-content/uploads/2025/04/image-2-1024x245.jpg" alt="" class="wp-image-2757" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-2-1024x245.jpg 1024w, https://furushima.com.br/wp-content/uploads/2025/04/image-2-300x72.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/04/image-2-768x184.jpg 768w, https://furushima.com.br/wp-content/uploads/2025/04/image-2.jpg 1366w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Criação do banco de dados finalizado</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="923" height="420" src="https://furushima.com.br/wp-content/uploads/2025/04/image-2-1.jpg" alt="" class="wp-image-2758" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-2-1.jpg 923w, https://furushima.com.br/wp-content/uploads/2025/04/image-2-1-300x137.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/04/image-2-1-768x349.jpg 768w" sizes="(max-width: 923px) 100vw, 923px" /></figure>



<h3 class="wp-block-heading">3) Validação do banco de dados</h3>



<p>É possível validar no arquivo <strong>/etc/oratab</strong> as instâncias de banco de dados que estão registradas no servidor, podemos ver a nova instância que foi criada. </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="cat /etc/oratab | grep orcl" 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: #9CDCFE">cat</span><span style="color: #D4D4D4"> /</span><span style="color: #9CDCFE">etc</span><span style="color: #D4D4D4">/</span><span style="color: #9CDCFE">oratab</span><span style="color: #D4D4D4"> | </span><span style="color: #9CDCFE">grep</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">orcl</span></span></code></pre></div>



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



<p>Para acessar o banco de dados é necessário configurar as variáveis de ambiente, <strong>ORACLE_HOME </strong>e <strong>ORACLE_SID</strong>, para isso, executar os comandos 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:#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="## Configurar varíaveis de ambiente
. oraenv
orcl

## Acessar o banco de dados
sqlplus / as sysdba

## Verificar pluggables databases 
SQL&gt; show pdbs

## Verificar estatus da instância
SQL&gt; select instance_name,status from v$instance;" 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">Configurar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">varíaveis</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ambiente</span></span>
<span class="line"><span style="color: #D4D4D4">. </span><span style="color: #9CDCFE">oraenv</span></span>
<span class="line"><span style="color: #9CDCFE">orcl</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">## </span><span style="color: #9CDCFE">Acessar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">o</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">banco</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">de</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dados</span></span>
<span class="line"><span style="color: #9CDCFE">sqlplus</span><span style="color: #D4D4D4"> / </span><span style="color: #C586C0">as</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">sysdba</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">## </span><span style="color: #9CDCFE">Verificar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">pluggables</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">databases</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #4FC1FF">SQL</span><span style="color: #D4D4D4">&gt; </span><span style="color: #9CDCFE">show</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">pdbs</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">## </span><span style="color: #9CDCFE">Verificar</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">estatus</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">da</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">instância</span></span>
<span class="line"><span style="color: #4FC1FF">SQL</span><span style="color: #D4D4D4">&gt; </span><span style="color: #9CDCFE">select</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">instance_name</span><span style="color: #D4D4D4">,</span><span style="color: #9CDCFE">status</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">from</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">v$instance</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p>Configurar variáveis e acessar a instância orcl</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="806" height="348" src="https://furushima.com.br/wp-content/uploads/2025/04/image-3.jpg" alt="" class="wp-image-2760" srcset="https://furushima.com.br/wp-content/uploads/2025/04/image-3.jpg 806w, https://furushima.com.br/wp-content/uploads/2025/04/image-3-300x130.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/04/image-3-768x332.jpg 768w" sizes="(max-width: 806px) 100vw, 806px" /></figure>



<p>Verificar status da instância</p>



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



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Como Instalar Oracle Database 19c no Oracle Linux</title>
		<link>https://furushima.com.br/blog/instalar-oracle-database-19c-no-oracle-linux/</link>
		
		<dc:creator><![CDATA[Weverton Amorim]]></dc:creator>
		<pubDate>Wed, 05 Mar 2025 18:24:55 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[ORACLE]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2300</guid>

					<description><![CDATA[Oracle Database 19c no Oracle Linux 7.9 em Silent Mode Para instalação do Oracle Database 19c, é necessário que o sistema operacional seja preparado, nesse exemplo é utilizado o Oracle Linux 7.9, para mais informações, consulte o link oficial da oracle: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html#GUID-E847221C-1406-4B6D-8666-479DB6BDB046 1) Preparação do Oracle Linux 7.9 para o Oracle Database 19c Antes de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Oracle Database 19c no Oracle Linux 7.9 em Silent Mode</strong></h2>



<p>Para instalação do Oracle Database 19c, é necessário que o sistema operacional seja preparado, nesse exemplo é utilizado o Oracle Linux 7.9, para mais informações, consulte o link oficial da oracle:</p>



<p><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html#GUID-E847221C-1406-4B6D-8666-479DB6BDB046">https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html#GUID-E847221C-1406-4B6D-8666-479DB6BDB046</a></p>



<h3 class="wp-block-heading">1) Preparação do Oracle Linux 7.9 para o Oracle Database 19c</h3>



<p>Antes de iniciar a instalação, o pacote <strong>oracle-database-preinstall-19c</strong> deve ser instalado para configurar automaticamente os pré-requisitos do sistema operacional. Esse pacote instala dependências necessárias e <strong>cria o usuário <code>oracle</code> e o grupo <code>oinstall</code>.</strong></p>



<p>Execute o seguinte comando como <strong>ROOT</strong>:</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="$ yum install oracle-database-preinstall-19c.x86_64 -y" 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: #DCDCAA">$</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">yum</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">install</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">oracle-database-preinstall-19c.x86_64</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-y</span></span></code></pre></div>



<h3 class="wp-block-heading">2) Como Descomprimir os Binários do Oracle Database 19c</h3>



<p>Tendo acesso o servidor com o usuário oracle, descompactar o binário de instalação do Oracle Database 19c dentro do ficheiro da variável $ORACLE_HOME, que está configurada com o caminho: /u01/app/oracle/product/19.0.0/db_home1, conforme abaixo:</p>



<p></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="## COM USUARIO ORACLE OU OWNER DO BANCO DE DADOS 
### Configurar variáveis de ambiente 
export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home1 

### Mostrar conteúdo das variáveis 
echo $ORACLE_HOME
echo $ORACLE_BASE 

### Acessar e descompactar binários 

cd /u01/binarios 
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME 

### acessar o diretório dos binários descompactados 
cd $ORACLE_HOME" 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">## COM USUARIO ORACLE OU OWNER DO BANCO DE DADOS </span></span>
<span class="line"><span style="color: #6A9955">### Configurar variáveis de ambiente </span></span>
<span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ORACLE_BASE</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">/u01/app/oracle</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ORACLE_HOME</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">/u01/app/oracle/product/19.0.0/db_home1</span><span style="color: #D4D4D4"> </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">### Mostrar conteúdo das variáveis </span></span>
<span class="line"><span style="color: #DCDCAA">echo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_HOME</span></span>
<span class="line"><span style="color: #DCDCAA">echo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_BASE</span><span style="color: #D4D4D4"> </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">### Acessar e descompactar binários </span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">cd</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">/u01/binarios</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">unzip</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">LINUX.X64_193000_db_home.zip</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-d</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_HOME</span><span style="color: #D4D4D4"> </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">### acessar o diretório dos binários descompactados </span></span>
<span class="line"><span style="color: #DCDCAA">cd</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_HOME</span></span></code></pre></div>



<figure class="wp-block-image"><img alt="" loading="lazy" decoding="async" width="1002" height="428" src="https://furushima.com.br/wp-content/uploads/2025/02/image-19.jpg" alt="" class="wp-image-2603" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-19.jpg 1002w, https://furushima.com.br/wp-content/uploads/2025/02/image-19-300x128.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-19-768x328.jpg 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></figure>



<h3 class="wp-block-heading">3) Criando o Response File para Instalação Silent do Oracle 19c</h3>



<p>Criar um arquivo de configuração chamado db19_response.rsp, esse arquivo será utilizado como parâmetro para instalação dos binários, por default é disponibilizado um arquivo modelo em $ORACLE_HOME/install/response/, porém iremos criar o nosso, conforme abaixo:</p>



<p><strong>Lembrando que deverá ser ajustado conforme cada ambiente, neste caso temos um Enterprise Edition sendo instalado!</strong></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="### criar arquivo de configuração 
vi /u01/app/oracle/product/19.0.0/db_home1/install/response/db19_response.rsp 

### Copiar as informações abaixo para o arquivo criado db19_response.rsp 

oracle.install.responseFileVersion=/home/oracle/rspfmt_dbinstall_response_schema_v19.0.0 
oracle.install.option=INSTALL_DB_SWONLY 
UNIX_GROUP_NAME=oinstall 
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,en_GB
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home1
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.rootconfig.executeRootScript=false 
oracle.install.db.rootconfig.configMethod=ROOT
" 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">### criar arquivo de configuração </span></span>
<span class="line"><span style="color: #DCDCAA">vi</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">/u01/app/oracle/product/19.0.0/db_home1/install/response/db19_response.rsp</span><span style="color: #D4D4D4"> </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">### Copiar as informações abaixo para o arquivo criado db19_response.rsp </span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.responseFileVersion</span><span style="color: #D4D4D4">=/home/oracle/rspfmt_dbinstall_response_schema_v19.0.0 </span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.option</span><span style="color: #D4D4D4">=INSTALL_DB_SWONLY </span></span>
<span class="line"><span style="color: #9CDCFE">UNIX_GROUP_NAME</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">oinstall</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #9CDCFE">INVENTORY_LOCATION</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">/u01/app/oracle/oraInventory</span></span>
<span class="line"><span style="color: #9CDCFE">SELECTED_LANGUAGES</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">en,en_GB</span></span>
<span class="line"><span style="color: #9CDCFE">ORACLE_BASE</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">/u01/app/oracle</span></span>
<span class="line"><span style="color: #9CDCFE">ORACLE_HOME</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">/u01/app/oracle/product/19.0.0/db_home1</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.InstallEdition</span><span style="color: #D4D4D4">=EE</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.OSDBA_GROUP</span><span style="color: #D4D4D4">=oinstall</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.OSBACKUPDBA_GROUP</span><span style="color: #D4D4D4">=oinstall</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.OSDGDBA_GROUP</span><span style="color: #D4D4D4">=oinstall</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.OSKMDBA_GROUP</span><span style="color: #D4D4D4">=oinstall</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.OSRACDBA_GROUP</span><span style="color: #D4D4D4">=oinstall</span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.rootconfig.executeRootScript</span><span style="color: #D4D4D4">=</span><span style="color: #DCDCAA">false</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">oracle.install.db.rootconfig.configMethod</span><span style="color: #D4D4D4">=ROOT</span></span>
<span class="line"></span></code></pre></div>



<h3 class="wp-block-heading">4) Instalando o Oracle Database 19c em Silent Mode no Oracle Linux</h3>



<p>Agora podemos iniciar a instalação do Oracle Database 19c no modo <strong>Silent Mode</strong>.</p>



<p>Execute o comando abaixo na mesma sessão como <strong>oracle</strong>:</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="### Acessar diretório ORACLE_HOME 

cd $ORACLE_HOME 
### Executar instalação em Silent Mode 

./runInstaller -silent -ignorePrereqFailure -responseFile /u01/app/oracle/product/19.0.0/db_home1/install/response/db19_response.rsp " 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">### Acessar diretório ORACLE_HOME </span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">cd</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">$ORACLE_HOME</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #6A9955">### Executar instalação em Silent Mode </span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">./runInstaller</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-silent</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-ignorePrereqFailure</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-responseFile</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">/u01/app/oracle/product/19.0.0/db_home1/install/response/db19_response.rsp</span><span style="color: #D4D4D4"> </span></span></code></pre></div>



<p>Finalizado a instalação, é necessário executar o script que se pede com usuário ROOT, para isso, abra outra sessão SSH e rode os comandos abaixo:</p>



<figure class="wp-block-image"><img alt="" loading="lazy" decoding="async" width="1024" height="227" src="https://furushima.com.br/wp-content/uploads/2025/02/image-19-1024x227.png" alt="" class="wp-image-2604" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-19-1024x227.png 1024w, https://furushima.com.br/wp-content/uploads/2025/02/image-19-300x66.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-19-768x170.png 768w, https://furushima.com.br/wp-content/uploads/2025/02/image-19.png 1378w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Neste sessão com o usuario ROOT, executar o script no sistema operacional, será necessário apertar a tecla ENTER 2 vezes</p>



<figure class="wp-block-image"><img alt="" loading="lazy" decoding="async" width="1024" height="249" src="https://furushima.com.br/wp-content/uploads/2025/02/image-20-1024x249.jpg" alt="" class="wp-image-2605" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-20-1024x249.jpg 1024w, https://furushima.com.br/wp-content/uploads/2025/02/image-20-300x73.jpg 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-20-768x187.jpg 768w, https://furushima.com.br/wp-content/uploads/2025/02/image-20.jpg 1367w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><em>5) Como Validar a Instalação do Oracle Database 19c</em></h3>



<p>Validar a instalação do Oracle Database no servidor mostrando a conteúdo do OraInventory. Dessa maneira é possível confirmar que há uma instalação do Oracle Database no servidor.</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="### Verificar instalações 
cat /u01/app/oracle/oraInventory/ContentsXML/inventory.xml | grep -i OraDB19" 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">### Verificar instalações </span></span>
<span class="line"><span style="color: #DCDCAA">cat</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">/u01/app/oracle/oraInventory/ContentsXML/inventory.xml</span><span style="color: #D4D4D4"> | </span><span style="color: #DCDCAA">grep</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-i</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">OraDB19</span></span></code></pre></div>



<p></p>



<figure class="wp-block-image"><img alt="" loading="lazy" decoding="async" width="998" height="77" src="https://furushima.com.br/wp-content/uploads/2025/02/image-20.png" alt="" class="wp-image-2606" srcset="https://furushima.com.br/wp-content/uploads/2025/02/image-20.png 998w, https://furushima.com.br/wp-content/uploads/2025/02/image-20-300x23.png 300w, https://furushima.com.br/wp-content/uploads/2025/02/image-20-768x59.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></figure>



<h3 class="wp-block-heading"><strong>Conclusão</strong></h3>



<p>Seguindo esses passos, você terá o Oracle Database 19c instalado no Oracle Linux 7.9 utilizando o modo Silent. Se precisar configurar um banco de dados a partir dessa instalação, será necessário executar o <code>dbca</code> ou configurar manualmente os arquivos de inicialização.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Entendendo o Plano de Execução no Oracle: Como Melhorar a Performance das Suas Consultas SQL &#8211; PARTE 1</title>
		<link>https://furushima.com.br/blog/entendendo-o-plano-de-execucao-no-oracle-como-melhorar-a-performance-das-suas-consultas-sql-parte-1/</link>
		
		<dc:creator><![CDATA[Carlos Furushima]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 19:08:00 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[Performance&Tuning]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2536</guid>

					<description><![CDATA[O Poder do SQL e o Desafio da Performance Uma das grandes vantagens do SQL é sua natureza declarativa. Isso significa que você não precisa dizer ao banco de dados como obter os dados; basta especificar o que deseja. O otimizador do Oracle (CBO) cuida de encontrar a melhor forma de executar sua consulta. No [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>O Poder do SQL e o Desafio da Performance</p>



<p>Uma das grandes vantagens do SQL é sua natureza declarativa. Isso significa que você não precisa dizer ao banco de dados como obter os dados; basta especificar o que deseja. O otimizador do Oracle (CBO) cuida de encontrar a melhor forma de executar sua consulta.</p>



<p>No entanto, nem sempre o caminho escolhido pelo banco de dados é o mais eficiente. Em consultas complexas ou com grandes volumes de dados, a performance pode ser impactada. Mas como identificar e corrigir esses problemas?</p>



<p><em>A resposta está no plano de execução.</em></p>



<p></p>



<p><strong>O Que é um Plano de Execução?</strong></p>



<p>O Execution Plan (Plano de Execução) é um roteiro detalhado que descreve o caminho que o Oracle seguirá para recuperar os dados solicitados em uma consulta SQL. Esse plano é gerado durante a fase de análise (parser) da instrução SQL.<br>Para construir esse caminho de execução, o Oracle considera diversas informações, entre elas:</p>



<ul class="wp-block-list">
<li>Estatísticas do banco de dados: Incluem system statistics (estatísticas do sistema) e data statistics (estatísticas dos dados), que ajudam a prever a melhor forma de acessar as tabelas e índices.</li>
</ul>



<ul class="wp-block-list">
<li>Parâmetros da instância do banco de dados: Configurações específicas da instância que influenciam as decisões do otimizador.</li>
</ul>



<p></p>



<p>Esses fatores fornecem insumos para o CBO (Cost-Based Optimizer), o otimizador do Oracle, que calcula a estratégia mais eficiente para executar a consulta SQL. Dessa forma, o plano de execução representa a melhor estimativa do banco de dados sobre como recuperar as informações da maneira mais rápida e eficiente possível.</p>



<p><strong>Diferença entre Execution Plan e Explain Plan</strong></p>



<p>EXPLAIN PLAN (Planos de Explicação) e EXECUTION PLAN (Plano de execução): Qual a Diferença?</p>



<p>Ao trabalhar com consultas SQL no Oracle, é essencial entender a diferença entre dois tipos de planos: EXPLAIN PLAN e EXECUTION PLAN.</p>



<p><em><strong>Explain Plan (Planos de Explicação)</strong></em></p>



<p>O EXPLAIN PLAN é uma previsão do que o Oracle planeja fazer para executar a consulta. Quando você roda um EXPLAIN PLAN, o banco de dados gera um plano estimado de execução, com base nas estatísticas atuais das tabelas e nos algoritmos do otimizador. Isso pode ser útil para entender a estratégia escolhida pelo otimizador antes de realmente executar a consulta.</p>



<p>No entanto, o EXPLAIN PLAN pode estar errado ou ser diferente do plano real de execução, porque:</p>



<p>Ele não executa a consulta de fato, apenas faz uma previsão.</p>



<p>Se as estatísticas do banco de dados estiverem desatualizadas, a previsão pode ser imprecisa.</p>



<p></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="
EXPLAIN PLAN FOR 
SELECT * FROM TABELA_XPTO WHERE coluna = 'valor';

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
" 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>
<span class="line"><span style="color: #D4D4D4">EXPLAIN PLAN </span><span style="color: #569CD6">FOR</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #569CD6">SELECT</span><span style="color: #D4D4D4"> * </span><span style="color: #569CD6">FROM</span><span style="color: #D4D4D4"> TABELA_XPTO </span><span style="color: #569CD6">WHERE</span><span style="color: #D4D4D4"> coluna = </span><span style="color: #CE9178">&#39;valor&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">SELECT</span><span style="color: #D4D4D4"> * </span><span style="color: #569CD6">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4">(DBMS_XPLAN.DISPLAY);</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p><strong><em>Execution Plan (Plano de execução)</em></strong></p>



<p>O EXECUTION PLAN, por outro lado, mostra o que realmente aconteceu quando a consulta foi executada. Ele exibe:</p>



<p>A sequência exata de operações realizadas pelo banco de dados.<br>O tempo gasto em cada operação.<br>O número real de linhas processadas.<br>O impacto da E/S (leitura e escrita em disco ou memória).<br>Se a consulta utilizou índices, joins, ordenações ou full table scans.</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="SELECT * FROM TABLE(dbms_xplan.display_cursor('&lt;SQL_ID&gt;','&lt;CHILD_NUMBER&gt;','ALLSTATS LAST  +PEEKED_BINDS +PREDICATE +COST +BYTES ADVANCED'));
" 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: #569CD6">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4">(dbms_xplan.display_cursor(</span><span style="color: #CE9178">&#39;&lt;SQL_ID&gt;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;&lt;CHILD_NUMBER&gt;&#39;</span><span style="color: #D4D4D4">,</span><span style="color: #CE9178">&#39;ALLSTATS LAST  +PEEKED_BINDS +PREDICATE +COST +BYTES ADVANCED&#39;</span><span style="color: #D4D4D4">));</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<p>Ao analisar a rota seguida pelo banco de dados, você pode identificar se ele escolheu o caminho mais eficiente ou se há uma alternativa ainda mais rápida, como a criação de um atalho.</p>



<p>Abaixo está o plano de execução para a junção de duas tabelas:</p>



<pre class="wp-block-preformatted has-d-4-d-4-d-4-color has-text-color has-875-rem-font-size">--------------------------------------<br>| Id  | Operation          | Name    |<br>--------------------------------------<br>|   0 | SELECT STATEMENT   |         |<br>|   1 |  HASH JOIN         |         |<br>|   2 |   TABLE ACCESS FULL| TAB_A   |<br>|   3 |   TABLE ACCESS FULL| TAB_B   |<br>--------------------------------------<br><br><br>Cada linha no Execution Plan (Plano de Execução) representa uma operação distinta. Essas operações estão organizadas em uma estrutura hierárquica, formando um relacionamento de pai/filho.<br><br>O plano pode ser visualizado como uma árvore. A instrução SELECT, localizada no topo, é a raiz; as tabelas, situadas na parte inferior, são as folhas; e, entre elas, há uma série de operações intermediárias.<br><br>Essas operações se dividem em três categorias principais:<br><br>- Single-child operations (Operações de filho único)<br>- Multichild operations (Operações de múltiplos filhos)<br>- Joins (Junções)</pre>



<p class="has-text-align-left"></p>



<h2 class="wp-block-heading"><strong>Single-child operations (Operações de filho único)</strong></h2>



<p>Como o nome sugere, esse tipo de operação sempre possui <strong>exatamente uma operação</strong> abaixo dela na árvore do plano de execução. Exemplos comuns incluem:</p>



<ul class="wp-block-list">
<li><strong>Grouping (Agrupamento)</strong></li>



<li><strong>Sorting (Ordenação)</strong></li>
</ul>



<p></p>



<h3 class="wp-block-heading"><strong>Multichild operations (Operações de múltiplos filhos)</strong></h3>



<p>Essas operações podem ter <strong>uma ou mais operações abaixo delas</strong> e são mais raras. A mais comum que pode aparecer no plano de execução é a operação <strong>UNION (ALL)</strong>, que combina os resultados de múltiplas consultas.</p>



<p></p>



<h3 class="wp-block-heading"><strong>Joins (Junções)</strong></h3>



<p>As junções sempre possuem <strong>exatamente dois filhos</strong>. Esses filhos podem ser:</p>



<ul class="wp-block-list">
<li>Outras junções</li>



<li>Tabelas</li>



<li>Qualquer outra operação do plano de execução</li>
</ul>



<p>Cada um desses componentes desempenha um papel essencial na forma como o banco de dados processa a consulta, influenciando diretamente a eficiência e o desempenho da execução.</p>



<p class="has-medium-font-size"><strong>Como Ler ou Interpretar um Execution Plan (Plano de Execução)</strong></p>



<p>Em um Execution Plan (Plano de Execução) baseado em texto, a estrutura hierárquica das operações é representada pelo nível de recuo (indentação). Esse recuo indica o relacionamento <strong>pai/filho</strong> entre as operações.</p>



<ul class="wp-block-list">
<li><strong>Operação pai</strong>: É sempre a primeira linha acima de uma operação, com um recuo menor.</li>



<li><strong>Operações filhas</strong>: São as linhas logo abaixo da operação pai, recuadas mais para a direita. Elas pertencem à operação pai até que outra linha com o mesmo nível de recuo apareça.<br></li>
</ul>



<p></p>



<p>Essa estrutura ajuda a visualizar como as operações se relacionam e a entender a ordem em que o banco de dados executa cada etapa da consulta.</p>



<p></p>



<p>Para ilustrar a estrutura hierárquica de um <strong>Execution Plan (Plano de Execução)</strong> no Oracle, vamos analisar um exemplo prático. Suponha que temos duas tabelas: <code>clientes</code> e <code>pedidos</code>. Desejamos selecionar todos os clientes e seus respectivos pedidos. A consulta SQL seria:</p>



<pre class="wp-block-code"><code>
SELECT c.nome, p.numero_pedido
FROM clientes c
JOIN pedidos p ON c.cliente_id = p.cliente_id;
</code></pre>



<p>Ao gerar o plano de execução para essa consulta, obteríamos uma saída semelhante a:</p>



<pre class="wp-block-code"><code>--------------------------------------------------------------------------------
| Id  | Operation           | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |         |   100 |  5200 |    10   (0)| 00:00:01 |
|*  1 |  HASH JOIN          |         |   100 |  5200 |    10   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL | CLIENTES|   100 |  2600 |     5   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL | PEDIDOS |   200 |  5200 |     5   (0)| 00:00:01 |
--------------------------------------------------------------------------------

Vamos interpretar esse plano de execução, destacando as relações pai/filho:

<strong>Operação Raiz (Pai Principal):</strong>

Id 0: SELECT STATEMENT é a operação raiz. Todas as outras operações são suas filhas diretas ou indiretas.

<strong>Operação Filha da Raiz:
</strong>
Id 1: HASH JOIN é filha direta do SELECT STATEMENT. Esta operação combina as tabelas CLIENTES e PEDIDOS usando um algoritmo de junção hash.
Operações Filhas do HASH JOIN:

Id 2: TABLE ACCESS FULL na tabela CLIENTES. Esta operação lê toda a tabela CLIENTES e fornece os dados para o HASH JOIN.

Id 3: TABLE ACCESS FULL na tabela PEDIDOS. Similarmente, lê toda a tabela PEDIDOS e passa os dados para o HASH JOIN.

<strong>Observações Importantes:
</strong>Recuo (Indentação): No plano de execução baseado em texto, o nível de recuo indica a hierarquia das operações. Operações com maior recuo são filhas da operação imediatamente acima com menor recuo.

<strong>Relação Pai/Filho:
</strong>
SELECT STATEMENT é o pai do HASH JOIN.
HASH JOIN é pai das operações TABLE ACCESS FULL das tabelas CLIENTES e PEDIDOS.

Entender essa estrutura hierárquica é crucial para analisar como o Oracle executa a consulta e identificar possíveis otimizações, como a criação de índices ou a reescrita da consulta para melhorar o desempenho.
</code></pre>



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



<h2 class="wp-block-heading"><strong>Passo a Passo do Execution Plan</strong></h2>



<p>1 &#8211; <strong>Primeira operação (Seta Vermelha) &#8211; Busca inicial das tabelas <code>COLOURS</code> e <code>TOYS</code></strong></p>



<ul class="wp-block-list">
<li>A execução começa buscando os dados da tabela <strong>COLOURS</strong> (<code>TABLE ACCESS FULL</code>, linha 4).</li>



<li>Em seguida, os dados da tabela <strong>TOYS</strong> são buscados (<code>TABLE ACCESS FULL</code>, linha 5).</li>



<li>Esses dados são passados para o primeiro <strong>HASH JOIN</strong> (<code>linha 3</code>), que combina os resultados dessas tabelas.<br></li>
</ul>



<ol class="wp-block-list"></ol>



<p></p>



<p>2 &#8211; <strong>Segunda operação (Seta Roxa) &#8211; Adicionando a tabela <code>PENS</code></strong></p>



<ul class="wp-block-list">
<li>Após a junção das tabelas <code>COLOURS</code> e <code>TOYS</code>, o banco acessa a tabela <strong>PENS</strong> (<code>TABLE ACCESS FULL</code>, linha 6).</li>



<li>O resultado do primeiro <strong>HASH JOIN</strong> é combinado com os dados da tabela <code>PENS</code> através de outro <strong>HASH JOIN</strong> (<code>linha 2</code>).</li>



<li>Neste ponto, temos um novo dataset contendo os dados já filtrados e processados.<br></li>
</ul>



<ol class="wp-block-list"></ol>



<p></p>



<p>3 &#8211; <strong>Terceira operação (Seta Laranja) &#8211; Busca na tabela <code>BRICKS</code></strong></p>



<ul class="wp-block-list">
<li>O próximo passo é buscar os dados da tabela <strong>BRICKS</strong> (<code>TABLE ACCESS FULL</code>, linha 7).</li>



<li>O resultado da junção anterior (dataset da etapa 2) é agora unido à tabela <code>BRICKS</code> por meio de um <strong>HASH JOIN</strong> (<code>linha 1</code>).<br></li>
</ul>



<ol class="wp-block-list"></ol>



<p></p>



<p>4 &#8211; <strong>Última operação (Seta Verde) &#8211; Retorno do resultado</strong></p>



<ul class="wp-block-list">
<li>O <strong>HASH JOIN</strong> final combina todos os resultados e retorna os dados ao cliente através do <strong>SELECT STATEMENT</strong> (<code>linha 0</code>).</li>



<li>Como não há mais filhos na estrutura, essa etapa finaliza a execução.<br><br></li>
</ul>



<ol class="wp-block-list"></ol>



<p></p>



<h2 class="wp-block-heading"><strong>Resumo da Ordem de Execução</strong></h2>



<p>A ordem correta de execução pode ser descrita assim:</p>



<ol class="wp-block-list">
<li><code>TABLE ACCESS FULL COLOURS</code> (linha 4) → primeiro conjunto de dados.</li>



<li><code>TABLE ACCESS FULL TOYS</code> (linha 5) → segundo conjunto de dados.</li>



<li><code>HASH JOIN</code> (linha 3) → combinação de <code>COLOURS</code> e <code>TOYS</code>.</li>



<li><code>TABLE ACCESS FULL PENS</code> (linha 6) → terceiro conjunto de dados.</li>



<li><code>HASH JOIN</code> (linha 2) → combinação do resultado do primeiro HASH JOIN com <code>PENS</code>.</li>



<li><code>TABLE ACCESS FULL BRICKS</code> (linha 7) → quarto conjunto de dados.</li>



<li><code>HASH JOIN</code> (linha 1) → combinação do resultado da segunda junção com <code>BRICKS</code>.</li>



<li><code>SELECT STATEMENT</code> (linha 0) → retorna o resultado final ao cliente.</li>
</ol>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p>Compreender a estrutura e a ordem de execução de um plano de execução é essencial para diagnosticar e otimizar o desempenho de consultas no Oracle Database. Ao analisar detalhadamente cada operação e suas interações, é possível identificar gargalos e aplicar melhorias específicas, resultando em consultas mais eficientes e sistemas mais responsivos.</p>



<p></p>



<p>Referencias : <br><a href="https://blogs.oracle.com/connect/post/how-to-read-an-execution-plan">https://blogs.oracle.com/connect/post/how-to-read-an-execution-plan</a></p>



<p></p>



<p></p>



<p></p>
]]></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>EXECUTANDO DATAPUMP EXPORT (EXPDP) NO ORACLE RDS</title>
		<link>https://furushima.com.br/blog/executando-datapump-export-expdp-no-oracle-rds/</link>
		
		<dc:creator><![CDATA[Carlos Furushima]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 18:50:37 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[AMAZON]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[RDS]]></category>
		<guid isPermaLink="false">https://dev.furushima.com.br/?p=2174</guid>

					<description><![CDATA[Neste tutorial, vamos explorar como realizar uma exportação de dados utilizando o Datapump Export via a API DBMS_DATAPUMP no Oracle Database. Este método é altamente flexível e permite exportar dados de forma eficiente e controlada. Etapa 1: Configurando a Exportação Antes de iniciar a exportação, certifique-se de executar este código no banco de dados de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>Neste tutorial, vamos explorar como realizar uma exportação de dados utilizando o Datapump Export via a API DBMS_DATAPUMP no Oracle Database. Este método é altamente flexível e permite exportar dados de forma eficiente e controlada.</p>



<h3 class="wp-block-heading">Etapa 1: Configurando a Exportação</h3>



<p>Antes de iniciar a exportação, certifique-se de executar este código no banco de dados de origem, onde deseja realizar o export:</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
    Bkp NUMBER;
    s VARCHAR2(30000);
BEGIN
    -- Abrindo um job de exportação no Data Pump
    Bkp := DBMS_DATAPUMP.OPEN(
        operation =&gt; 'EXPORT',
        job_mode =&gt; 'SCHEMA',
        job_name =&gt; NULL
    );

    -- Adicionando arquivo de exportação
    DBMS_DATAPUMP.ADD_FILE(
        handle    =&gt; Bkp,
        filename  =&gt; 'datapump_source_DATA_F.dmp',
        directory =&gt; 'DATA_PUMP_DIR',
        filetype  =&gt; dbms_datapump.ku$_file_type_dump_file,
        reusefile =&gt; 1
    );

    -- Adicionando arquivo de log
    DBMS_DATAPUMP.ADD_FILE(
        handle    =&gt; Bkp,
        filename  =&gt; 'datapump_source_DATA_F.log',
        directory =&gt; 'DATA_PUMP_DIR',
        filetype  =&gt; dbms_datapump.ku$_file_type_log_file
    );

    -- Selecionando owners para exportação
    SELECT LISTAGG('''' || owner || '''', ', ') WITHIN GROUP (ORDER BY owner) 
    INTO s
    FROM (
        SELECT username AS owner
        FROM dba_users
        WHERE username NOT IN (
            'ANONYMOUS', 'SYS', 'SYSTEM', 'SYSAUX',
            'APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DBSNMP',
            'DIP', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
            'ORACLE_OCM', 'SYSBACKUP', 'SYSDG', 'SYSKM',
            'XDB', 'XS$NULL', 'RDSADMIN', 'SYSRAC',
            'SYS$UMF', 'REMOTE_SCHEDULER_AGENT', 'GGSYS',
            'DBSFWUSER'
        )
    );

    -- Aplicando filtro para exportação dos schemas selecionados
    DBMS_DATAPUMP.METADATA_FILTER(Bkp, 'SCHEMA_LIST', s);

    -- Iniciando o job de exportação
    DBMS_DATAPUMP.START_JOB(Bkp);
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: #F97583">DECLARE</span></span>
<span class="line"><span style="color: #E1E4E8">    Bkp </span><span style="color: #F97583">NUMBER</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">    s </span><span style="color: #F97583">VARCHAR2</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">30000</span><span style="color: #E1E4E8">);</span></span>
<span class="line"><span style="color: #F97583">BEGIN</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Abrindo um job de exportação no Data Pump</span></span>
<span class="line"><span style="color: #E1E4E8">    Bkp :</span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">DBMS_DATAPUMP</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">OPEN</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        operation </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;EXPORT&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        job_mode </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;SCHEMA&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        job_name </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">NULL</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Adicionando arquivo de exportação</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">DBMS_DATAPUMP</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">ADD_FILE</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        handle    </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> Bkp,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">filename</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;datapump_source_DATA_F.dmp&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        directory </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;DATA_PUMP_DIR&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        filetype  </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">dbms_datapump</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">ku</span><span style="color: #E1E4E8">$_file_type_dump_file,</span></span>
<span class="line"><span style="color: #E1E4E8">        reusefile </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">1</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Adicionando arquivo de log</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">DBMS_DATAPUMP</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">ADD_FILE</span><span style="color: #E1E4E8">(</span></span>
<span class="line"><span style="color: #E1E4E8">        handle    </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> Bkp,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">filename</span><span style="color: #E1E4E8">  </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;datapump_source_DATA_F.log&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        directory </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;DATA_PUMP_DIR&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        filetype  </span><span style="color: #F97583">=&gt;</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">dbms_datapump</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">ku</span><span style="color: #E1E4E8">$_file_type_log_file</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Selecionando owners para exportação</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">SELECT</span><span style="color: #E1E4E8"> LISTAGG(</span><span style="color: #9ECBFF">&#39;&#39;&#39;&#39;</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">||</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">owner</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">||</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">&#39;&#39;&#39;&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;, &#39;</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">WITHIN</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">GROUP</span><span style="color: #E1E4E8"> (</span><span style="color: #F97583">ORDER BY</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">owner</span><span style="color: #E1E4E8">) </span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">INTO</span><span style="color: #E1E4E8"> s</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">FROM</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">SELECT</span><span style="color: #E1E4E8"> username </span><span style="color: #F97583">AS</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">owner</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">FROM</span><span style="color: #E1E4E8"> dba_users</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">WHERE</span><span style="color: #E1E4E8"> username </span><span style="color: #F97583">NOT</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">IN</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;ANONYMOUS&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYS&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSTEM&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSAUX&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;APPQOSSYS&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;AUDSYS&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;CTXSYS&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;DBSNMP&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;DIP&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;GSMADMIN_INTERNAL&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;GSMCATUSER&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;GSMUSER&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;ORACLE_OCM&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSBACKUP&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSDG&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSKM&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;XDB&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;XS$NULL&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;RDSADMIN&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;SYSRAC&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;SYS$UMF&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;REMOTE_SCHEDULER_AGENT&#39;</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">&#39;GGSYS&#39;</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #9ECBFF">&#39;DBSFWUSER&#39;</span></span>
<span class="line"><span style="color: #E1E4E8">        )</span></span>
<span class="line"><span style="color: #E1E4E8">    );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Aplicando filtro para exportação dos schemas selecionados</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">DBMS_DATAPUMP</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">METADATA_FILTER</span><span style="color: #E1E4E8">(Bkp, </span><span style="color: #9ECBFF">&#39;SCHEMA_LIST&#39;</span><span style="color: #E1E4E8">, s);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">-- Iniciando o job de exportação</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #79B8FF">DBMS_DATAPUMP</span><span style="color: #E1E4E8">.</span><span style="color: #79B8FF">START_JOB</span><span style="color: #E1E4E8">(Bkp);</span></span>
<span class="line"><span style="color: #F97583">END</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #F97583">/</span></span>
<span class="line"></span></code></pre></div>



<p></p>



<h3 class="wp-block-heading">Etapa 2: Acompanhando o Progresso da Exportação</h3>



<p>Para verificar o progresso da exportação, execute o seguinte comando no banco de dados de origem:</p>



<p><code>SELECT text<br>FROM TABLE(rdsadmin.rds_file_util.Read_text_file (<br>p_directory =&gt; 'DATA_PUMP_DIR',<br>p_filename =&gt; 'datapump_source_DATA_F.log'<br>));</code></p>



<p></p>



<h3 class="wp-block-heading">Etapa 3: Verificando o Arquivo Gerado</h3>



<p>Para verificar o arquivo gerado no diretório, utilize o seguinte comando no banco de dados de origem:</p>



<p><code>SET LINES 200 PAGES 200<br>COL filename FORMAT A100<br>SELECT filename,<br>ROUND(filesize / 1024 / 1024 / 1024) AS SIZE_GB<br>FROM TABLE(rdsadmin.rds_file_util.Listdir('DATA_PUMP_DIR'))<br>WHERE filename LIKE 'datapump_source_DATA_F%'<br>ORDER BY mtime;</code></p>



<p></p>



<p>Para as próximas etapas sobre transferência para o ambiente de destino e criação de DBLINK e DIRECTORY, sugiro verificá-las diretamente na <a href="https://docs.oracle.com/">documentação oficial da Oracle</a> , pois podem variar dependendo da configuração e políticas de segurança do ambiente.</p>



<p></p>



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



<p></p>



<p></p>



<p></p>



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