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

Startup e Shutdown do Banco de Dados

Modos de startup, opções de shutdown, troubleshooting

🚀

Modos de Startup do Banco de Dados

Sequência de Startup

O startup de um banco de dados Oracle ocorre em três estágios sequenciais. Cada estágio disponibiliza um conjunto diferente de funcionalidades.

1

NOMOUNT

Instância iniciada, mas banco de dados ainda não associado. SGA é alocada, processos de background são iniciados, e arquivo de parâmetros é lido.

  • Usado para: Criar novo banco de dados, recriar control files
  • Arquivo lido: SPFILE ou PFILE
  • Disponível: Apenas operações na instância
STARTUP NOMOUNT;
2

MOUNT

Banco montado - Control files são abertos e lidos. Oracle conhece a localização de todos os datafiles e redo log files, mas ainda não os abriu.

  • Usado para: Operações de manutenção (backup completo, recovery, archivelog)
  • Arquivo lido: Control files
  • Disponível: Comandos de manutenção do banco
STARTUP MOUNT;
-- Ou a partir de NOMOUNT:
ALTER DATABASE MOUNT;
3

OPEN

Banco aberto - Todos os datafiles e redo log files online são abertos. O banco está disponível para operações normais de usuários.

  • Usado para: Operações normais do banco de dados
  • Arquivos abertos: Datafiles, redo log files
  • Disponível: Acesso completo aos dados
STARTUP;  -- Padrão, vai até OPEN
-- Ou a partir de MOUNT:
ALTER DATABASE OPEN;

Opções Especiais de Startup

STARTUP FORCE

Força o shutdown e reinicialização do banco. Equivale a SHUTDOWN ABORT seguido de STARTUP.

STARTUP FORCE;

STARTUP RESTRICT

Abre o banco em modo restrito. Apenas usuários com privilégio RESTRICTED SESSION podem conectar. Útil para manutenção.

STARTUP RESTRICT;

-- Habilitar/desabilitar modo restrito em banco aberto:
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM DISABLE RESTRICTED SESSION;

STARTUP READ ONLY

Abre o banco em modo somente leitura. Nenhuma modificação é permitida. Ideal para ambientes de relatório ou standby databases.

STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

-- Verificar modo:
SELECT open_mode FROM v$database;

STARTUP UPGRADE

Usado durante upgrade de versão do Oracle. Abre o banco com compatibilidade reduzida.

STARTUP UPGRADE;
🛑

Opções de Shutdown

Quatro Modos de Shutdown

O Oracle oferece quatro modos de shutdown, cada um com diferentes níveis de "gentileza" com as sessões conectadas e transações em andamento.

SHUTDOWN NORMAL

Mais Seguro

O modo mais "gentil" e seguro. Aguarda todos os usuários se desconectarem.

  • ❌ Não permite novas conexões
  • ⏳ Aguarda todos os usuários desconectarem
  • ✅ Commit automático de transações abertas
  • ✅ Checkpoint é feito
  • ✅ Não requer instance recovery no próximo startup

Quando usar: Shutdown planejado em produção sem pressa

SHUTDOWN NORMAL;
-- Pode demorar MUITO se houver sessões que não desconectam

SHUTDOWN TRANSACTIONAL

Recomendado

Aguarda apenas que as transações em andamento terminem.

  • ❌ Não permite novas conexões
  • ❌ Não permite novas transações em sessões existentes
  • ⏳ Aguarda transações ativas finalizarem (COMMIT ou ROLLBACK)
  • 🔌 Desconecta sessões assim que transações terminam
  • ✅ Checkpoint é feito
  • ✅ Não requer instance recovery no próximo startup

Quando usar: Shutdown planejado em produção (modo mais usado)

SHUTDOWN TRANSACTIONAL;

SHUTDOWN IMMEDIATE

Mais Usado

O modo mais comum na prática. Força desconexão de todos os usuários imediatamente.

  • ❌ Não permite novas conexões
  • 🔄 Faz ROLLBACK de transações ativas (não commitadas)
  • 🔌 Desconecta todas as sessões imediatamente
  • ✅ Checkpoint é feito
  • ✅ Não requer instance recovery no próximo startup

Quando usar: Manutenções programadas, situação normal de shutdown

SHUTDOWN IMMEDIATE;
-- Modo padrão recomendado pela Oracle para uso geral

SHUTDOWN ABORT

⚠️ Emergência

O modo mais agressivo. Equivale a "puxar o cabo de força" do servidor.

  • ❌ Não permite novas conexões
  • ❌ NÃO faz ROLLBACK de transações
  • 🔌 Desconecta todas as sessões instantaneamente
  • ❌ NÃO faz checkpoint
  • ⚠️ REQUER instance recovery no próximo startup

Quando usar: Apenas em emergências ou quando IMMEDIATE falha

SHUTDOWN ABORT;
-- Startup seguinte será mais demorado (instance recovery)
-- Equivalente a: kill -9 nos processos Oracle

Comparação dos Modos de Shutdown

Comportamento NORMAL TRANS. IMMED. ABORT
Permite novas conexões ❌ ❌ ❌ ❌
Aguarda sessões desconectarem ✅ ⏳ ❌ ❌
Aguarda transações finalizarem ✅ ✅ ❌ ❌
Faz checkpoint ✅ ✅ ✅ ❌
Faz rollback ✅ ✅ ✅ ❌
Requer recovery no startup ❌ ❌ ❌ ✅
Velocidade de shutdown 🐌 Lento ⏱️ Médio ⚡ Rápido ⚡ Instantâneo
🔧

Troubleshooting de Startup e Shutdown

Problemas Comuns no Startup

Erro: ORA-01078 / ORA-01565 - Arquivo de parâmetros não encontrado

Oracle não consegue localizar o SPFILE ou PFILE.

-- Verificar localização padrão
-- Linux: $ORACLE_HOME/dbs/spfile.ora ou init.ora
-- Windows: %ORACLE_HOME%\database\spfile.ora

-- Solução: especificar PFILE manualmente
STARTUP PFILE='/caminho/para/initORCL.ora';

-- Ou criar SPFILE a partir de PFILE
CREATE SPFILE FROM PFILE='/caminho/para/initORCL.ora';

Erro: ORA-00205 - Control file identificado incorretamente

Control file corrompido ou não encontrado.

-- Ver localização dos control files
SHOW PARAMETER control_files;

-- Solução 1: Copiar de backup
-- cp /backup/control01.ctl /u02/oradata/ORCL/control01.ctl

-- Solução 2: Recriar control file (último recurso)
-- Executar script gerado previamente por:
-- ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Erro: ORA-01157 / ORA-01110 - Datafile não encontrado

Um datafile especificado no control file não existe ou não é acessível.

-- Identificar datafile problemático
SELECT file_id, file_name, status
FROM dba_data_files
WHERE status != 'AVAILABLE';

-- Solução 1: Restaurar datafile de backup
-- cp /backup/users01.dbf /u02/oradata/ORCL/users01.dbf

-- Solução 2: Se tablespace não for crítico, fazer offline
ALTER DATABASE DATAFILE '/u02/oradata/ORCL/users01.dbf' OFFLINE DROP;
ALTER DATABASE OPEN;

Erro: ORA-00600 - Erro interno Oracle

Erro interno grave. Pode indicar corrupção.

-- Verificar alert log para mais detalhes
-- Localização: $ORACLE_BASE/diag/rdbms///trace/alert_.log

-- Tentar startup em modo restrito
STARTUP RESTRICT;

-- Se falhar, abrir SR (Service Request) com Oracle Support

Problemas Comuns no Shutdown

Shutdown IMMEDIATE demora muito / trava

Geralmente causado por transações longas ou rollback extenso.

-- Identificar sessões ativas
SELECT sid, serial#, username, status, program
FROM v$session
WHERE type != 'BACKGROUND';

-- Verificar transações longas
SELECT s.sid, s.serial#, t.used_ublk, t.used_urec
FROM v$transaction t, v$session s
WHERE t.addr = s.taddr
ORDER BY t.used_ublk DESC;

-- Solução: Aguardar ou usar SHUTDOWN ABORT
SHUTDOWN ABORT;

Não consigo fazer shutdown (permissão negada)

Usuário não tem privilégio SYSDBA ou SYSOPER.

-- Conectar como SYSDBA
sqlplus / as sysdba
-- ou
sqlplus sys/password@ORCL as sysdba

-- Verificar privilégios
SELECT * FROM v$pwfile_users;

Banco travado após SHUTDOWN ABORT

Startup normal após ABORT pode demorar devido ao instance recovery.

-- Após SHUTDOWN ABORT, sempre fazer startup completo
STARTUP;

-- Monitorar progresso do recovery
SELECT * FROM v$recovery_progress;

-- Ver quanto falta (pode demorar minutos/horas dependendo do volume)
SELECT * FROM v$instance_recovery;

Comandos Úteis para Diagnóstico

-- Verificar status da instância
SELECT instance_name, status, database_status
FROM v$instance;

-- Verificar status do banco de dados
SELECT name, open_mode, log_mode
FROM v$database;

-- Listar sessões conectadas
SELECT COUNT(*) FROM v$session WHERE type != 'BACKGROUND';

-- Ver detalhes das sessões
SELECT sid, serial#, username, status, machine, program
FROM v$session
WHERE type != 'BACKGROUND'
ORDER BY username;

-- Matar uma sessão específica (em casos extremos)
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

-- Ver últimas linhas do alert log (Linux)
-- tail -100 $ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log

-- Verificar se banco está em modo restrito
SELECT logins FROM v$instance;
-- ALLOWED = normal, RESTRICTED = modo restrito
✨

Práticas Recomendadas

1. Sempre use SHUTDOWN IMMEDIATE para manutenções

É o melhor equilíbrio entre rapidez e segurança. SHUTDOWN NORMAL pode demorar indefinidamente.

2. Reserve SHUTDOWN ABORT apenas para emergências

O startup seguinte será mais demorado devido ao instance recovery. Use apenas quando IMMEDIATE falha.

3. Monitore o alert log após problemas

O alert log é sua principal fonte de informação sobre erros durante startup/shutdown.

4. Documente sequências de startup especiais

Se seu ambiente requer passos específicos (ex: montar ASM primeiro), documente claramente.

5. Automatize startup com init scripts ou systemd

Configure o banco para iniciar automaticamente após reboot do servidor.

🎯

Resultado Esperado

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

✓

Entender estágios de startup

NOMOUNT, MOUNT, OPEN e quando usar cada um

✓

Escolher modo de shutdown

NORMAL, TRANSACTIONAL, IMMEDIATE, ABORT

✓

Usar opções especiais

FORCE, RESTRICT, READ ONLY, UPGRADE

✓

Diagnosticar problemas

Interpretar erros comuns e consultar alert log

✓

Monitorar sessões

Identificar sessões ativas e transações longas

✓

Aplicar best practices

Seguir recomendações para ambientes produtivos

Anterior: Criando Database com DBCA Próximo: Parâmetros de Inicialização