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