01
Fundamentos & Arquitetura Oracle
Instance · Database · SGA · PGA · Processos · Arquivos
Básico
Conceitos Essenciais
| Item | Descrição |
|---|---|
| Database | Conjunto físico de arquivos: datafiles, control files, redo logs, tempfiles |
| Instance | Memória + processos que acessam o database |
| SGA | Memória compartilhada: buffer cache, shared pool, redo log buffer, large/java/streams pool |
| PGA | Memória privada de cada processo servidor |
| CDB/PDB | Arquitetura multitenant: Container Database e Pluggable Databases |
| Data Dictionary | Metadados do banco: USER_, ALL_, DBA_, V$, GV$ |
| SCN | System Change Number; marca lógica de consistência |
| Checkpoint | Sincroniza buffers sujos para disco e atualiza headers/controlfile |
Arquivos Físicos
| Item | Descrição |
|---|---|
| Datafiles | Armazenam segmentos: tabelas, índices, undo, LOBs |
| Control files | Estrutura crítica com metadados, SCN, backups e redo history |
| Online redo logs | Registram mudanças para recuperação de instância |
| Archived redo logs | Cópias dos redos para recuperação e Data Guard |
| Tempfiles | Usados por tablespace temporária em sort/hash/temp |
| Password file | Autenticação administrativa remota SYSDBA/SYSOPER |
| SPFILE/PFILE | Parâmetros de inicialização da instância |
Processos Background
| Item | Descrição |
|---|---|
| PMON | Limpa sessões mortas e registra serviço no listener |
| SMON | Instance recovery e limpeza de segmentos temporários |
| DBWn | Grava dirty buffers para datafiles |
| LGWR | Grava redo buffer nos online redo logs |
| CKPT | Sinaliza checkpoints e atualiza headers |
| ARCn | Arquiva online redo logs |
| MMON/MMNL | AWR, snapshots e métricas |
| CJQ0/Jnnn | Scheduler jobs |
Comandos rápidos
$ export ORACLE_SID=orcl
$ sqlplus / as sysdba
SQL> show parameter db_name
SQL> select name, open_mode, database_role from v$database;
SQL> select instance_name, status from v$instance;
SQL> select con_id, name, open_mode from v$pdbs;
02
Instalação & Ambiente Oracle 19c/21c/23ai
Oracle Linux · Preinstall · OFA · Listener · DBCA Silent
Básico
Pré-requisitos Linux
| Item | Descrição |
|---|---|
| Pacote preinstall | oracle-database-preinstall-19c ajusta kernel, limits, users e grupos |
| Usuários/grupos | oracle, oinstall, dba, oper, backupdba, dgdba, kmdba |
| OFA | /u01/app/oracle/product/19.0.0/dbhome_1 |
| Variáveis | ORACLE_BASE, ORACLE_HOME, ORACLE_SID, PATH, TNS_ADMIN |
| Swap/SHMMAX | Dimensionar conforme RAM e recomendações do ambiente |
| SELinux/Firewall | Validar políticas; em lab geralmente permissive/firewalld off |
Instalação Silent — exemplo
$ ./runInstaller -silent -responseFile db_install.rsp -ignorePrereqFailure
$ /u01/app/oraInventory/orainstRoot.sh
$ /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
$ netca -silent -responseFile netca.rsp
$ dbca -silent -createDatabase -responseFile dbca.rsp
Checklist Pós-instalação
| Item | Descrição |
|---|---|
| Listener | lsnrctl status |
| Banco | sqlplus / as sysdba |
| Serviços | select name from v$services; |
| Alert log | show parameter diagnostic_dest |
| Autostart | /etc/oratab + dbstart/dbshut |
| Patch | opatch lsinventory |
Validação básica
$ ps -ef | grep pmon
$ lsnrctl status
$ sqlplus -L / as sysdba <
SQL> select status from v\$instance;
SQL> select name, open_mode from v\$database;
$ EOF
03
SQL*Plus, SQLcl & Administração Básica
Conexão · Usuários · Sessões · Dicionário · PDBs
Básico
Comandos SQL*Plus
| Item | Descrição |
|---|---|
| show parameter | Exibe parâmetros |
| show pdbs | Lista PDBs |
| show con_name | Mostra container atual |
| set lines 200 pages 100 | Formata saída |
| col name format a30 | Formata coluna |
| spool arquivo.log | Grava saída em arquivo |
| desc tabela | Descreve objeto |
| @script.sql | Executa script SQL |
Criação de usuário
SQL> alter session set container=ORCLPDB1;
SQL> create user app identified by "Senha#2026" default tablespace users temporary tablespace temp;
SQL> grant create session, create table, create sequence, create view to app;
SQL> alter user app quota unlimited on users;
SQL> select username, account_status from dba_users where username = 'APP';
Sessões e bloqueios
SQL> select sid, serial#, username, status, machine from v$session where username is not null;
SQL> select s.sid, s.serial#, s.username, l.type, l.lmode, l.request from v$lock l join v$session s on s.sid=l.sid;
SQL> alter system kill session '&sid,&serial' immediate;
Views úteis
| Item | Descrição |
|---|---|
| DBA_TABLESPACES | Tablespaces |
| DBA_DATA_FILES | Datafiles permanentes |
| DBA_TEMP_FILES | Tempfiles |
| DBA_USERS | Usuários |
| DBA_OBJECTS | Objetos |
| V$SESSION | Sessões |
| V$SQL | SQLs em memória |
| V$DATABASE | Informações do banco |
04
Tablespaces, Datafiles & Segmentos
Storage lógico · ASM · Autoextend · Temp · Undo
Intermediário
Estrutura lógica
| Item | Descrição |
|---|---|
| Tablespace | Container lógico de segmentos |
| Segment | Tabela, índice, undo, LOB |
| Extent | Conjunto de blocos alocados |
| Block | Menor unidade de I/O Oracle |
| ASM Diskgroup | Storage gerenciado pelo ASM |
| Bigfile TS | Tablespace com um datafile grande |
| Smallfile TS | Tablespace com múltiplos datafiles |
Criar e expandir tablespace
SQL> create tablespace app_data datafile '/u02/oradata/ORCL/app_data01.dbf' size 10G autoextend on next 1G maxsize 50G;
SQL> alter tablespace app_data add datafile '/u02/oradata/ORCL/app_data02.dbf' size 10G autoextend on next 1G maxsize 50G;
SQL> alter database datafile '/u02/oradata/ORCL/app_data01.dbf' resize 20G;
Monitoramento de espaço
SQL> select tablespace_name, round(used_percent,2) used_pct from dba_tablespace_usage_metrics order by used_percent desc;
SQL> select file_name, bytes/1024/1024 MB, autoextensible, maxbytes/1024/1024 max_mb from dba_data_files;
SQL> select tablespace_name, file_name, bytes/1024/1024 MB from dba_temp_files;
Undo e Temp
| Item | Descrição |
|---|---|
| UNDO_RETENTION | Tempo desejado para retenção de undo |
| ORA-01555 | Snapshot too old; avaliar undo sizing/queries longas |
| TEMP | Sort, hash join, create index, operações temporárias |
| Temp usage | GV$TEMPSEG_USAGE e V$SORT_USAGE |
05
Backup & Recovery com RMAN
Backupset · Image Copy · Archivelog · Restore · Recover
Intermediário
Estratégia RMAN
| Item | Descrição |
|---|---|
| Full backup | Backup completo do banco |
| Incremental level 0 | Base para incrementais |
| Incremental level 1 | Mudanças desde level 0 ou último level 1 |
| Archivelog backup | Necessário para point-in-time recovery |
| Controlfile autobackup | Crítico para recuperação de desastre |
| Retention policy | Recovery window ou redundancy |
| Crosscheck | Sincroniza catálogo RMAN com arquivos físicos |
Backup completo
$ rman target /
SQL> configure controlfile autobackup on;
SQL> configure retention policy to recovery window of 7 days;
SQL> backup as compressed backupset database plus archivelog;
SQL> delete noprompt obsolete;
Restore e recover básico
SQL> startup mount;
SQL> restore database;
SQL> recover database;
SQL> alter database open;
PITR — visão geral
SQL> run {
$ set until time "to_date('2026-06-11 10:00:00','yyyy-mm-dd hh24:mi:ss')";
$ restore database;
$ recover database;
$ alter database open resetlogs;
SQL> }
06
Performance & Tuning
AWR · ASH · Wait Events · SQL Tuning · Índices
Intermediário
Fluxo de análise
| Item | Descrição |
|---|---|
| 1. Sintoma | Lentidão geral, query específica, CPU, I/O, locks |
| 2. Janela | Definir horário exato do problema |
| 3. Métricas | AWR/ASH, wait events, top SQL, load profile |
| 4. Plano | DBMS_XPLAN, cardinalidade, joins, filtros |
| 5. Correção | Stats, índice, rewrite, parâmetros, SQL Profile/Baseline |
| 6. Validação | Comparar antes/depois com métricas |
AWR/ASH
$ @?/rdbms/admin/awrrpt.sql
$ @?/rdbms/admin/ashrpt.sql
SQL> select snap_id, begin_interval_time, end_interval_time from dba_hist_snapshot order by snap_id desc fetch first 10 rows only;
SQL Plan
SQL> select * from table(dbms_xplan.display_cursor('&sql_id', null, 'ALLSTATS LAST +PEEKED_BINDS'));
SQL> select sql_id, executions, elapsed_time/1000000 elapsed_s, buffer_gets, disk_reads from v$sql order by elapsed_time desc fetch first 20 rows only;
Wait Events comuns
| Item | Descrição |
|---|---|
| db file sequential read | Leitura single-block, comum em índice |
| db file scattered read | Leitura multiblock, full scan |
| log file sync | Commit aguardando LGWR |
| enq: TX - row lock contention | Bloqueio de linha |
| library cache lock/pin | Concorrência em shared pool |
| direct path read/write temp | Uso de TEMP em operações grandes |
07
Networking Oracle
Listener · TNS · Services · EZCONNECT · Troubleshooting
Intermediário
Arquivos de rede
| Item | Descrição |
|---|---|
| listener.ora | Configuração do listener |
| tnsnames.ora | Aliases de conexão |
| sqlnet.ora | Métodos de autenticação, timeout, wallet |
| ldap.ora | Directory naming |
| TNS_ADMIN | Diretório alternativo para arquivos de rede |
Comandos Listener
$ lsnrctl status
$ lsnrctl services
$ lsnrctl stop
$ lsnrctl start
SQL> alter system register;
Exemplo tnsnames.ora
$ ORCLPDB1 =
$ (DESCRIPTION =
$ (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver01)(PORT = 1521))
$ (CONNECT_DATA = (SERVICE_NAME = orclpdb1))
$ )
Testes de conexão
$ tnsping ORCLPDB1
$ sqlplus app/Senha#2026@ORCLPDB1
$ sqlplus app/Senha#2026@//dbserver01:1521/orclpdb1
SQL> select sys_context('USERENV','SERVICE_NAME') from dual;
08
Data Guard & Alta Disponibilidade
Physical Standby · Broker · Switchover · Failover
Avançado
Componentes Data Guard
| Item | Descrição |
|---|---|
| Primary | Banco principal aberto para produção |
| Standby | Cópia sincronizada para DR |
| Redo Transport | Envio de redo para standby |
| Redo Apply | Aplicação do redo no standby |
| Data Guard Broker | Gerência via DGMGRL |
| Protection Mode | Maximum Performance, Availability ou Protection |
Verificações no banco
SQL> select name, database_role, open_mode, protection_mode from v$database;
SQL> select process, status, sequence# from v$managed_standby;
SQL> select dest_id, status, error from v$archive_dest_status where dest_id <= 5;
Broker básico
$ dgmgrl /
SQL> show configuration;
SQL> show database verbose ORCL;
$ validate database ORCL_STBY;
$ switchover to ORCL_STBY;
Lag e saúde
| Item | Descrição |
|---|---|
| Transport Lag | Diferença de redo transportado |
| Apply Lag | Diferença aplicada no standby |
| MRP0 | Managed Recovery Process |
| RFS | Recebe redo no standby |
| FAL_SERVER | Busca archives ausentes |
09
RAC, ASM & Clusterware
Grid Infrastructure · OCR · Voting · SCAN · Services
Avançado
Conceitos RAC
| Item | Descrição |
|---|---|
| Clusterware | Camada de cluster e recursos |
| ASM | Gerencia storage compartilhado |
| OCR | Oracle Cluster Registry |
| Voting disks | Quórum do cluster |
| SCAN | Nome único de acesso ao cluster |
| VIP | IP virtual por nó |
| Services | Roteamento e failover de aplicações |
Comandos Clusterware
$ crsctl check cluster -all
$ crsctl stat res -t
$ olsnodes -n -i
$ srvctl status database -d ORCL
$ srvctl status service -d ORCL
$ srvctl config scan
ASM
$ asmcmd lsdg
$ asmcmd ls +DATA
SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup;
SQL> select path, name, failgroup, header_status from v$asm_disk;
Troubleshooting RAC
| Item | Descrição |
|---|---|
| Cluster não sobe | Verificar OHASD, CSSD, voting, rede privada |
| Instância não registra | Listener, SCAN, service_names, local_listener |
| Interconnect | Validar latência, MTU, perda de pacote |
| Split-brain | Voting/quórum evita escrita simultânea inconsistente |
10
Segurança, Auditoria & Criptografia
Roles · Profiles · TDE · Auditing · Least Privilege
Avançado
Hardening básico
| Item | Descrição |
|---|---|
| Menor privilégio | Conceder somente permissões necessárias |
| Profiles | Senha, lock, sessões, idle time |
| Auditoria | Unified Auditing ou audit tradicional |
| TDE | Criptografia em repouso |
| Wallet/Keystore | Armazena master key |
| Patch | Manter RU/CPU atualizado |
| Contas padrão | Bloquear/remover contas não usadas |
Profiles e usuários
SQL> create profile app_profile limit failed_login_attempts 5 password_life_time 90 idle_time 30;
SQL> alter user app profile app_profile;
SQL> select username, account_status, profile from dba_users order by username;
TDE visão rápida
SQL> administer key management create keystore '/u01/app/oracle/admin/ORCL/wallet' identified by "SenhaWallet#2026";
SQL> administer key management set keystore open identified by "SenhaWallet#2026";
SQL> administer key management set key identified by "SenhaWallet#2026" with backup;
SQL> alter tablespace app_data encryption online encrypt;
Auditoria
SQL> select user_name, action_name, event_timestamp from unified_audit_trail order by event_timestamp desc fetch first 20 rows only;
SQL> audit create session;
SQL> audit select on app.tabela_critica;
11
Troubleshooting & Operação de Produção
Alert Log · ORA Errors · Locks · Incidentes · Runbook
Expert
Runbook de incidente
| Item | Descrição |
|---|---|
| 1. Confirmar impacto | Usuários, aplicações, tempo, escopo |
| 2. Coletar evidências | Alert log, AWR/ASH, sessões, eventos |
| 3. Estabilizar | Kill sessão, expandir TS, liberar lock, failover se necessário |
| 4. Corrigir causa | SQL, storage, rede, parâmetro, bug/patch |
| 5. Documentar | Timeline, causa raiz, ação preventiva |
Alert log e ADRCI
SQL> show parameter diagnostic_dest
$ adrci
SQL> show homes
$ set home diag/rdbms/orcl/ORCL
SQL> show alert -tail 100
SQL> show incident
Erros comuns
| Item | Descrição |
|---|---|
| ORA-01017 | Usuário/senha inválidos ou case sensitive |
| ORA-12154 | Alias TNS não resolvido |
| ORA-12514 | Listener não conhece service |
| ORA-01653 | Não consegue estender segmento |
| ORA-01555 | Snapshot too old |
| ORA-00060 | Deadlock detectado |
| ORA-00257 | Archiver stuck; FRA cheia |
Scripts úteis
SQL> select * from v$diag_alert_ext where originating_timestamp > systimestamp - interval '1' hour order by originating_timestamp desc;
SQL> select blocking_session, sid, serial#, wait_class, event, seconds_in_wait from v$session where blocking_session is not null;
SQL> select name, space_limit/1024/1024/1024 limit_gb, space_used/1024/1024/1024 used_gb from v$recovery_file_dest;
12
Automação, Cloud & Carreira DBA
Shell · Python · OCI · Exadata · Portfólio · Cursos
Expert
Automação DBA
| Item | Descrição |
|---|---|
| Shell | Backup, validação, logs, healthcheck |
| Python | Relatórios, coleta via oracledb, APIs |
| Ansible | Padronização de instalação e config |
| Terraform | Provisionamento em cloud |
| GitHub | Versionamento de scripts e portfólio |
| HTML reports | Entrega visual para cliente/aluno |
Healthcheck exemplo
#!/bin/bash
$ export ORACLE_SID=orcl
$ sqlplus -s / as sysdba <
$ set pages 100 lines 200
SQL> select instance_name,status from v\$instance;
SQL> select tablespace_name, used_percent from dba_tablespace_usage_metrics where used_percent > 85;
SQL> select name, open_mode from v\$database;
$ EOF
Cloud/Exadata
| Item | Descrição |
|---|---|
| OCI DB System | Banco gerenciado em VM/BM |
| ExaCS | Exadata Cloud Service em OCI |
| ExaCC | Exadata Cloud@Customer |
| Object Storage | Destino para backup |
| Data Safe | Segurança e auditoria |
| Ops Insights | Capacidade e performance |
| MAA | Arquitetura máxima disponibilidade |
Para vender como curso
| Item | Descrição |
|---|---|
| Módulos práticos | Instalação, administração, backup, tuning, HA |
| Laboratórios | VM Oracle Linux + Oracle 19c/23ai Free |
| Projetos | Healthcheck, RMAN, Data Guard, AWR |
| Portfólio | Publicar HTML, GitHub e LinkedIn |
| Certificado | Emitir certificado de conclusão próprio |
LAB
Mini Lab Interativo — Checklist DBA
Use como página de apresentação do curso e material de apoio
Prático
Como usar este material
- Aula 1: Fundamentos e arquitetura Oracle
- Aula 2: Instalação silent e validação do ambiente
- Aula 3: Administração diária com SQL*Plus/SQLcl
- Aula 4: Backup, restore e recovery com RMAN
- Aula 5: Performance, AWR, ASH e SQL tuning
- Aula 6: Alta disponibilidade com RAC e Data Guard
Mapa Visual Oracle Database
InstânciaSMONPMONDBWnLGWRCKPTARCn...
MemóriaSGA - Buffer Cache - Shared Pool - Redo Buffer - Large PoolPGA - Session Data
Storage◉ Datafiles◉ Control Files◉ Redo Logs◉ Tempfiles
ProteçãoRMAN BackupData GuardArchive LogsFlashback
ORACLE
DATABASE
RMANBackup
Data GuardDR
ASM/RACHA
"Dados são o novo petróleo, mas é o DBA que refina."— Renato Barros
Simulador de Comandos
Como testarDigite
help para ver todos os comandos aceitos. O simulador aceita somente os comandos listados abaixo para manter o laboratório seguro e didático.SQL> Digite help ou clique em um comando da lista abaixo.
Comandos disponíveis para teste
Dica: clique em qualquer comando da lista para preencher o terminal automaticamente.