<?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>Banco de Dados &#8211; Furushima</title>
	<atom:link href="https://furushima.com.br/blog/tag/banco-de-dados/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>Banco de Dados &#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>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>O que é um Banco de Dados?</title>
		<link>https://furushima.com.br/blog/o-que-e-um-banco-de-dados/</link>
		
		<dc:creator><![CDATA[Luis Jacoveto]]></dc:creator>
		<pubDate>Thu, 06 Mar 2025 23:41:43 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[RDBMS]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2452</guid>

					<description><![CDATA[Introdução aos Bancos de Dados: O Coração da Era Digital
]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading">Introdução aos Bancos de Dados: O Coração da Era Digital</h3>



<p>Vivemos em uma era onde os dados são considerados o &#8220;novo petróleo&#8221;. Eles impulsionam decisões, alimentam inovações e moldam o futuro das empresas e da sociedade. No centro dessa revolução digital estão os <strong>bancos de dados</strong>, ferramentas essenciais para armazenar, organizar e acessar informações de maneira eficiente. Mas o que exatamente é um banco de dados? E por que ele é tão importante?</p>



<p>Neste artigo, vamos explorar os conceitos básicos de bancos de dados, seus tipos, aplicações e como eles transformam o mundo ao nosso redor.</p>



<p></p>



<h3 class="wp-block-heading">O que é um Banco de Dados?</h3>



<p>Um banco de dados é uma coleção organizada de informações que podem ser acessadas, gerenciadas e atualizadas de forma eficiente. Pense nele como uma biblioteca digital, onde cada livro (ou registro) está catalogado para que você possa encontrá-lo rapidamente.</p>



<p>Os bancos de dados são usados em praticamente todos os setores, desde o comércio eletrônico até a saúde, passando por redes sociais, bancos e até mesmo dispositivos IoT (Internet das Coisas).</p>



<p><strong>Fonte:</strong> <a href="https://www.oracle.com/database/what-is-database/">Oracle &#8211; O que é um banco de dados?</a></p>



<p></p>



<h3 class="wp-block-heading">Tipos de Bancos de Dados</h3>



<p>Existem diferentes tipos de bancos de dados, cada um projetado para atender a necessidades específicas. Aqui estão os principais:</p>



<h4 class="wp-block-heading">1. <strong>Bancos de Dados Relacionais</strong></h4>



<p>Os bancos de dados relacionais, como MySQL, PostgreSQL e Oracle, organizam os dados em tabelas com linhas e colunas. Eles utilizam a linguagem SQL (Structured Query Language) para manipular e consultar os dados. São ideais para aplicações estruturadas, como sistemas de gestão empresarial e e-commerce.</p>



<p><strong>Fontes:</strong></p>



<ul class="wp-block-list">
<li><a href="https://dev.mysql.com/doc/">MySQL Documentation</a></li>



<li><a href="https://www.postgresql.org/docs/">PostgreSQL Documentation</a></li>
</ul>



<h4 class="wp-block-heading">2. <strong>Bancos de Dados Não Relacionais (NoSQL)</strong></h4>



<p>Os bancos de dados NoSQL, como MongoDB, Cassandra e Redis, são projetados para lidar com grandes volumes de dados não estruturados ou semiestruturados. Eles são amplamente usados em aplicações modernas, como redes sociais e análise de big data.</p>



<p><strong>Fontes:</strong></p>



<ul class="wp-block-list">
<li><a href="https://www.mongodb.com/docs/">MongoDB Documentation</a></li>



<li><a href="https://redis.io/docs/">Redis Documentation</a></li>
</ul>



<h4 class="wp-block-heading">3. <strong>Bancos de Dados em Nuvem</strong></h4>



<p>Com o avanço da computação em nuvem serviços como Amazon RDS, Google Cloud Firestore e Microsoft Azure Cosmos DB oferecem bancos de dados escaláveis e acessíveis pela internet. Eles eliminam a necessidade de infraestrutura física e são ideais para empresas que buscam flexibilidade.</p>



<p><strong>Fontes:</strong></p>



<ul class="wp-block-list">
<li><a href="https://aws.amazon.com/rds/">Amazon RDS</a></li>



<li><a href="https://cloud.google.com/firestore">Google Cloud Firestore</a></li>



<li><a href="https://learn.microsoft.com/en-us/azure/cosmos-db/">Microsoft Azure Cosmos DB</a></li>
</ul>



<h4 class="wp-block-heading">4. <strong>Bancos de Dados Orientados a Grafos</strong></h4>



<p>Esses bancos, como Neo4j, são projetados para armazenar e analisar relações complexas entre dados. São amplamente usados em redes sociais, sistemas de recomendação e detecção de fraudes.</p>



<p><strong>Fonte:</strong> <a href="https://neo4j.com/graph-database/">Neo4j &#8211; O que é um banco de dados de grafos?</a></p>



<h3 class="wp-block-heading">Por que os Bancos de Dados são Importantes?</h3>



<p>Os bancos de dados desempenham um papel crucial em nossa sociedade conectada. Aqui estão algumas razões para sua importância:</p>



<ul class="wp-block-list">
<li><strong>Armazenamento e Recuperação de Dados</strong>: Eles permitem que grandes volumes de informações sejam armazenados e acessados rapidamente.</li>



<li><strong>Tomada de Decisões Baseada em Dados</strong>: Empresas utilizam bancos de dados para analisar tendências e tomar decisões estratégicas.</li>



<li><strong>Automação de Processos</strong>: Sistemas automatizados, como ERPs e CRMs, dependem de bancos de dados para funcionar.</li>



<li><strong>Segurança e Conformidade</strong>: Bancos de dados modernos oferecem recursos avançados de segurança para proteger informações sensíveis.</li>
</ul>



<p><strong>Fonte:</strong> <a href="https://www.ibm.com/topics/databases">IBM &#8211; Por que os bancos de dados são importantes?</a></p>



<p></p>



<h3 class="wp-block-heading">Tendências Futuras em Bancos de Dados</h3>



<p>Com o avanço da tecnologia, os bancos de dados continuam a evoluir. Algumas tendências incluem:</p>



<ul class="wp-block-list">
<li><strong>Inteligência Artificial e Machine Learning</strong>: Bancos de dados estão sendo integrados a sistemas de IA para análises preditivas e automação.</li>



<li><strong>Bancos de Dados Distribuídos</strong>: Soluções como blockchain estão redefinindo a forma como os dados são armazenados e compartilhados.</li>



<li><strong>Maior Foco em Segurança</strong>: Com o aumento das ameaças cibernéticas, a proteção de dados é uma prioridade.</li>
</ul>



<p><strong>Fontes:</strong></p>



<ul class="wp-block-list">
<li><a href="https://www.gartner.com/en">Gartner &#8211; Tendências em bancos de dados</a></li>



<li><a href="https://learn.microsoft.com/en-us/azure/architecture/data-guide/technology-choices/machine-learning-database">Microsoft &#8211; Bancos de dados e IA</a></li>
</ul>



<p></p>



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



<p>Os bancos de dados são a espinha dorsal da era digital. Eles permitem que empresas e indivíduos gerenciem informações de maneira eficiente, segura e escalável. Seja você um desenvolvedor, um empresário ou apenas um entusiasta da tecnologia, entender os fundamentos dos bancos de dados é essencial para navegar no mundo moderno.</p>



<p>Se você está interessado em aprender mais sobre bancos de dados, fique atento ao nosso blog! Em breve, traremos tutoriais, estudos de caso e dicas práticas para ajudá-lo a dominar essa tecnologia indispensável.</p>



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