Início / Trilha 1 / Conteúdo / Tópico 7
7

SGBD (Sistema Gerenciador de Banco de Dados)

O que é um SGBD, suas funções e arquitetura

📖

Definição

O que é um SGBD?

Um SGBD (Sistema Gerenciador de Banco de Dados) ou DBMS (Database Management System) é um software que permite criar, gerenciar, consultar e controlar o acesso a bancos de dados de forma eficiente e segura.

É importante entender a diferença entre Banco de Dados e SGBD:

Banco de Dados

É a coleção organizada de dados em si. Os arquivos físicos que armazenam as informações estruturadas.

  • Dados propriamente ditos
  • Estruturas (tabelas, índices)
  • Relacionamentos
  • Metadados

SGBD

É o software que gerencia o banco de dados. A ferramenta que permite interagir com os dados.

  • Oracle Database
  • MySQL
  • PostgreSQL
  • SQL Server

Funções Principais de um SGBD

1. Gerenciamento de Dados

Armazenamento, recuperação, atualização e exclusão de dados de forma eficiente.

2. Controle de Concorrência

Permite que múltiplos usuários acessem o banco simultaneamente sem conflitos, usando locks e transações.

3. Segurança e Controle de Acesso

Autenticação de usuários, autorização de operações, auditoria e criptografia de dados.

4. Integridade dos Dados

Garantia através de constraints, triggers e validações que os dados permanecem consistentes.

5. Backup e Recuperação

Proteção contra perdas através de backups e mecanismos de recovery em caso de falhas.

6. Otimização de Consultas

Query optimizer analisa e executa consultas da forma mais eficiente possível.

Arquitetura Cliente-Servidor

A maioria dos SGBDs modernos, incluindo o Oracle, utiliza uma arquitetura cliente-servidor:

Servidor (Server)

Gerencia o banco de dados, processa requisições e retorna resultados.

  • Oracle Instance (processos + memória)
  • Database files (datafiles, controlfiles, redologs)
  • Listener (recebe conexões)

Cliente (Client)

Aplicação que se conecta ao servidor e envia comandos SQL.

  • SQL*Plus, SQL Developer
  • Aplicações web/desktop
  • Scripts e ferramentas ETL

Fluxo de Comunicação:

Cliente → SQL Request → Listener → Server Process → Database
Cliente ← Result Set ← Server Process ← Database
🔍

Oracle vs Outros SGBDs

Comparação entre SGBDs Relacionais

Característica Oracle MySQL PostgreSQL SQL Server
Licença Comercial Open Source Open Source Comercial
Fabricante Oracle Corporation Oracle (MySQL AB) PostgreSQL Global Development Group Microsoft
Plataformas Multi-plataforma Multi-plataforma Multi-plataforma Windows, Linux
Escalabilidade Muito Alta Média Alta Alta
RAC (Clustering) Sim Limitado Não nativo Sim (AlwaysOn)
Particionamento Avançado Básico Bom Bom
Mercado Grandes empresas Web, startups Empresas médias/grandes Microsoft ecosystem

Vantagens do Oracle Database

Alta Disponibilidade

RAC, Data Guard, Flashback technologies

Performance Excepcional

Otimizador avançado, in-memory processing

Recursos Empresariais

Particionamento, compressão, encriptação

PL/SQL Poderoso

Linguagem procedural robusta e performática

Segurança Avançada

Label Security, Database Vault, Data Masking

Suporte e Ecossistema

Documentação completa, suporte técnico premium

🛠️

Componentes Principais do Oracle

Arquitetura do Oracle Database

1. Instance (Instância)

Conjunto de processos em memória e estruturas que gerenciam o banco de dados.

  • SGA (System Global Area): Memória compartilhada (Buffer Cache, Shared Pool, Redo Log Buffer)
  • PGA (Program Global Area): Memória privada de cada processo
  • Background Processes: SMON, PMON, DBWn, LGWR, CKPT, ARCn

2. Database (Banco de Dados)

Conjunto de arquivos físicos que armazenam os dados permanentemente.

  • Datafiles: Armazenam tabelas, índices e dados
  • Control Files: Metadados sobre a estrutura do banco
  • Redo Log Files: Registram todas as mudanças (recovery)
  • Archive Log Files: Cópias dos redo logs (backup)

3. Listener

Processo que escuta requisições de conexão dos clientes na rede.

  • Recebe pedidos de conexão na porta 1521 (padrão)
  • Cria ou direciona para um server process
  • Configurado no arquivo listener.ora

4. Server Processes

Processos criados para atender requisições dos usuários.

  • Dedicated: Um processo para cada conexão
  • Shared: Vários usuários compartilham processos (MTS)

Diagrama Simplificado

┌──────────────────────────────────────────────────────────┐
│                     CLIENTE                              │
│  (SQL*Plus, SQL Developer, Aplicações)                   │
└────────────────────┬─────────────────────────────────────┘
                     │ SQL Requests
                     ▼
┌──────────────────────────────────────────────────────────┐
│                    LISTENER                              │
│  (Porta 1521 - Recebe conexões)                         │
└────────────────────┬─────────────────────────────────────┘
                     │
                     ▼
┌──────────────────────────────────────────────────────────┐
│                ORACLE INSTANCE                           │
│  ┌────────────────────────────────────────────────┐     │
│  │  SGA (System Global Area)                      │     │
│  │  - Buffer Cache                                │     │
│  │  - Shared Pool (Library Cache, Dict Cache)     │     │
│  │  - Redo Log Buffer                             │     │
│  │  - Large Pool, Java Pool                       │     │
│  └────────────────────────────────────────────────┘     │
│  ┌────────────────────────────────────────────────┐     │
│  │  Background Processes                          │     │
│  │  SMON | PMON | DBWn | LGWR | CKPT | ARCn       │     │
│  └────────────────────────────────────────────────┘     │
└────────────────────┬─────────────────────────────────────┘
                     │ I/O
                     ▼
┌──────────────────────────────────────────────────────────┐
│                    DATABASE                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │  Datafiles   │  │ Control Files│  │ Redo Logs    │  │
│  │  (.dbf)      │  │  (.ctl)      │  │  (.log)      │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└──────────────────────────────────────────────────────────┘

Resultado Esperado

O que você deve dominar após este tópico:

Diferenciar BD e SGBD

Entender a distinção entre dados e gerenciador

Conhecer funções do SGBD

Segurança, concorrência, backup, otimização

Arquitetura cliente-servidor

Compreender o fluxo de comunicação

Comparar SGBDs

Oracle vs MySQL, PostgreSQL, SQL Server

Componentes Oracle

Instance, Database, Listener, Processos

Vantagens do Oracle

Alta disponibilidade, performance, recursos

📝

Exercícios Práticos

Exercício 1: Identificando Componentes

Classifique cada item como Instance ou Database:

  • SGA (System Global Area)
  • Datafiles (.dbf)
  • Background Processes (SMON, PMON, DBWn)
  • Control Files (.ctl)
  • PGA (Program Global Area)
  • Redo Log Files (.log)
Ver Solução

Resposta:

  • Instance: SGA, Background Processes, PGA
  • Database: Datafiles, Control Files, Redo Log Files

A Instance são estruturas em memória e processos. O Database são arquivos físicos em disco.

Exercício 2: Vantagens do Oracle

Liste 3 cenários em que o Oracle seria mais adequado que MySQL:

Ver Solução

Cenários:

  • Grande volume transacional: Bancos, sistemas financeiros que exigem alta concorrência e ACID rigoroso
  • Alta disponibilidade crítica: Sistemas 24/7 que não podem ter downtime (RAC, Data Guard)
  • Dados sensíveis: Aplicações que precisam de criptografia avançada, auditoria e compliance rigoroso

Exercício 3: Fluxo de Conexão

Ordene os passos do processo de conexão de um cliente ao Oracle Database:

  • A) Server process executa SQL e retorna resultado
  • B) Cliente envia requisição SQL na porta 1521
  • C) Listener cria/direciona para um server process
  • D) Aplicação cliente inicia conexão
  • E) Listener recebe a conexão
Ver Solução

Ordem Correta:

D → B → E → C → A

  1. Aplicação cliente inicia conexão
  2. Cliente envia requisição SQL na porta 1521
  3. Listener recebe a conexão
  4. Listener cria/direciona para um server process
  5. Server process executa SQL e retorna resultado
Anterior: Tópico 6 Próximo: Data Types Oracle