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

Parâmetros de Inicialização (SPFILE/PFILE)

spfile, pfile, ALTER SYSTEM, parâmetros essenciais

📄

PFILE vs SPFILE

Arquivos de Parâmetros

O Oracle Database utiliza arquivos de parâmetros para configurar o comportamento da instância durante o startup. Existem dois tipos: PFILE (arquivo texto) e SPFILE (arquivo binário servidor).

PFILE (Parameter File)

Arquivo texto editável manualmente. Nome padrão: init<SID>.ora

  • Editável com qualquer editor de texto
  • Localizado no cliente ou servidor
  • Mudanças não persistem automaticamente
  • Requer restart para aplicar alterações

Localização:
Linux: $ORACLE_HOME/dbs/init<SID>.ora
Windows: %ORACLE_HOME%\database\init<SID>.ora

SPFILE (Server Parameter File)

Arquivo binário gerenciado pelo Oracle. Nome padrão: spfile<SID>.ora

  • Não editável manualmente (binário)
  • Sempre no servidor
  • Mudanças persistem automaticamente
  • Suporta alterações dinâmicas

Localização:
Linux: $ORACLE_HOME/dbs/spfile<SID>.ora
Windows: %ORACLE_HOME%\database\spfile<SID>.ora

Ordem de Pesquisa no Startup

O Oracle procura os arquivos nesta ordem:

  1. SPFILE especificado via STARTUP PFILE (se fornecido)
  2. spfile$ORACLE_SID.ora
  3. spfile.ora
  4. init$ORACLE_SID.ora

Conversão entre PFILE e SPFILE

-- Criar SPFILE a partir de PFILE
CREATE SPFILE FROM PFILE;
-- Cria spfile.ora a partir de init.ora

-- Criar SPFILE a partir de PFILE específico
CREATE SPFILE='/u01/app/oracle/dbs/spfileORCL.ora'
  FROM PFILE='/tmp/initORCL_backup.ora';

-- Criar PFILE a partir de SPFILE (para edição/backup)
CREATE PFILE FROM SPFILE;

-- Criar PFILE em localização específica
CREATE PFILE='/backup/initORCL_backup.ora'
  FROM SPFILE;

-- Criar PFILE a partir da memória (instância em execução)
CREATE PFILE='/tmp/initORCL_current.ora'
  FROM MEMORY;

-- Ver qual arquivo está sendo usado
SHOW PARAMETER spfile;
-- Se VALUE está vazio, está usando PFILE
-- Se tem caminho, está usando SPFILE
⚙️

ALTER SYSTEM e Escopo de Mudanças

Modificando Parâmetros Dinamicamente

O comando ALTER SYSTEM permite modificar parâmetros sem necessariamente reiniciar o banco. O comportamento depende da cláusula SCOPE.

SCOPE = MEMORY

Altera apenas a instância em execução. Mudança é perdida no próximo restart.

  • Afeta apenas a instância atual
  • Não modifica o SPFILE/PFILE
  • Útil para testes temporários
ALTER SYSTEM SET sort_area_size = 10485760 SCOPE = MEMORY;

SCOPE = SPFILE

Grava apenas no SPFILE. Mudança não afeta a instância atual, apenas o próximo startup.

  • Não afeta instância atual
  • Grava no SPFILE
  • Requer SPFILE (erro se usando PFILE)
  • Requer restart para aplicar
ALTER SYSTEM SET db_cache_size = 2G SCOPE = SPFILE;
-- Requer SHUTDOWN/STARTUP para aplicar

SCOPE = BOTH (Padrão)

Altera a instância atual E grava no SPFILE. Melhor dos dois mundos para parâmetros dinâmicos.

  • Afeta instância imediatamente
  • Grava no SPFILE (se existir)
  • Mudança persiste após restart
  • Só funciona com parâmetros dinâmicos
ALTER SYSTEM SET sessions = 500 SCOPE = BOTH;
-- Aplica agora E persiste no SPFILE

Tipos de Parâmetros

Parâmetros Dinâmicos

Podem ser alterados com SCOPE = BOTH ou MEMORY. Não requerem restart.

  • log_archive_dest_1
  • db_cache_advice
  • timed_statistics
  • parallel_max_servers

Parâmetros Estáticos

Só podem ser alterados com SCOPE = SPFILE. Requerem restart da instância.

  • db_block_size
  • db_name
  • compatible
  • processes

Consultando Parâmetros

-- Consultar um parâmetro específico
SHOW PARAMETER sga_target;

-- Consultar vários parâmetros (com wildcard)
SHOW PARAMETER memory;

-- Ver todos os parâmetros
SELECT name, value, isdefault, ismodified
FROM v$parameter
ORDER BY name;

-- Ver parâmetros modificados (não-padrão)
SELECT name, value
FROM v$parameter
WHERE isdefault = 'FALSE'
ORDER BY name;

-- Ver parâmetros no SPFILE (valores persistidos)
SELECT name, value
FROM v$spparameter
WHERE value IS NOT NULL
ORDER BY name;

-- Comparar memória vs SPFILE
SELECT p.name, p.value AS current_value, sp.value AS spfile_value
FROM v$parameter p, v$spparameter sp
WHERE p.name = sp.name
  AND p.value != sp.value
  AND sp.value IS NOT NULL
ORDER BY p.name;

-- Ver histórico de mudanças
SELECT name, value, update_comment
FROM v$parameter_valid_values
WHERE name = 'sga_target';
🔑

Parâmetros Essenciais

Parâmetros de Memória

MEMORY_TARGET (Automatic Memory Management)

Define o total de memória gerenciada automaticamente pelo Oracle (SGA + PGA). Mais simples, mas menos controle granular.

-- Habilitar AMM (requer restart)
ALTER SYSTEM SET memory_target = 4G SCOPE = SPFILE;
ALTER SYSTEM SET memory_max_target = 4G SCOPE = SPFILE;

-- Desabilitar parâmetros manuais quando usar AMM
ALTER SYSTEM SET sga_target = 0 SCOPE = SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 0 SCOPE = SPFILE;

SGA_TARGET (Automatic Shared Memory Management)

Gerenciamento automático apenas da SGA. Oracle aloca automaticamente buffer cache, shared pool, etc.

-- Configurar ASMM
ALTER SYSTEM SET sga_target = 3G SCOPE = BOTH;
ALTER SYSTEM SET pga_aggregate_target = 1G SCOPE = BOTH;

-- Verificar distribuição automática
SELECT component, current_size/1024/1024 AS size_mb
FROM v$sga_dynamic_components
WHERE current_size > 0;

Configuração Manual (Sem AMM/ASMM)

-- Desabilitar gerenciamento automático
ALTER SYSTEM SET memory_target = 0 SCOPE = SPFILE;
ALTER SYSTEM SET sga_target = 0 SCOPE = SPFILE;

-- Configurar componentes manualmente
ALTER SYSTEM SET db_cache_size = 2G SCOPE = SPFILE;
ALTER SYSTEM SET shared_pool_size = 800M SCOPE = SPFILE;
ALTER SYSTEM SET large_pool_size = 200M SCOPE = SPFILE;
ALTER SYSTEM SET java_pool_size = 100M SCOPE = SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 1G SCOPE = SPFILE;

Parâmetros de Controle e Redo

CONTROL_FILES

Localização dos control files. Sempre use múltiplos control files em discos diferentes.

-- Ver control files atuais
SHOW PARAMETER control_files;

-- Modificar (requer shutdown, cópia manual, e startup)
ALTER SYSTEM SET control_files =
  '/u02/oradata/ORCL/control01.ctl',
  '/u03/oradata/ORCL/control02.ctl',
  '/u04/oradata/ORCL/control03.ctl'
SCOPE = SPFILE;

LOG_ARCHIVE_DEST_N e DB_RECOVERY_FILE_DEST

Destinos para arquivamento de redo logs (modo ARCHIVELOG).

-- Configurar Fast Recovery Area
ALTER SYSTEM SET db_recovery_file_dest = '/u03/fra' SCOPE = BOTH;
ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE = BOTH;

-- Ou usar LOG_ARCHIVE_DEST_1
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u03/archive' SCOPE = BOTH;

Parâmetros de Performance

PROCESSES

Número máximo de processos do sistema operacional que podem conectar à instância. Estático - requer restart.

ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;

SESSIONS

Número máximo de sessões simultâneas. Derivado de PROCESSES: (1.5 * PROCESSES) + 22

ALTER SYSTEM SET sessions = 750 SCOPE = SPFILE;

OPEN_CURSORS

Número máximo de cursores abertos que uma sessão pode ter. Dinâmico.

ALTER SYSTEM SET open_cursors = 500 SCOPE = BOTH;

COMPATIBLE

Define compatibilidade com versões anteriores. Atenção: Não pode ser revertido após commit!

-- Ver versão atual
SHOW PARAMETER compatible;

-- Aumentar (cuidado!)
ALTER SYSTEM SET compatible = '19.0.0' SCOPE = SPFILE;

Parâmetros de Tablespace e Undo

-- UNDO_TABLESPACE: tablespace para undo segments
ALTER SYSTEM SET undo_tablespace = UNDOTBS1 SCOPE = BOTH;

-- UNDO_RETENTION: tempo mínimo (segundos) para reter dados undo
ALTER SYSTEM SET undo_retention = 3600 SCOPE = BOTH;

-- DB_BLOCK_SIZE: tamanho do bloco (ESTÁTICO, só na criação do DB)
-- Valores comuns: 4K, 8K (padrão), 16K, 32K
SHOW PARAMETER db_block_size;

-- DB_CREATE_FILE_DEST: local padrão para OMF (Oracle Managed Files)
ALTER SYSTEM SET db_create_file_dest = '/u02/oradata' SCOPE = BOTH;

-- AUDIT_TRAIL: habilitar auditoria
ALTER SYSTEM SET audit_trail = DB, EXTENDED SCOPE = SPFILE;

Práticas Recomendadas

1. Sempre use SPFILE em produção

SPFILE garante que mudanças persistam e permite ALTER SYSTEM dinâmico. PFILE é útil apenas para emergências ou quando SPFILE está corrompido.

2. Faça backup do SPFILE antes de mudanças críticas

CREATE PFILE='/backup/initORCL_backup.ora' FROM SPFILE;

3. Teste mudanças com SCOPE=MEMORY primeiro

Para parâmetros dinâmicos, teste com MEMORY, verifique impacto, depois use BOTH.

4. Documente mudanças de parâmetros

Use comentários ou sistema de controle de versão para rastrear mudanças e justificativas.

5. Revise parâmetros ocultos com cuidado

-- Ver parâmetros ocultos (começam com _)
SELECT name, value, description
FROM v$parameter
WHERE name LIKE '\_%' ESCAPE '\';

-- CUIDADO: parâmetros ocultos são para uso interno Oracle
-- Só modifique sob orientação do Oracle Support!

6. Cuidado com COMPATIBLE

Uma vez aumentado e após commit, não pode ser revertido sem recriar o banco! Teste em ambiente não-produtivo primeiro.

🎯

Resultado Esperado

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

Diferenciar PFILE e SPFILE

Entender vantagens e quando usar cada um

Converter entre formatos

CREATE SPFILE FROM PFILE e vice-versa

Usar ALTER SYSTEM corretamente

Compreender SCOPE: MEMORY, SPFILE, BOTH

Conhecer parâmetros essenciais

Memória, processos, undo, recovery, performance

Consultar parâmetros

SHOW PARAMETER, V$PARAMETER, V$SPPARAMETER

Aplicar best practices

Backup, testes, documentação de mudanças

Anterior: Startup e Shutdown Próximo: Tablespaces e Datafiles