NOC SourceTec · operacional plantão 24×7 · São Paulo — BR --:--:-- BRT
← Tutoriais

Tutorial · Oracle 26ai SE2 · Oracle Restart · VM oel9-01-26aiSE2

Oracle SE2 — Oracle Restart

Guia de bolso para operar um banco Standard Edition 2 em nó único, sustentado pelo Oracle Restart. A atividade fica à esquerda, o comando exato à direita, pronto para copiar. Os exemplos usam a VM real da SourceTec: oel9-01-26aiSE2.

AtençãoEm 09/10/2026 06:10 a VM estava preparada (SO, usuários, discos, preinstall 26ai) mas o Oracle ainda não tinha sido instalado: tudo o que leva a marca não conferido é o valor planejado pela casa, não medido. Depois da instalação, confira pelas seções 1 e 10 e ajuste o bloco Personalize. Em produção, antes de qualquer parada: janela aprovada, Zabbix em manutenção e blackout no EM 24ai — ver Antes de parar. Comando com moldura vermelha pode derrubar serviço ou mudar estado.
Topologia da casaSE2 = nó único, nunca RAC“Grid sem ASM” = Oracle Restart + banco em filesystem (decisão do dono, 03/10/2026)
Máquinaoel9-01-26aiSE2.sourcetec.vm10.10.5.131 · 192.168.7.131 · VM KVM no T410 · OL 9.8, kernel UEK 6.12 · 4 vCPU · 15 GB (medido)
Oracle Restart (Grid standalone)/u01/app/26ai/gridnão conferidousuário grid (uid 401) · ohasd como root · OLR em arquivo, sem OCR em diskgroup
RDBMS 26ai SE2/u01/app/oracle/product/26ai/26aiSE2não conferidousuário oracle (uid 400) · ORACLE_BASE /u01/app/oracle (medido) · preinstall 26ai instalado (medido)
BancoCDB (SID = db_unique_name = CDB)não conferidouma instância só; sem CDB1/CDB2, sem instances=all
Armazenamentofilesystem XFS, OMF/u01 80 G (homes) · /u02 120 G (medido) → datafiles em /u02/oradata e FRA em /u02/fra não conferido
ListenerLISTENER · porta 1521não conferidono home do Grid; a aplicação entra por oel9-01-26aiSE2:1521/serviço (sem SCAN, sem VIP)
PDBsPDB1 como exemplonão conferidoo que existir aparece em v$pdbs (seção 1)
Recursos do Restart esperados (crsctl stat res -t)não conferido
ora.cdb.dbora.LISTENER.lsnrora.onsora.cssd (-init)ora.evmd (-init)ora.diskmon (-init)
O que NÃO existe aqui (e existe no RAC)SCAN, VIP, interconnect, voting disk, OCR em diskgroup, ASM, segunda instância, instances=all, -preferred/-available, relocate, crsctl check crs/cluster, olsnodes, oifcfg.
O que entra no lugarcrsctl check has (High Availability Services), crsctl stop/start has, OLR em /etc/oracle/olr.loc (ocrcheck -local), listener no nome da máquina, srvctl igual ao do RAC mas sem opções de nó e instância, datafiles em caminho de filesystem pelo OMF.

Personalize

Troque um valor aqui e todos os comandos da página mudam na hora. Os valores de SO, usuários e discos foram medidos na VM; os de Grid, banco e PDB são os planejados (marca não conferido) e devem ser ajustados depois da instalação. O que está sublinhado nos comandos é o que vem destes campos.

nome da máquina (medido)
home do Oracle Restart (usuário grid) · não conferido
home do banco (usuário oracle) · não conferido
base do oracle (medido): alert em diag/rdbms
base do grid (pasta existe): alert do Restart em diag/crs
db_unique_name · não conferido
instância única: igual ao db_name · não conferido
porta do listener
PDB de exemplo · não conferido
PDB a criar, clonar ou apagar (seção 5)
admin da PDB nova; a senha vem do cofre, nunca daqui
serviço da aplicação amarrado à PDB
serviço genérico da aplicação (seção 6)
db_create_file_dest (OMF) · não conferido
db_recovery_file_dest (FRA) · não conferido
root@oel9-01-26aiSE2 # como root grid@oel9-01-26aiSE2 $ como grid (dono do Restart e do listener) oracle@oel9-01-26aiSE2 $ como oracle (dono do banco) SQL> dentro do sqlplus oms $ na máquina do Enterprise Manager (emcli) parada interrompe algo: só com janela Pode prejudicar derruba serviço ou muda estado: leia a moldura antes de rodar
Ambiente das sessões
Sessão do gridAntes de crsctl, srvctl do listener e lsnrctl. No Restart o SID do Grid não é usado no dia a dia; basta o home.
grid@oel9-01-26aiSE2 $ export ORACLE_HOME=/u01/app/26ai/gridgrid@oel9-01-26aiSE2 $ export PATH=$ORACLE_HOME/bin:$PATH
Sessão do oracleAntes de srvctl do banco e sqlplus. Instância única: o SID é o nome do banco.
oracle@oel9-01-26aiSE2 $ export ORACLE_HOME=/u01/app/oracle/product/26ai/26aiSE2oracle@oel9-01-26aiSE2 $ export ORACLE_SID=CDBoracle@oel9-01-26aiSE2 $ export PATH=$ORACLE_HOME/bin:$PATH
Sessão do rootO root não tem o Grid no PATH: nos comandos abaixo o caminho completo do crsctl já vem escrito.
root@oel9-01-26aiSE2 # export PATH=/u01/app/26ai/grid/bin:$PATH

Mapa da máquina

Árvore de componentes: quem é quem, com que usuário, e como parar, ver e subir.

De fora para dentro: o sistema operacional sustenta o Oracle Restart; o Restart sustenta o listener e o banco; o banco tem uma instância só; a CDB contém as PDBs. Parar é de dentro para fora; subir é de fora para dentro. Não há segundo nó para segurar o serviço: toda parada aqui é parada da aplicação.

  • Linux (Oracle Linux 9.8, UEK)

    root

    Sistema operacional da VM. O daemon ohasd (unidade oracle-ohasd, criada pelo root.sh do Grid) é a raiz de tudo: sobe no boot e puxa listener e banco. Medido em 09/10/2026: 4 vCPU, 15 GB, /u01 80 G, /u02 120 G, usuários oracle (400) e grid (401), grupo oinstall (403), pacote oracle-ai-database-preinstall-26ai, chrony em ntp.br.

    Status do serviço raiz do RestartSe o ohasd não está ativo, nada do Oracle existe nesta máquina. A unidade só existe depois do root.sh do Grid.
    root@oel9-01-26aiSE2 # systemctl status oracle-ohasd
    Processos vivosohasd, cssd (modo local), evmd, o listener e o pmon do banco precisam aparecer.
    root@oel9-01-26aiSE2 # ps -ef | grep -E 'ohasd|cssd|evmd|tnslsnr|ora_pmon' | grep -v grep
    O Restart sobe sozinho no boot?Responde enabled ou disabled; disabled depois de um reboot explica tudo parado.
    root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl config has
    Relógio, memória e HugePagesRelógio errado estraga log, backup e certificado; SGA em swap ou HugePages sem uso derrubam o desempenho.
    root@oel9-01-26aiSE2 # chronyc trackingroot@oel9-01-26aiSE2 # free -h && grep -i huge /proc/meminfo
    Espaço dos filesystems do OracleO /u01 cheio trava alert, trace e patch; o /u02 cheio trava o banco (datafiles e FRA ficam lá).
    root@oel9-01-26aiSE2 # df -hP /u01 /u02root@oel9-01-26aiSE2 # uptime
    Reiniciar a máquina paradaSó depois de parar o banco e o Restart (seção 9). Reboot a seco deixa o banco se recuperar sozinho, mas custa tempo e risco.
    Pode prejudicarroot@oel9-01-26aiSE2 # systemctl rebootDerruba: tudo: banco, listener e Restart; a aplicação fica sem serviço até o boot terminar. Antes: banco parado pelo srvctl e Restart parado (seção 9). Zabbix e EM 24ai em manutenção.
    • Oracle Restart (Grid Infrastructure standalone, sem ASM)

      gridroot para parar/subir o stack

      O Clusterware de nó único: registra o banco e o listener como recursos e os religa sozinho. Ferramentas: crsctl (o stack, aqui chamado HAS) e srvctl (os recursos). Sem ASM: o registro local (OLR) fica em arquivo, apontado por /etc/oracle/olr.loc. Home: /u01/app/26ai/grid não conferido.

      Saúde do stackPrimeira pergunta de qualquer atendimento. É check has, não check crs: aqui não há CRS nem cluster.
      grid@oel9-01-26aiSE2 $ crsctl check has
      Todos os recursos, em tabelaONLINE/OFFLINE do banco, do listener e do ONS. É a visão que se cola no chamado.
      grid@oel9-01-26aiSE2 $ crsctl stat res -t
      Recursos de base do Restartcssd, evmd e diskmon; sem ctssd de cluster, sem asm.
      grid@oel9-01-26aiSE2 $ crsctl stat res -t -init
      Integridade do OLRO registro local do Restart (não há OCR em diskgroup). Como root mostra tudo.
      root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/ocrcheck -local
      Versão do RestartPara o chamado e para comparar com o home do banco antes de um patch.
      grid@oel9-01-26aiSE2 $ crsctl query has releaseversiongrid@oel9-01-26aiSE2 $ crsctl query has softwareversion
      Parar o stack paradaDerruba listener e banco; a aplicação cai. Pare o banco antes pelo srvctl (seção 2).
      Pode prejudicarroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl stop hasDerruba: banco, listener e ONS: a aplicação fica sem serviço. Antes: banco parado pelo srvctl, janela aprovada. Zabbix e EM 24ai em manutenção.
      Subir o stackSobe o Restart e, pela política de cada recurso, o listener e o banco.
      root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl start has
      • Listener

        grid

        Um LISTENER (porta 1521 não conferido) no home do Grid, no nome da máquina. Não há SCAN nem VIP: a aplicação conecta em oel9-01-26aiSE2:1521/serviço.

        Status e configuraçãoPorta, home e se está ON.
        grid@oel9-01-26aiSE2 $ srvctl status listenergrid@oel9-01-26aiSE2 $ srvctl config listener
        O listener aceita conexão?ONLINE não basta: BLOCKED ou sem instância registrada quer dizer que o serviço não entra.
        grid@oel9-01-26aiSE2 $ lsnrctl status
        Parar e subir o listener paradaConexões novas param; as existentes seguem.
        Pode prejudicargrid@oel9-01-26aiSE2 $ srvctl stop listenergrid@oel9-01-26aiSE2 $ srvctl start listenerDerruba: as conexões novas da aplicação enquanto estiver parado. Antes: aplicação avisada; é rápido, mas é parada. Zabbix e EM 24ai em manutenção.
      • Oracle Database 26ai SE2

        oracle

        O RDBMS, registrado no Restart como recurso ora.cdb.db não conferido. Opera-se por srvctl (database, service) e, por dentro, por sqlplus. Home: /u01/app/oracle/product/26ai/26aiSE2 não conferido. Standard Edition 2: sem RAC, sem Data Guard, sem Partitioning, sem paralelismo (seção 10).

        Status do banco e dos serviçosInstância running e serviços ativos (-v).
        oracle@oel9-01-26aiSE2 $ srvctl status database -d CDB -v
        Como o banco está registrado no RestartSPFILE, ORACLE_HOME, política de start (AUTOMATIC ou MANUAL) e serviços.
        oracle@oel9-01-26aiSE2 $ srvctl config database -d CDB
        Parar o banco paradaA instância única: a aplicação cai.
        Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop database -d CDB -o immediateDerruba: a única instância: toda aplicação cai. Antes: janela aprovada, RMAN e Scheduler avisados. Zabbix e EM 24ai em manutenção.
        Subir o bancoAbre a instância e os serviços.
        oracle@oel9-01-26aiSE2 $ srvctl start database -d CDB
        Entrar no sqlplus como SYSDBASempre com o ORACLE_SID da instância.
        oracle@oel9-01-26aiSE2 $ export ORACLE_SID=CDBoracle@oel9-01-26aiSE2 $ sqlplus / as sysdba
        • CDB (instância única)

          oracle

          O container raiz. db_unique_name CDB não conferido, uma instância. Sem sid='*' nem instances=all: todo comando age na única instância que existe.

          Como a instância estáNormal: OPEN, ACTIVE e logins ALLOWED. A edição aparece como SE2.
          SQL> select instance_name, host_name, status, database_status, logins, edition, version_full from v$instance;
          Em que container estou?CDB$ROOT ou o nome da PDB.
          SQL> show con_name
          FRA: limite e usoFRA cheia trava o banco (ORA-00257). Compare usado_gb com limite_gb.
          SQL> select name, round(space_limit/1024/1024/1024,2) limite_gb, round(space_used/1024/1024/1024,2) usado_gb, number_of_files from v$recovery_file_dest;
          • PDB (exemplo: PDB1)

            oracle · sqlplus

            PDB1 é o exemplo não conferido. Nó único: open e close sem instances=all; o SAVE STATE continua obrigatório para a PDB abrir sozinha no próximo start.

            Listar as PDBsNome, modo (READ WRITE, MOUNTED…) e restrição.
            SQL> show pdbs
            Abrir a PDB e guardar o estadoSem save state ela volta MOUNTED no próximo start.
            Pode prejudicarSQL> alter pluggable database PDB1 open;SQL> alter pluggable database PDB1 save state;Altera: o estado da PDB e o que ela faz no próximo start. Antes: conferir em v$pdbs em que modo ela está. Zabbix e EM 24ai em manutenção.
            Fechar a PDB paradaSessões da PDB são derrubadas (immediate).
            Pode prejudicarSQL> alter pluggable database PDB1 close immediate;Derruba: as sessões da PDB. Antes: aplicação avisada; a PDB fica MOUNTED até reabrir. Zabbix e EM 24ai em manutenção.
            Criar uma PDB nova a partir do seedO CDB é OMF: o Oracle nomeia e posiciona os datafiles em DATA_DEST, sem FILE_NAME_CONVERT. Serviço, clone, unplug/plug e drop na seção 5.
            SQL> create pluggable database PDB2 admin user pdbadmin identified by senha roles=(dba);a senha vem do cofre; nunca fica nesta página

Guia básico

As operações do dia a dia, na ordem em que acontecem.

Cada seção começa com o contexto (por quê, risco, usuário) e segue com as linhas atividade | comando. Tudo é sintaxe documentada; o que depende da instalação que ainda não aconteceu está marcado não conferido.

Antes de parar qualquer camadaRegistro de manutenção. Em nó único, parar o banco, o listener ou o Restart é parar a aplicação: não há segundo nó.
  1. Manutenção nos monitores. Zabbix: host ou serviço em manutenção, com período, no modo “sem coleta” ou “com coleta, sem alerta”. EM 24ai: blackout nos targets host, Oracle Restart (has), listener, banco e PDBs, por emcli create_blackout ou pela console.
  2. Avisar quem depende. Aplicações que entram pelo serviço no listener; backups RMAN agendados (em SE2 não há Data Guard: o RMAN é a única cópia); jobs do Scheduler.
  3. Registrar. Chamado e janela: início, fim, o que para e quem autorizou.
Depois de subir
  1. Tirar a manutenção no Zabbix e o blackout no EM 24ai (emcli stop_blackout).
  2. Conferir no Zabbix e no EM que os targets voltaram: sem problema aberto, coleta ativa, status Up.
  3. Registrar o resultado no chamado: o que parou, por quanto tempo, o que ficou pendente.
AtividadeComando
Blackout no EM 24aiAlvos no formato nome:tipo separados por ponto e vírgula (oracle_database, has, oracle_listener, host). Pela console: Enterprise, Monitoring, Blackouts.
oms $ emcli create_blackout -name="CDB_janela" -add_targets="CDB:oracle_database;oel9-01-26aiSE2:host" -reason="chamado" -schedule="frequency:once;duration:02:00"
Encerrar o blackoutDepois que tudo estiver ONLINE; aí os alertas voltam a valer.
oms $ emcli stop_blackout -name="CDB_janela"
01

Status

Por quê: todo atendimento começa fotografando o estado. Risco: nenhum, são todos comandos de leitura. Usuário: grid para o Restart e o listener, oracle para o banco. Cole a saída de crsctl stat res -t no chamado antes de mexer em qualquer coisa. Depois da instalação, esta seção é o que confere os valores marcados não conferido.

AtividadeComando
Foto completa dos recursosBanco, listener e ONS, ONLINE ou OFFLINE.
grid@oel9-01-26aiSE2 $ crsctl stat res -t
Saúde do stackCRS-4638 = HAS online. Não existe check crs nem check cluster aqui.
grid@oel9-01-26aiSE2 $ crsctl check has
Banco: instância e serviçosEsperado: a instância running e os serviços da aplicação listados.
oracle@oel9-01-26aiSE2 $ srvctl status database -d CDB -v
ListenerON, na porta do Personalize.
grid@oel9-01-26aiSE2 $ srvctl status listenergrid@oel9-01-26aiSE2 $ lsnrctl status
Homes e SIDs registrados na máquinaO oratab é a lista do que existe; os homes de Grid e banco vêm daqui para o Personalize.
oracle@oel9-01-26aiSE2 $ grep -v '^#' /etc/orataboracle@oel9-01-26aiSE2 $ cat /u01/app/oracle/../oraInventory/ContentsXML/inventory.xml
Edição, versão e OMFConfirma SE2 e 26ai, o db_unique_name e os destinos OMF (datafiles e FRA em filesystem).
SQL> select banner_full from v$version;SQL> select name, db_unique_name, cdb, open_mode, log_mode from v$database;SQL> show parameter db_create_file_destSQL> show parameter db_recovery_file_dest
PDBs e estado guardadoO que existe e o que abre sozinho no próximo start.
SQL> select con_id, name, open_mode, restricted from v$pdbs order by con_id;SQL> select con_name, state from dba_pdb_saved_states;
02

Banco: parar e subir

Por quê: o banco se opera pelo srvctl, que fala com o Restart; assim o Restart sabe que a parada foi intencional e não religa por cima. Risco: instância única: parar é parar a aplicação. shutdown pelo sqlplus funciona, mas é exceção. Usuário: oracle.

AtividadeComando
Ver como o banco está registradoHome, spfile, política de start e serviços.
oracle@oel9-01-26aiSE2 $ srvctl config database -d CDB
StatusInstância e, com -v, os serviços.
oracle@oel9-01-26aiSE2 $ srvctl status database -d CDB -v
Parar o banco parada-o immediate desconecta as sessões e faz rollback do que estava aberto.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop database -d CDB -o immediateDerruba: a única instância: toda aplicação cai. Antes: janela aprovada, RMAN e Scheduler avisados. Zabbix e EM 24ai em manutenção.
Subir o bancoAbre a instância e os serviços; as PDBs com save state abrem junto.
oracle@oel9-01-26aiSE2 $ srvctl start database -d CDB
Subir só até MOUNTPara RMAN, troca de parâmetro ou abertura controlada.
oracle@oel9-01-26aiSE2 $ srvctl start database -d CDB -o mount
Entrar como SYSDBASempre com o SID do Personalize.
oracle@oel9-01-26aiSE2 $ export ORACLE_SID=CDBoracle@oel9-01-26aiSE2 $ sqlplus / as sysdba
Parar pelo sqlplus (só exceção) paradaO Restart entende como parada intencional e não religa; depois, suba pelo srvctl.
Pode prejudicarSQL> shutdown immediateDerruba: a instância; o Restart passa a tratá-la como parada de propósito. Antes: preferir o srvctl; se usar, subir depois pelo srvctl. Zabbix e EM 24ai em manutenção.
03

Oracle Restart: parar, subir, reiniciar

Por quê: patch do Grid, troca de parâmetro do Restart, ohasd travado. Risco: parar o HAS derruba listener e banco juntos. Usuário: root para parar e subir, grid para ver. has, não crs: no Restart o stack se chama High Availability Services; crsctl stop crs e crsctl stop cluster não existem aqui.

AtividadeComando
Ver antes de mexerStack online e recursos em tabela.
grid@oel9-01-26aiSE2 $ crsctl check hasgrid@oel9-01-26aiSE2 $ crsctl stat res -t
Parar o Restart paradaPrimeiro o banco pelo srvctl; o Restart derruba o resto em ordem.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop database -d CDB -o immediateroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl stop hasse algum recurso não parar: crsctl stop has -fDerruba: banco, listener e ONS: a aplicação fica sem serviço. Antes: janela aprovada e banco parado pelo srvctl. Zabbix e EM 24ai em manutenção.
Subir o RestartSobe o HAS; listener e banco vêm pela política AUTO_START de cada recurso.
root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl start hasgrid@oel9-01-26aiSE2 $ crsctl stat res -t
Reiniciar só o Restart paradaO mesmo que parar e subir, num comando. Mesma indisponibilidade.
Pode prejudicarroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl stop hasroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl start hasDerruba: banco e listener durante o reinício. Antes: janela aprovada e banco parado pelo srvctl. Zabbix e EM 24ai em manutenção.
Impedir que o Restart suba no bootPara manutenção longa; não esqueça de reabilitar.
Pode prejudicarroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl disable hasAltera: o boot: a máquina volta sem Oracle até alguém habilitar. Antes: anotar no chamado para reabilitar no fim da manutenção. Zabbix e EM 24ai em manutenção.
Voltar a subir no bootConfira com config has.
root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl enable hasroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl config has
Política de start do bancoAUTOMATIC: o Restart sobe o banco no boot; MANUAL: só pelo srvctl. Mudar é alterar o que acontece no próximo boot.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl config database -d CDB | grep -i "start option\|management policy"oracle@oel9-01-26aiSE2 $ srvctl modify database -d CDB -policy AUTOMATICAltera: se o banco sobe ou não no próximo boot. Antes: decisão registrada no chamado. Zabbix e EM 24ai em manutenção.
04

Listener

Por quê: a aplicação chega pelo listener no nome da máquina: oel9-01-26aiSE2:1521/serviço. Não há SCAN, VIP nem failover de rede. Risco: parar o listener corta as conexões novas; as existentes seguem. Usuário: grid.

AtividadeComando
Como está configuradoNome, porta e home.
grid@oel9-01-26aiSE2 $ srvctl config listenergrid@oel9-01-26aiSE2 $ srvctl status listener
Serviços registradosO serviço da aplicação tem de aparecer com a instância READY.
grid@oel9-01-26aiSE2 $ lsnrctl statusgrid@oel9-01-26aiSE2 $ lsnrctl services
O nome resolve e a porta responde?DNS da casa (BIND do T410) e tnsping até o serviço.
oracle@oel9-01-26aiSE2 $ nslookup oel9-01-26aiSE2.sourcetec.vmoracle@oel9-01-26aiSE2 $ tnsping oel9-01-26aiSE2:1521/app_svc
Parar e subir o listener paradaConexões novas param; as existentes seguem.
Pode prejudicargrid@oel9-01-26aiSE2 $ srvctl stop listenergrid@oel9-01-26aiSE2 $ srvctl start listenerDerruba: as conexões novas da aplicação enquanto estiver parado. Antes: aplicação avisada. Zabbix e EM 24ai em manutenção.
Mudar a porta do listenerAltera o registro no Restart; o banco precisa de local_listener coerente e o listener reinicia.
Pode prejudicargrid@oel9-01-26aiSE2 $ srvctl modify listener -p 1521grid@oel9-01-26aiSE2 $ srvctl stop listenergrid@oel9-01-26aiSE2 $ srvctl start listenerAltera: a porta que a aplicação usa; strings de conexão e firewall têm de mudar junto. Antes: aplicação avisada e local_listener conferido. Zabbix e EM 24ai em manutenção.
05

PDBs no CDB com OMF: criar, servir, clonar, plugar e apagar

Por quê: o CDB é OMF em filesystem: db_create_file_dest=/u02/oradata e db_recovery_file_dest=/u02/fra não conferido. O Oracle nomeia e posiciona cada datafile sozinho, na árvore /u02/oradata/{DB_UNIQUE_NAME}/{GUID da PDB}/datafile/. Por isso nenhum comando desta seção leva FILE_NAME_CONVERT; o dbca usa o mesmo OMF do CDB. Nó único: sem instances=all, sem -preferred/-available. Risco: criar, servir e clonar são seguros; unplug fecha a PDB e drop apaga dados. Usuário: oracle, no sqlplus como SYSDBA conectado ao CDB$ROOT; dbca também como oracle. A senha do admin vem do cofre e nunca desta página.

AtividadeComando
O CDB é OMF?Esperado: os dois destinos em filesystem (DATA_DEST e FRA_DEST). Com isso, nada de FILE_NAME_CONVERT.
SQL> show parameter db_create_file_destSQL> show parameter db_recovery_file_destSQL> select name, value from v$parameter where name in ('db_create_file_dest','db_recovery_file_dest','db_create_online_log_dest_1');oracle@oel9-01-26aiSE2 $ df -hP /u02/oradata /u02/fra
Criar a PDB a partir do seed (SQL)Com OMF basta isto: o Oracle copia o seed para DATA_DEST sob o GUID da PDB nova. ROLES=(DBA) dá ao admin o papel de DBA local da PDB.
SQL> create pluggable database PDB2 admin user pdbadmin identified by senha roles=(dba);a senha vem do cofre; troque senha na hora de rodar
Abrir e guardar o estadoSem save state a PDB volta MOUNTED no próximo start do banco.
Pode prejudicarSQL> alter pluggable database PDB2 open;SQL> alter pluggable database PDB2 save state;Altera: o estado da PDB e o que ela faz no próximo start. Antes: conferir em v$pdbs em que modo ela está. Zabbix e EM 24ai em manutenção.
Criar a PDB pelo dbca (silencioso)Mesmo resultado por fora do sqlplus: o dbca cria a partir do seed, abre e usa o OMF do CDB (não pede caminho). A senha aparece no ps enquanto roda: prefira o SQL ou rode numa sessão só sua.
oracle@oel9-01-26aiSE2 $ dbca -silent -createPluggableDatabase -sourceDB CDB -pdbName PDB2 -createPDBFrom DEFAULT -pdbAdminUserName pdbadmin -pdbAdminPassword senhadepois, conferir o save state (abaixo em Verificar)
Serviço da aplicação para a PDBA aplicação entra pelo serviço, nunca pelo SID. -pdb amarra o serviço à PDB: o Restart a abre quando o serviço sobe. Sem nó vizinho não há preferred/available nem TAF entre instâncias.
oracle@oel9-01-26aiSE2 $ srvctl add service -d CDB -s pdb1_srv -pdb PDB2oracle@oel9-01-26aiSE2 $ srvctl start service -d CDB -s pdb1_srvoracle@oel9-01-26aiSE2 $ srvctl status service -d CDB -s pdb1_srv -v
Testar pelo listener, como a aplicaçãotnsping prova listener e serviço; o sqlplus pelo EZConnect prova o caminho inteiro até a PDB.
oracle@oel9-01-26aiSE2 $ tnsping oel9-01-26aiSE2:1521/pdb1_srvoracle@oel9-01-26aiSE2 $ sqlplus pdbadmin@oel9-01-26aiSE2:1521/pdb1_srvSQL> show con_name
Clonar uma PDB (cópia local)Cria a PDB nova como cópia da existente, no mesmo DATA_DEST, sob um GUID novo. A origem pode ficar aberta (local undo + archivelog); se não, abra-a read only antes. Depois, abrir e guardar o estado como acima.
Pode prejudicarSQL> create pluggable database PDB2 from PDB1;SQL> alter pluggable database PDB2 open;SQL> alter pluggable database PDB2 save state;Altera: o estado da PDB nova; o clone consome no /u02 o mesmo espaço da origem. Antes: conferir o livre com df -hP. Zabbix e EM 24ai em manutenção.
Unplug: desconectar a PDB paradaFecha a PDB e gera o manifesto xml; os datafiles ficam no DATA_DEST.
Pode prejudicarSQL> alter pluggable database PDB2 close immediate;SQL> alter pluggable database PDB2 unplug into '/u01/app/oracle/admin/PDB2_unplug.xml';Derruba: as sessões da PDB; ela fica desconectada até ser plugada de novo. Antes: serviço parado (srvctl stop service), aplicação avisada e backup RMAN da PDB. Zabbix e EM 24ai em manutenção.
Plug: conectar a PDB pelo xmlCOPY copia os datafiles para a árvore OMF do CDB (GUID novo), sem FILE_NAME_CONVERT. Para plugar de volta no mesmo CDB com o mesmo nome, antes: drop pluggable database … keep datafiles.
Pode prejudicarSQL> create pluggable database PDB2 using '/u01/app/oracle/admin/PDB2_unplug.xml' copy;SQL> alter pluggable database PDB2 open;SQL> alter pluggable database PDB2 save state;Altera: o estado da PDB e o espaço no /u02 (cópia dos datafiles). Antes: conferir o livre com df -hP e o xml no caminho. Zabbix e EM 24ai em manutenção.
Verificar: modo, estado guardado e arquivosopen_mode; o que está guardado para o próximo start; os datafiles sob DATA_DEST/{DB_UNIQUE_NAME}/{GUID}/datafile/ (o GUID é o de v$pdbs). As consultas rodam no CDB$ROOT.
SQL> select con_id, name, open_mode, restricted from v$pdbs order by con_id;SQL> select con_name, state from dba_pdb_saved_states order by con_name;SQL> select p.name pdb, p.guid, f.file_name from cdb_data_files f join v$pdbs p on p.con_id=f.con_id where p.name='PDB2' order by f.file_name;exemplo de caminho OMF em filesystem: /u02/oradata/CDB/8A1C…F2/datafile/o1_mf_system_mz4k…_.dbf
Apagar a PDB paradaPrimeiro o serviço sai do Restart, depois a PDB fecha e o drop com INCLUDING DATAFILES apaga os datafiles do DATA_DEST.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop service -d CDB -s pdb1_srvoracle@oel9-01-26aiSE2 $ srvctl remove service -d CDB -s pdb1_srvSQL> alter pluggable database PDB2 close immediate;SQL> drop pluggable database PDB2 including datafiles;Apaga: a PDB e todos os datafiles dela no /u02; sem backup não volta. Antes: backup RMAN da PDB (backup pluggable database), aplicação avisada, serviço removido e aval por escrito do dono. Zabbix e EM 24ai em manutenção.
06

Serviços

Por quê: a aplicação nunca conecta no SID; conecta num serviço, e é o serviço que diz em que PDB ela entra. Risco: parar um serviço derruba a aplicação que o usa; em nó único não há para onde relocar. Usuário: oracle para o serviço; grid para o lsnrctl.

AtividadeComando
Criar o serviço da aplicaçãoAmarrado à PDB; sem -preferred/-available, que são opções de RAC.
oracle@oel9-01-26aiSE2 $ srvctl add service -d CDB -s app_svc -pdb PDB1
Subir o serviçoAbre a PDB se precisar e registra o serviço no listener.
oracle@oel9-01-26aiSE2 $ srvctl start service -d CDB -s app_svc
Status e configuraçãoSe está no ar e como foi definido.
oracle@oel9-01-26aiSE2 $ srvctl status service -d CDB -s app_svc -voracle@oel9-01-26aiSE2 $ srvctl config service -d CDB -s app_svc
Parar o serviço paradaA aplicação perde a conexão.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop service -d CDB -s app_svcDerruba: a aplicação que usa o serviço: as conexões caem e não há para onde migrar. Antes: aplicação avisada. Zabbix e EM 24ai em manutenção.
Remover o serviçoSó com ele parado; a string de conexão da aplicação deixa de funcionar.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl remove service -d CDB -s app_svcAltera: o registro do Restart: o serviço some do listener. Antes: serviço parado e aplicação avisada. Zabbix e EM 24ai em manutenção.
Ver o serviço registrado no listenerDeve aparecer na lista de serviços do LISTENER.
grid@oel9-01-26aiSE2 $ lsnrctl status
Conectar como a aplicaçãoEZConnect; o sqlplus pede a senha. Se entrar, o caminho inteiro está bom.
oracle@oel9-01-26aiSE2 $ sqlplus usuario@oel9-01-26aiSE2:1521/app_svc
07

Banco por dentro: parâmetros, FRA, sessões

Por quê: o que se faz por dentro do sqlplus no dia a dia. Risco: alter system muda o banco na hora; kill derruba sessão. Usuário: oracle como SYSDBA. Sem RAC: nada de sid='*' nem gv$; as visões v$ bastam.

AtividadeComando
Instância e bancoStatus, modo, archivelog e papel.
SQL> select instance_name, status, database_status, logins, startup_time from v$instance;SQL> select name, db_unique_name, open_mode, log_mode, database_role, flashback_on from v$database;
Mudar um parâmetroscope=both aplica agora e no spfile.
Pode prejudicarSQL> alter system set open_cursors=500 scope=both;Altera: o parâmetro agora e no spfile. Antes: conferir o valor atual com show parameter e anotar no chamado. Zabbix e EM 24ai em manutenção.
FRA: limite e usoFRA cheia trava o banco (ORA-00257).
SQL> select name, round(space_limit/1024/1024/1024,2) limite_gb, round(space_used/1024/1024/1024,2) usado_gb, number_of_files from v$recovery_file_dest;
Sessões e quem está conectadoPor usuário, programa e máquina.
SQL> select sid, serial#, username, status, program, machine from v$session where username is not null order by username;
Derrubar uma sessãosid e serial# vêm de v$session.
Pode prejudicarSQL> alter system kill session 'sid,serial#' immediate;Derruba: a sessão escolhida; a transação dela sofre rollback. Antes: confirmar sid e serial# com o dono da aplicação. Zabbix e EM 24ai em manutenção.
Tablespaces e espaçoAlocado e livre por tablespace da PDB em que você está.
SQL> select tablespace_name, round(sum(bytes)/1024/1024/1024,2) alocado_gb from dba_data_files group by tablespace_name order by 1;SQL> select tablespace_name, round(sum(bytes)/1024/1024/1024,2) livre_gb from dba_free_space group by tablespace_name order by 1;
08

Logs e diagnóstico

Por quê: antes de reiniciar qualquer coisa, ler o alert. Onde: o alert do Restart fica sob GRID_BASE (/u01/app/grid) em diag/crs/{host}/crs/trace/, e o do banco sob ORACLE_BASE (/u01/app/oracle) em diag/rdbms/{db em minúsculas}/{SID}/trace/. Risco: nenhum; só leitura. Usuário: grid para o Restart, oracle para o banco, root para o OLR.

AtividadeComando
Alert do RestartQuem parou o quê, quando, e por quê. Se o caminho não existir, use o find.
grid@oel9-01-26aiSE2 $ tail -100 /u01/app/grid/diag/crs/oel9-01-26aiSE2/crs/trace/alert.loggrid@oel9-01-26aiSE2 $ find /u01/app -path '*/diag/crs/*/crs/trace/alert.log' 2>/dev/null
Alert do Restart pelo adrciCom a base do grid; o home do Clusterware é diag/crs/host/crs.
grid@oel9-01-26aiSE2 $ adrci exec="set base /u01/app/grid; set home diag/crs/oel9-01-26aiSE2/crs; show alert -tail 50"
Alert da instância do bancoPelo arquivo direto (acompanhando ao vivo) ou pelo adrci. O db_unique_name entra em minúsculas no caminho.
oracle@oel9-01-26aiSE2 $ tail -f /u01/app/oracle/diag/rdbms/cdb/CDB/trace/alert_CDB.logoracle@oel9-01-26aiSE2 $ adrci exec="set base /u01/app/oracle; set home diag/rdbms/cdb/CDB; show alert -tail 100"
Checar o stackHAS, CSS (em modo local) e EVM.
grid@oel9-01-26aiSE2 $ crsctl check hasgrid@oel9-01-26aiSE2 $ crsctl check cssgrid@oel9-01-26aiSE2 $ crsctl check evm
Integridade do OLRO registro local do Restart é um arquivo (olr.loc diz onde).
root@oel9-01-26aiSE2 # cat /etc/oracle/olr.locroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/ocrcheck -local
Versão e patch do Restart e do bancoPara o chamado e para conferir o nível antes e depois de um patch.
grid@oel9-01-26aiSE2 $ crsctl query has releaseversiongrid@oel9-01-26aiSE2 $ crsctl query has releasepatchoracle@oel9-01-26aiSE2 $ /u01/app/oracle/product/26ai/26aiSE2/OPatch/opatch lspatches
Detalhe de um recursoTodos os atributos (AUTO_START, política, dependências) do banco.
grid@oel9-01-26aiSE2 $ crsctl stat res ora.cdb.db -p
TFA/AHFSe o AHF estiver instalado, é a coleta de diagnóstico; se não, o comando não existe (não conferido nesta VM).
root@oel9-01-26aiSE2 # systemctl status oracle-tfaroot@oel9-01-26aiSE2 # tfactl status
09

Manutenção de SO (patch e reboot)

Por quê: patch de kernel e de bibliotecas; reboot. Risco: nó único: a aplicação para do começo ao fim da janela, não há rolling. Usuário: oracle para o banco, root para o Restart, dnf e reboot. Ordem: de dentro para fora para parar (serviço, banco, Restart, SO) e de fora para dentro para subir.

AtividadeComando
Abrir a janelaZabbix em manutenção, blackout no EM 24ai, RMAN e Scheduler avisados, chamado registrado (bloco Antes de parar).
oms $ emcli create_blackout -name="CDB_patch_so" -add_targets="CDB:oracle_database;oel9-01-26aiSE2:host" -reason="patch de SO" -schedule="frequency:once;duration:02:00"
Parar o banco paradaPelo srvctl, para o Restart saber que foi intencional.
Pode prejudicaroracle@oel9-01-26aiSE2 $ srvctl stop database -d CDB -o immediateDerruba: a aplicação inteira até o fim da janela. Antes: janela aprovada e aplicação avisada. Zabbix e EM 24ai em manutenção.
Parar o Restart paradaCom tudo parado, o patch de kernel e de bibliotecas não pega nada aberto.
Pode prejudicarroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl stop hasDerruba: listener e ONS; o banco já estava parado. Antes: passo anterior feito. Zabbix e EM 24ai em manutenção.
Atualizar o SOSó pacotes do sistema; o Oracle não se atualiza por dnf.
Pode prejudicarroot@oel9-01-26aiSE2 # dnf -y updateAltera: o SO; o kernel novo só entra com o reboot seguinte. Antes: Restart parado (passo anterior). Zabbix e EM 24ai em manutenção.
Reiniciar paradaKernel novo só entra com reboot.
Pode prejudicarroot@oel9-01-26aiSE2 # systemctl rebootDerruba: a máquina; o boot traz o Restart de volta se estiver habilitado. Antes: Restart parado e crsctl config has = enabled. Zabbix e EM 24ai em manutenção.
Conferir a voltaSe o autostart está habilitado, o boot já sobe tudo; se não, mandar subir.
root@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl check hasroot@oel9-01-26aiSE2 # /u01/app/26ai/grid/bin/crsctl start hasgrid@oel9-01-26aiSE2 $ crsctl stat res -toracle@oel9-01-26aiSE2 $ srvctl status database -d CDB -v
Fechar a janelaTirar a manutenção no Zabbix, encerrar o blackout, conferir que os targets voltaram nos dois monitores e registrar o resultado no chamado.
oms $ emcli stop_blackout -name="CDB_patch_so"
10

Limites do SE2

Por quê: Standard Edition 2 é licença e é produto: o que não existe na edição não aparece em v$option e o banco recusa a sintaxe. O que a edição não tem: RAC (desde a 19c), Data Guard e o broker (standby só manual, por scripts), Partitioning, paralelismo (parallel query, DML e DDL), Flashback Database, Advanced Compression, Database Vault. Capacidade: licença por socket, no máximo 2 sockets, e a instância se limita a 16 threads de CPU. Como conferir: a verdade é o que v$option e v$instance.edition dizem; a tabela da edição está no Licensing Information User Manual do 26ai. Usuário: oracle como SYSDBA.

AtividadeComando
Edição e versãoEsperado: SE2 em edition e 26ai em version_full.
SQL> select instance_name, edition, version_full from v$instance;SQL> select banner_full from v$version;
O que a edição tem e não temFALSE em RAC, Partitioning, Parallel execution, Data Guard, Flashback Database e Advanced Compression é o normal do SE2.
SQL> select parameter, value from v$option where parameter in ('Real Application Clusters','Oracle Data Guard','Partitioning','Parallel execution','Flashback Database','Advanced Compression','Oracle Database Vault','Transparent Data Encryption','Block Media Recovery') order by 1;
CPU que a instância usacpu_count em SE2 não passa de 16 threads, mesmo que a máquina tenha mais; a VM tem 4 vCPU.
SQL> show parameter cpu_countoracle@oel9-01-26aiSE2 $ nproc
Uso de recursos licenciáveisO que o banco acha que está sendo usado; é a lista que o auditor olha.
SQL> select name, detected_usages, currently_used, last_usage_date from dba_feature_usage_statistics where currently_used='TRUE' order by name;
Backup é a única cópiaSem Data Guard, o RMAN é o plano de recuperação. Confira o que existe antes de qualquer parada.
oracle@oel9-01-26aiSE2 $ rman target /SQL> list backup summary;SQL> report need backup;dentro do rman o prompt é RMAN>; aqui mostrado como SQL> por estilo