Início / Trilha 2 / Conteúdo / Tópico 3
3

Criando um Database com DBCA

DBCA, templates, CREATE DATABASE manual

🎨

Database Configuration Assistant (DBCA)

O que é o DBCA?

O Database Configuration Assistant (DBCA) é uma ferramenta gráfica da Oracle que facilita a criação, configuração, e exclusão de bancos de dados. É a forma mais comum e recomendada de criar um banco de dados Oracle.

Funcionalidades do DBCA:

  • Criar Banco de Dados: Usando templates ou configuração customizada
  • Configurar Opções: Modificar parâmetros de bancos existentes
  • Excluir Banco: Remover completamente um banco e seus arquivos
  • Gerenciar Templates: Criar templates personalizados para padronização
  • Gerenciar Pluggable Databases (PDBs): Em bancos multitenant (12c+)

Iniciando o DBCA

# Modo gráfico
dbca

# Modo silencioso (sem interface gráfica)
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName ORCL \
  -sid ORCL \
  -sysPassword SysPass123 \
  -systemPassword SystemPass123

Passos da Criação com DBCA (Modo Gráfico)

1

Operação

Selecione "Create a database"

2

Modo de Criação

Advanced Configuration (mais controle) ou Typical Configuration (rápido)

3

Template

General Purpose, Data Warehouse, ou Custom Database

4

Identificação

Global Database Name e SID (ex: PROD.empresa.com e PROD)

5

Localização de Armazenamento

File System ou ASM (Automatic Storage Management)

6

Configuração de Recovery

Fast Recovery Area, Archive Mode

7

Componentes

Oracle Sample Schemas, Oracle JVM, Oracle Text, Oracle Spatial

8

Parâmetros de Memória

SGA, PGA, Memory Management (AMM ou ASMM)

9

Character Set

AL32UTF8 (padrão, Unicode), WE8ISO8859P1 (Latin-1)

10

Senhas

Senha única para todos ou senhas individuais (SYS, SYSTEM, DBSNMP)

📑

Templates do DBCA

Tipos de Templates

O DBCA oferece templates pré-configurados que aceleram a criação de bancos de dados com características específicas. Há dois tipos: templates com estrutura e templates sem estrutura.

Templates com Estrutura

Contêm datafiles pré-criados. A criação é muito rápida pois apenas copia os arquivos.

  • Seed Database Template
  • Criação em minutos
  • Menos flexibilidade

Templates sem Estrutura

Apenas definições de configuração. DBCA executa CREATE DATABASE completo.

  • General Purpose, Data Warehouse
  • Criação mais demorada
  • Máxima flexibilidade

General Purpose or Transaction Processing

Template mais comum. Otimizado para ambientes OLTP (Online Transaction Processing) com muitas transações pequenas e rápidas. Equilibra memória e desempenho.

Data Warehouse

Otimizado para análise de dados (OLAP). Foca em consultas complexas sobre grandes volumes de dados. Maior buffer cache, sort areas maiores.

Custom Database

Template em branco. Você define todos os parâmetros manualmente. Útil para requisitos muito específicos.

Criando um Template Personalizado

Você pode criar seus próprios templates para padronizar criação de bancos em sua organização.

# Criar template a partir de banco existente
dbca -silent -createTemplateFromDB \
  -sourceDB ORCL \
  -templateName MeuTemplate \
  -sysDBAUserName sys \
  -sysDBAPassword SysPass123

# Criar template a partir de template existente (modificado)
dbca -silent -createTemplate \
  -templateName NovoTemplate \
  -sourceTemplate General_Purpose.dbc

# Templates ficam armazenados em:
ls -lh $ORACLE_HOME/assistants/dbca/templates/
🤖

DBCA em Modo Silencioso

Criação Automatizada

O modo silencioso permite criar bancos de dados via linha de comando, ideal para scripts e automação.

# Exemplo completo de criação silenciosa
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName PROD \
  -sid PROD \
  -sysPassword OracleSys123 \
  -systemPassword OracleSys123 \
  -datafileDestination /u02/oradata \
  -recoveryAreaDestination /u03/fra \
  -storageType FS \
  -characterSet AL32UTF8 \
  -nationalCharacterSet AL16UTF16 \
  -totalMemory 4096 \
  -databaseType MULTIPURPOSE \
  -emConfiguration NONE

# Criar com mais opções
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName DEV.empresa.local \
  -sid DEV \
  -createAsContainerDatabase true \
  -numberOfPDBs 2 \
  -pdbName PDB \
  -pdbAdminPassword PdbPass123 \
  -sysPassword SysPass123 \
  -systemPassword SysPass123 \
  -datafileDestination /u02/oradata \
  -redoLogFileSize 100 \
  -recoveryAreaDestination /u03/fra \
  -recoveryAreaSize 10240 \
  -storageType FS \
  -memoryMgmtType AUTO_SGA \
  -totalMemory 2048 \
  -databaseType OLTP \
  -automaticMemoryManagement false \
  -characterSet AL32UTF8 \
  -nationalCharacterSet AL16UTF16 \
  -listeners LISTENER \
  -sampleSchema true \
  -emConfiguration NONE

Excluir Banco com DBCA

# Excluir banco de dados (modo silencioso)
dbca -silent -deleteDatabase \
  -sourceDB TESTDB \
  -sid TESTDB \
  -sysDBAUserName sys \
  -sysDBAPassword SysPass123

# Modo gráfico
dbca
# Selecione "Delete a database" e escolha o banco

CREATE DATABASE Manual

Criação Manual do Banco de Dados

Para máximo controle, você pode criar um banco de dados manualmente usando o comando CREATE DATABASE. É mais complexo, mas permite entender exatamente o que o DBCA faz nos bastidores.

⚠️ Quando Criar Manualmente?

  • Requisitos muito específicos não suportados pelo DBCA
  • Ambientes automatizados com scripts personalizados
  • Aprendizado profundo da arquitetura Oracle
  • Troubleshooting de problemas do DBCA

Etapas da Criação Manual:

1. Criar Diretórios
mkdir -p /u02/oradata/MANUALDB
mkdir -p /u03/fra/MANUALDB
mkdir -p /u01/app/oracle/admin/MANUALDB/adump
2. Criar Arquivo de Parâmetros (initMANUALDB.ora)
cat > $ORACLE_HOME/dbs/initMANUALDB.ora <
3. Definir Variável de Ambiente e Iniciar Instância
export ORACLE_SID=MANUALDB

sqlplus / as sysdba <
4. Executar CREATE DATABASE
CREATE DATABASE MANUALDB
  USER SYS IDENTIFIED BY SysPass123
  USER SYSTEM IDENTIFIED BY SystemPass123
  LOGFILE GROUP 1 ('/u02/oradata/MANUALDB/redo01a.log',
                    '/u02/oradata/MANUALDB/redo01b.log') SIZE 100M,
          GROUP 2 ('/u02/oradata/MANUALDB/redo02a.log',
                    '/u02/oradata/MANUALDB/redo02b.log') SIZE 100M,
          GROUP 3 ('/u02/oradata/MANUALDB/redo03a.log',
                    '/u02/oradata/MANUALDB/redo03b.log') SIZE 100M
  MAXLOGFILES 5
  MAXLOGMEMBERS 5
  MAXLOGHISTORY 1
  MAXDATAFILES 100
  CHARACTER SET AL32UTF8
  NATIONAL CHARACTER SET AL16UTF16
  EXTENT MANAGEMENT LOCAL
  DATAFILE '/u02/oradata/MANUALDB/system01.dbf' SIZE 500M REUSE AUTOEXTEND ON
  SYSAUX DATAFILE '/u02/oradata/MANUALDB/sysaux01.dbf' SIZE 500M REUSE AUTOEXTEND ON
  DEFAULT TABLESPACE users
    DATAFILE '/u02/oradata/MANUALDB/users01.dbf' SIZE 100M REUSE AUTOEXTEND ON
  DEFAULT TEMPORARY TABLESPACE temp
    TEMPFILE '/u02/oradata/MANUALDB/temp01.dbf' SIZE 100M REUSE AUTOEXTEND ON
  UNDO TABLESPACE undotbs1
    DATAFILE '/u02/oradata/MANUALDB/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON;
5. Executar Scripts Pós-Criação
-- Criar dicionário de dados
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql

-- Criar views do dicionário para usuário SYSTEM
CONNECT SYSTEM/SystemPass123
@?/sqlplus/admin/pupbld.sql

-- Habilitar modo ARCHIVELOG (opcional, mas recomendado)
CONNECT / AS SYSDBA
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- Criar SPFILE a partir do PFILE
CREATE SPFILE FROM PFILE='$ORACLE_HOME/dbs/initMANUALDB.ora';

-- Verificar criação
SELECT name, open_mode, log_mode FROM v$database;
SELECT tablespace_name, status FROM dba_tablespaces;

Script Completo de Criação Manual

Script consolidado para criar um banco manualmente:

#!/bin/bash
# create_manual_db.sh

export ORACLE_SID=MANUALDB
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1

# Criar diretórios
mkdir -p /u02/oradata/MANUALDB
mkdir -p /u03/fra/MANUALDB
mkdir -p /u01/app/oracle/admin/MANUALDB/adump

# Criar PFILE
cat > $ORACLE_HOME/dbs/initMANUALDB.ora <<'EOF'
db_name=MANUALDB
db_block_size=8192
memory_target=2G
processes=300
open_cursors=300
undo_tablespace=UNDOTBS1
control_files=(/u02/oradata/MANUALDB/control01.ctl,/u02/oradata/MANUALDB/control02.ctl)
db_recovery_file_dest=/u03/fra
db_recovery_file_dest_size=10G
compatible=19.0.0
audit_file_dest=/u01/app/oracle/admin/MANUALDB/adump
EOF

# Criar banco
sqlplus / as sysdba <<'EOSQL'
STARTUP NOMOUNT;

CREATE DATABASE MANUALDB
  USER SYS IDENTIFIED BY SysPass123
  USER SYSTEM IDENTIFIED BY SystemPass123
  LOGFILE GROUP 1 ('/u02/oradata/MANUALDB/redo01.log') SIZE 100M,
          GROUP 2 ('/u02/oradata/MANUALDB/redo02.log') SIZE 100M,
          GROUP 3 ('/u02/oradata/MANUALDB/redo03.log') SIZE 100M
  CHARACTER SET AL32UTF8
  NATIONAL CHARACTER SET AL16UTF16
  DATAFILE '/u02/oradata/MANUALDB/system01.dbf' SIZE 500M AUTOEXTEND ON
  SYSAUX DATAFILE '/u02/oradata/MANUALDB/sysaux01.dbf' SIZE 500M AUTOEXTEND ON
  DEFAULT TABLESPACE users DATAFILE '/u02/oradata/MANUALDB/users01.dbf' SIZE 100M AUTOEXTEND ON
  DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u02/oradata/MANUALDB/temp01.dbf' SIZE 100M
  UNDO TABLESPACE undotbs1 DATAFILE '/u02/oradata/MANUALDB/undotbs01.dbf' SIZE 200M AUTOEXTEND ON;

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql

CONNECT SYSTEM/SystemPass123
@?/sqlplus/admin/pupbld.sql

CONNECT / AS SYSDBA
CREATE SPFILE FROM PFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

SELECT name, open_mode FROM v$database;
EOSQL

echo "Database MANUALDB created successfully!"

Resultado Esperado

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

Criar banco com DBCA

Usar interface gráfica e modo silencioso

Escolher templates apropriados

General Purpose, Data Warehouse, Custom

Configurar parâmetros essenciais

Memória, character set, storage, recovery

Criar banco manualmente

Usar CREATE DATABASE para máximo controle

Executar scripts pós-criação

catalog.sql, catproc.sql, pupbld.sql

Gerenciar templates

Criar templates personalizados para padronização

Oracle DBA - Trilha 2: Administração Básica Oracle - Tópico 3