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.
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;
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;
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 SeguroO 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
RecomendadoAguarda 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 UsadoO 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ênciaO 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