Oracle Database · DBA · Guia Completo · Curso Prático

SQL> Oracle --dba-cheat-sheet

Do básico ao expert · Administração · RMAN · Tuning · RAC · Data Guard · Cloud
12Módulos
250+Comandos
4Níveis
19cBase
23aiAtual
DBAPrático
renato@oracle-lab:~$ sqlplus / as sysdba && echo "Oracle Database Training — Renato Barros"
COMPATIBILIDADE: Oracle 19c Oracle 21c Oracle 23ai Free Oracle Linux 8/9 RAC · ASM · DG OCI · Exadata
01

Fundamentos & Arquitetura Oracle

Instance · Database · SGA · PGA · Processos · Arquivos
Básico
Conceitos Essenciais
ItemDescrição
DatabaseConjunto físico de arquivos: datafiles, control files, redo logs, tempfiles
InstanceMemória + processos que acessam o database
SGAMemória compartilhada: buffer cache, shared pool, redo log buffer, large/java/streams pool
PGAMemória privada de cada processo servidor
CDB/PDBArquitetura multitenant: Container Database e Pluggable Databases
Data DictionaryMetadados do banco: USER_, ALL_, DBA_, V$, GV$
SCNSystem Change Number; marca lógica de consistência
CheckpointSincroniza buffers sujos para disco e atualiza headers/controlfile
Arquivos Físicos
ItemDescrição
DatafilesArmazenam segmentos: tabelas, índices, undo, LOBs
Control filesEstrutura crítica com metadados, SCN, backups e redo history
Online redo logsRegistram mudanças para recuperação de instância
Archived redo logsCópias dos redos para recuperação e Data Guard
TempfilesUsados por tablespace temporária em sort/hash/temp
Password fileAutenticação administrativa remota SYSDBA/SYSOPER
SPFILE/PFILEParâmetros de inicialização da instância
Processos Background
ItemDescrição
PMONLimpa sessões mortas e registra serviço no listener
SMONInstance recovery e limpeza de segmentos temporários
DBWnGrava dirty buffers para datafiles
LGWRGrava redo buffer nos online redo logs
CKPTSinaliza checkpoints e atualiza headers
ARCnArquiva online redo logs
MMON/MMNLAWR, snapshots e métricas
CJQ0/JnnnScheduler jobs
Comandos rápidos
oracle@dbserver
$ 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
ItemDescrição
Pacote preinstalloracle-database-preinstall-19c ajusta kernel, limits, users e grupos
Usuários/gruposoracle, oinstall, dba, oper, backupdba, dgdba, kmdba
OFA/u01/app/oracle/product/19.0.0/dbhome_1
VariáveisORACLE_BASE, ORACLE_HOME, ORACLE_SID, PATH, TNS_ADMIN
Swap/SHMMAXDimensionar conforme RAM e recomendações do ambiente
SELinux/FirewallValidar políticas; em lab geralmente permissive/firewalld off
Instalação Silent — exemplo
oracle@dbserver
$ ./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
ItemDescrição
Listenerlsnrctl status
Bancosqlplus / as sysdba
Serviçosselect name from v$services;
Alert logshow parameter diagnostic_dest
Autostart/etc/oratab + dbstart/dbshut
Patchopatch lsinventory
Validação básica
oracle@dbserver
$ 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
ItemDescrição
show parameterExibe parâmetros
show pdbsLista PDBs
show con_nameMostra container atual
set lines 200 pages 100Formata saída
col name format a30Formata coluna
spool arquivo.logGrava saída em arquivo
desc tabelaDescreve objeto
@script.sqlExecuta script SQL
Criação de usuário
oracle@dbserver
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
oracle@dbserver
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
ItemDescrição
DBA_TABLESPACESTablespaces
DBA_DATA_FILESDatafiles permanentes
DBA_TEMP_FILESTempfiles
DBA_USERSUsuários
DBA_OBJECTSObjetos
V$SESSIONSessões
V$SQLSQLs em memória
V$DATABASEInformações do banco
04

Tablespaces, Datafiles & Segmentos

Storage lógico · ASM · Autoextend · Temp · Undo
Intermediário
Estrutura lógica
ItemDescrição
TablespaceContainer lógico de segmentos
SegmentTabela, índice, undo, LOB
ExtentConjunto de blocos alocados
BlockMenor unidade de I/O Oracle
ASM DiskgroupStorage gerenciado pelo ASM
Bigfile TSTablespace com um datafile grande
Smallfile TSTablespace com múltiplos datafiles
Criar e expandir tablespace
oracle@dbserver
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
oracle@dbserver
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
ItemDescrição
UNDO_RETENTIONTempo desejado para retenção de undo
ORA-01555Snapshot too old; avaliar undo sizing/queries longas
TEMPSort, hash join, create index, operações temporárias
Temp usageGV$TEMPSEG_USAGE e V$SORT_USAGE
05

Backup & Recovery com RMAN

Backupset · Image Copy · Archivelog · Restore · Recover
Intermediário
Estratégia RMAN
ItemDescrição
Full backupBackup completo do banco
Incremental level 0Base para incrementais
Incremental level 1Mudanças desde level 0 ou último level 1
Archivelog backupNecessário para point-in-time recovery
Controlfile autobackupCrítico para recuperação de desastre
Retention policyRecovery window ou redundancy
CrosscheckSincroniza catálogo RMAN com arquivos físicos
Backup completo
oracle@dbserver
$ 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
oracle@dbserver
SQL> startup mount;
SQL> restore database;
SQL> recover database;
SQL> alter database open;
PITR — visão geral
oracle@dbserver
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
ItemDescrição
1. SintomaLentidão geral, query específica, CPU, I/O, locks
2. JanelaDefinir horário exato do problema
3. MétricasAWR/ASH, wait events, top SQL, load profile
4. PlanoDBMS_XPLAN, cardinalidade, joins, filtros
5. CorreçãoStats, índice, rewrite, parâmetros, SQL Profile/Baseline
6. ValidaçãoComparar antes/depois com métricas
AWR/ASH
oracle@dbserver
$ @?/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
oracle@dbserver
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
ItemDescrição
db file sequential readLeitura single-block, comum em índice
db file scattered readLeitura multiblock, full scan
log file syncCommit aguardando LGWR
enq: TX - row lock contentionBloqueio de linha
library cache lock/pinConcorrência em shared pool
direct path read/write tempUso de TEMP em operações grandes
07

Networking Oracle

Listener · TNS · Services · EZCONNECT · Troubleshooting
Intermediário
Arquivos de rede
ItemDescrição
listener.oraConfiguração do listener
tnsnames.oraAliases de conexão
sqlnet.oraMétodos de autenticação, timeout, wallet
ldap.oraDirectory naming
TNS_ADMINDiretório alternativo para arquivos de rede
Comandos Listener
oracle@dbserver
$ lsnrctl status
$ lsnrctl services
$ lsnrctl stop
$ lsnrctl start
SQL> alter system register;
Exemplo tnsnames.ora
oracle@dbserver
$ ORCLPDB1 =
$ (DESCRIPTION =
$ (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver01)(PORT = 1521))
$ (CONNECT_DATA = (SERVICE_NAME = orclpdb1))
$ )
Testes de conexão
oracle@dbserver
$ 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
ItemDescrição
PrimaryBanco principal aberto para produção
StandbyCópia sincronizada para DR
Redo TransportEnvio de redo para standby
Redo ApplyAplicação do redo no standby
Data Guard BrokerGerência via DGMGRL
Protection ModeMaximum Performance, Availability ou Protection
Verificações no banco
oracle@dbserver
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
oracle@dbserver
$ dgmgrl /
SQL> show configuration;
SQL> show database verbose ORCL;
$ validate database ORCL_STBY;
$ switchover to ORCL_STBY;
Lag e saúde
ItemDescrição
Transport LagDiferença de redo transportado
Apply LagDiferença aplicada no standby
MRP0Managed Recovery Process
RFSRecebe redo no standby
FAL_SERVERBusca archives ausentes
09

RAC, ASM & Clusterware

Grid Infrastructure · OCR · Voting · SCAN · Services
Avançado
Conceitos RAC
ItemDescrição
ClusterwareCamada de cluster e recursos
ASMGerencia storage compartilhado
OCROracle Cluster Registry
Voting disksQuórum do cluster
SCANNome único de acesso ao cluster
VIPIP virtual por nó
ServicesRoteamento e failover de aplicações
Comandos Clusterware
oracle@dbserver
$ 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
oracle@dbserver
$ 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
ItemDescrição
Cluster não sobeVerificar OHASD, CSSD, voting, rede privada
Instância não registraListener, SCAN, service_names, local_listener
InterconnectValidar latência, MTU, perda de pacote
Split-brainVoting/quórum evita escrita simultânea inconsistente
10

Segurança, Auditoria & Criptografia

Roles · Profiles · TDE · Auditing · Least Privilege
Avançado
Hardening básico
ItemDescrição
Menor privilégioConceder somente permissões necessárias
ProfilesSenha, lock, sessões, idle time
AuditoriaUnified Auditing ou audit tradicional
TDECriptografia em repouso
Wallet/KeystoreArmazena master key
PatchManter RU/CPU atualizado
Contas padrãoBloquear/remover contas não usadas
Profiles e usuários
oracle@dbserver
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
oracle@dbserver
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
oracle@dbserver
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
ItemDescrição
1. Confirmar impactoUsuários, aplicações, tempo, escopo
2. Coletar evidênciasAlert log, AWR/ASH, sessões, eventos
3. EstabilizarKill sessão, expandir TS, liberar lock, failover se necessário
4. Corrigir causaSQL, storage, rede, parâmetro, bug/patch
5. DocumentarTimeline, causa raiz, ação preventiva
Alert log e ADRCI
oracle@dbserver
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
ItemDescrição
ORA-01017Usuário/senha inválidos ou case sensitive
ORA-12154Alias TNS não resolvido
ORA-12514Listener não conhece service
ORA-01653Não consegue estender segmento
ORA-01555Snapshot too old
ORA-00060Deadlock detectado
ORA-00257Archiver stuck; FRA cheia
Scripts úteis
oracle@dbserver
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
ItemDescrição
ShellBackup, validação, logs, healthcheck
PythonRelatórios, coleta via oracledb, APIs
AnsiblePadronização de instalação e config
TerraformProvisionamento em cloud
GitHubVersionamento de scripts e portfólio
HTML reportsEntrega visual para cliente/aluno
Healthcheck exemplo
oracle@dbserver
#!/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
ItemDescrição
OCI DB SystemBanco gerenciado em VM/BM
ExaCSExadata Cloud Service em OCI
ExaCCExadata Cloud@Customer
Object StorageDestino para backup
Data SafeSegurança e auditoria
Ops InsightsCapacidade e performance
MAAArquitetura máxima disponibilidade
Para vender como curso
ItemDescrição
Módulos práticosInstalação, administração, backup, tuning, HA
LaboratóriosVM Oracle Linux + Oracle 19c/23ai Free
ProjetosHealthcheck, RMAN, Data Guard, AWR
PortfólioPublicar HTML, GitHub e LinkedIn
CertificadoEmitir 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.
oracle-lab simulator
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.