Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Gerenciador simultâneo da Oracle


O Oracle Concurrent Manager é uma peça importante no produto Oracle E-Business Suite. ajuda no processamento em lote de muitas coisas.

Estou aqui apresentando alguns detalhes sobre isso

É composto por várias partes. Explicando cada um deles em detalhes. Dá uma ideia de como funciona um processo de gerenciamento simultâneo do E-Business Suite

Índice

Tipos de Oracle Concurrent Manager

Gerente interno simultâneo (ICM)


O Internal Concurrent Manager (ICM) pode ser considerado o “cérebro” do processamento concorrente. É responsável pela seguinte funcionalidade:

-Inicia todos os outros processos, como gerenciador de resolução de conflitos, gerenciador padrão
-Executa "solicitações de controle" enviadas pelo administrador.
-Ativar/Desativar/Abortar gerenciador simultâneo
-Terminar solicitação simultânea
-Monitora os processos, reiniciando os que falharam.
-Define o número alvo de processos para cada serviço com base no turno de trabalho atual.

Iniciando o ICM

-adcmctl.sh script
-TNS Apps Listener deve ser iniciado antes de iniciar o ICM

Encerrando o ICM

-Desligar o ICM interromperá todos os outros serviços, como gerenciador de resolução de conflitos, gerenciador padrão
– Os processos normais de desligamento sinalizam para sair após concluir suas tarefas atuais.
– A interrupção encerrará os processos de serviço.
– O ICM não sairá até que todos os outros processos tenham saído.
-Use adcmctl.sh para encerrar o ICM.

Gerentes de Serviço (FNDSM)


Os Service Managers são gerados nos nós de camada intermediária de um sistema habilitado para GSM para atuar como um agente do ICM. Quando o ICM vê que precisa de um gerenciador de serviço para executar alguma função, como iniciar um processo de gerenciador simultâneo, em um nó de camada intermediária, ele fará chamadas de controle de procedimento remoto para o ouvinte de aplicativos nesse nó para iniciar o gerenciador de serviço. Uma vez que o Service Manager foi iniciado e inicializado, o ICM se comunica diretamente com o Service Manager por meio de Remote Procedural Call (RPC), fornecendo informações para gerenciar os serviços nesse nó.

-O gerenciador de serviço é gerado a partir do APPS TNS Listener
– O APPS TNS Listener deve ser iniciado em cada nó de camada intermediária no sistema e iniciado pelo usuário que inicia o ICM (por exemplo, applmgr)
- O TNS Listener gera o Service Manager para ser executado como agente do ICM para o nó local
-O Service Manager é iniciado pelo ICM sob demanda quando necessário. Se nenhuma ação de gerenciamento for necessária em um nó, um Service Manager não será iniciado pelo ICM até que seja necessário. Quando o ICM sai de seus Service Managers, também sai.
-O ambiente do Service Manager é definido pelo APPSORA.env conforme definido em listener.ora
-Os arquivos listener.ora e tnsnames.ora devem ser configurados corretamente para que o ouvinte possa gerar o Service Manager e que o ICM possa verificar o status do Service Manager.

Monitores internos (FNDIMON)


Os Monitores Internos são usados ​​especificamente no Processamento Simultâneo Paralelo para permitir o failover do gerenciador simultâneo Interno para outros nós de camada intermediária disponíveis.

-Coloque um Monitor Interno em qualquer nó onde o ICM possa iniciar em caso de falha.
-Os Monitores Internos são semeados em cada nó registrado por padrão.
-Se o ICM cair, o Monitor Interno irá tente iniciar um novo ICM no nó local.
-Se vários ICMs forem iniciados, apenas o primeiro permanecerá ativo. Os outros sairão graciosamente.

Gerentes simultâneos da Oracle(FNDLIBR,INVLIBR)


Os gerenciadores simultâneos fornecem processamento de trabalho assíncrono monitorando a tabela FND_CONCURRENT_REQUESTS em um ciclo contínuo. O trabalho de um gerenciador simultâneo é executar solicitações simultâneas que estão em fase/status Pendente/Normal e que está qualificado para executar de acordo com suas regras de especialização.

Processos simultâneos do gerente
– Agir de forma independente
– Selecione apenas solicitações que:(a) correspondam às regras de especialização do gerente, (b) estejam Pendentes/Normais, (c) tenham um horário de início solicitado

Descrição sobre importantes tabelas oracle do Oracle Concurrent Manager


FND_CONCURRENT_QUEUES
TARGET_NODE
-Usado para indicar onde processos adicionais devem ser iniciados
-Usado por gerentes para determinar se eles devem se desligar para migração
-Os gerentes comparam o valor do parâmetro passado na inicialização para este valor
-Usado pela interface do usuário para indicar onde existem processos (não totalmente preciso no caso de migração)
-Atribuído pelo ICM com base nas configurações primárias e secundárias

NODE_NAME
-Indica o nó primário para PCP – carga direcionada
-Onde os processos devem ser iniciados, a menos que o nó não esteja online ou tenha sido determinado como indisponível
-Se nenhum nó for especificado, o ICM atribuirá o destino nó por padrão para NODE_NAME2
-Indica o nó secundário para PCP – failover de carga direcionado
-Apenas atribuído como TARGET_NODE se o nó primário não estiver disponível

FND_CONCURRENT_PROCESSES
NODE_NAME
-Indica onde o processo do gerenciador está sendo executado
-Também indica onde os arquivos do gerenciador existem
-Preenchido usando o valor de uname() (nome da máquina física)
-Usado pelo ICM ao encerrar o processo
-Usado ao visualizar o arquivo de log na Interface do Usuário(UI)
-Usado pelo Programa de Purga para excluir o arquivo de log do processo
-Pode ser usado para cálculos estatísticos de carga de trabalho
-Provavelmente será usado por RPMs para tentar encontrar um OPP local
-Similarmente usado em 11i.X para localizar o Servidor de Relatórios

FND_CONCURRENT_REQUESTS
LOGFILE_NODE_NAME, OUTFILE_NODE_NAME
-Indica onde os arquivos existem
-Usado na interface do usuário (UI) para visualização de arquivos
-Usado pelo programa Purge para excluir arquivos
-Valor preenchido pelo processo mgr, baseado em seu próprio nó

FND_NODES

NODE_NAME
-Indica o nome do nó onde o arquivo DBC está localizado.
-Adgendbc.sh script cria o arquivo DBC.

SERVER_ID
-Será usado para autenticar conexões do nó.
-Atualizado por adgendbc.sh que chama a API AdminAppServer.

Tabelas do gerenciador simultâneo


FND_NODES: contém todas as informações de nível de nós

FND_CONCURRENT_PROCESSES : Contém todas as informações do processo do gerenciador simultâneo
FND_CONCURRENT_REQUESTS : Contém um histórico completo de todas as solicitações simultâneas (tanto o histórico anterior quanto os programados para execução no futuro).

FND_CONCURRENT_QUEUES :Contém as informações de todos os gerenciadores simultâneos criados no sistema
FND_CONCURRENT_PROGRAMS :Contém as informações de todos os programas simultâneos disponíveis no sistema
FND_EXECUTABLES
FND_CP_SERVICES
FND_CONCURRENT_QUEUE_SIZE
FND_CONCURRENT_QUEUE_CONTENT
FND_CONCURRENT_PROGRAM_SERIAL
FND_CONCURRENT_TIME_PERIODS
FND_CONCURRENT_PROCESSORS

FNDSVCRG
O executável FNDSVCRG é acionado a partir dos scripts de controle antes e depois de um script iniciar ou parar o serviço. O FNDSVCRG se conectará ao banco de dados para verificar a configuração do Serviço GSM Semeado. Se o serviço em questão não estiver habilitado para ser gerenciado em GSM, o executável FNDSVCRG não fará nada e sairá. O script continuaria a executar suas ações normais de início/parada. Se o serviço estiver habilitado para gerenciamento GSM, o executável FNDSVCRG atualizará as informações relacionadas ao serviço no banco de dados, incluindo o contexto do ambiente, o local do arquivo de log do serviço atual e o estado atual do serviço

Descrição do status da fase de solicitação simultânea


PENDENTE/Normal -A solicitação está aguardando o próximo gerente disponível.
PENDENTE/Em espera -O pedido de execução do programa é incompatível com outro programa em execução no momento.
PENDENTE/Agendado -A solicitação está programada para começar em uma hora ou data futura.
PENDENTE/Aguardando -Um pedido filho está esperando que seu pedido Pai o marque pronto para ser executado. Por exemplo, uma solicitação em um conjunto de solicitações executado sequencialmente deve aguardar a conclusão de uma solicitação anterior.
RUNNING/Normal -A solicitação está sendo executada normalmente.
EXECUTAR/Pausada -A solicitação pai pausa para que todas as solicitações filhas terminem de ser executadas. Por exemplo, um conjunto de solicitações é pausado para que todas as solicitações do conjunto sejam concluídas.
EXECUTAR/Reiniciar -Todas as solicitações enviadas pela mesma solicitação pai foram concluídas. A solicitação pai continua em execução.
EXECUTAR/encerrar -A solicitação é encerrada ao selecionar o botão Cancelar solicitação na janela Solicitações.
CONCLUÍDO/Normal -Solicitação concluída com sucesso.
CONCLUÍDA/Erro -A solicitação não foi concluída com êxito.
CONCLUÍDO/Aviso -Pedido preenchido com avisos. Por exemplo, uma solicitação é gerada com sucesso, mas não é impressa.
CONCLUÍDO/Cancelado -A solicitação pendente ou inativa é cancelada ao selecionar o botão Cancelar solicitação na janela Solicitações.
CONCLUÍDO/Encerrado -A solicitação é encerrada ao selecionar o botão Cancelar solicitação na janela Solicitações.
INATIVO/Desativado -O programa para executar a solicitação não está habilitado. Entre em contato com o administrador do sistema.
INATIVO/Em espera- A solicitação pendente é colocada em espera selecionando o botão Reter solicitação na janela Solicitações.
INATIVO/Sem gerente -Nenhum gerenciador está definido para executar a solicitação. Verifique com o administrador do sistema. Um status de Nenhum gerente também é fornecido quando todos os gerentes são bloqueados por solicitações de execução isolada.

como iniciar o gerenciador simultâneo em aplicativos oracle r12


Iniciar o gerenciador simultâneo no R12
Conecte-se ao usuário do Application Tier normalmente seu applmgr
cd $ADMIN_SCRIPTS_HOME
./adcmctl.sh start apps/<apps-pass>

como parar o gerenciador simultâneo em aplicativos oracle r12


Parar o gerenciador simultâneo em R12
Conecte-se ao usuário do Application Tier normalmente seu applmgr
cd $ADMIN_SCRIPTS_HOME
./adcmctl.sh stop apps/<apps-pass>

como verificar o status do gerenciador simultâneo em aplicativos oracle r12


Para verificar o status do gerenciador simultâneo
Conecte-se ao usuário do Application Tier normalmente seu applmgr
cd $ADMIN_SRCIPTS_HOME
./adcmctl.sh status apps/<apps-pass>

Localização do arquivo de log do gerenciador simultâneo em R12


Concurrent Manager, ICM e solicitação simultânea geram os arquivos de log

A) Arquivo de Log de Solicitações Concorrentes – documenta a execução de uma determinada solicitação ( l.req )
B) Arquivo de Log do Gerenciador – documenta o desempenho de um processo de gerenciador simultâneo. ( W.mgr )
C) Arquivo de Log do Gerente Interno – documenta o desempenho do ICM.(std.mgr). Este arquivo de log exibe os parâmetros usados ​​com o comando 'adcmctl'.

se $APPLCSF estiver definido

Os arquivos de log estão na pasta $APPLCSF/$APPLLOG.
Os arquivos de log também podem ser visualizados de dentro dos aplicativos do formulário Visualizar solicitações simultâneas

R12.2  APPLCSF =$NE_BASE/inst//logs/appl/conc/log

R12.1 APPLCSF=$INST_TOP//logs/appl/conc/log

Se $APPLCSF não estiver definido

Os arquivos de registro estão na pasta $PRODUCT_TOP/$APPLLOG.

Da mesma forma para arquivos de saída,

se $APPLCSF estiver definido

R12.2 APPLCSF=$NE_BASE/inst//logs/appl/conc/

R12.1 APPLCSF=$INST_TOP//logs/appl/conc/

Solução de problemas do gerenciador simultâneo


Como você verifica o status dos gerenciadores simultâneos da Oracle no SO
–Comando Linux:
$ ps -ef | grep LIB

-Observe que o Internal Concurrent Manager pode ser visto nesta listagem porque seu comando é "FNDLIBR FND CPMGR ..." enquanto os outros mostram mais como "FNDLIBR FND Concurrent_Processor ..."
-O ID de usuário Unix mostrado na primeira coluna deste a listagem é crucial:esses processos do gerenciador simultâneo devem ser de propriedade do mesmo ID de usuário Unix que possui o código dos aplicativos ($APPL_TOP e seus subdiretórios); esse usuário geralmente é chamado de "applmgr"

Para onde vão todos os arquivos gerados pelos gerenciadores simultâneos da Oracle

-O arquivo de log do ICM vai para o diretório $FND_TOP/log e geralmente corresponde a std.mgr.
-Os arquivos de log dos trabalhadores vão em $FND_TOP/log e correspondem a W.mgr
-The Os arquivos de log/out de solicitações simultâneas vão para o diretório superior do produto associado ao produto que está executando a solicitação:por exemplo, os arquivos de log/out para relatórios AR vão para $AR_TOP.
-Os arquivos de log para solicitações simultâneas vão para $ subdiretório APPLLOG no diretório principal do produto apropriado e corresponda a l
.req
-Os arquivos de saída para solicitações simultâneas vão para o subdiretório $APPLOUT
-Se APPLCSF estiver definido, ele deve apontar para o caminho completo para um diretório que tenha os subdiretórios $APPLLOG e $APPLOUT. Este diretório $APPLCSF será usado em vez dos vários diretórios principais de produtos para escrever
todos os arquivos de log/out para.


Os problemas mais comuns do gerenciador simultâneo são causados ​​por problemas de proteção de arquivos no nível do Unix/linux.


-Você está iniciando os gerenciadores simultâneos como applmgr?
-O applmgr pode fazer o seguinte para criar um arquivo no diretório
$FND_TOP/$APPLLOG?
$FND_TOP/$APPLOUT diretório?
Unix:$ touch $FND_TOP/$APPLLOG/a
-Se isso falhar, quem é o dono do diretório?
Unix:$ ls -ld $FND_TOP/$APPLLOG
-É este diretório um link simbólico? Em caso afirmativo, quais são as proteções no diretório para o qual ele aponta?
-Você está ficando sem espaço em disco nesta partição? i-nodes?
Unix:$ df -k
Unix (em alguns sistemas) para verificar i-nodes:$ df -i
-O APPLCSF está definido?
-Se sim , o applmgr pode fazer isso?
Unix:$ touch $APPLCSF/$APPLLOG/a
-Verifique os diretórios $APPLOUT (geralmente “out”) assim como os diretórios de log.

Se um programa simultâneo PL/SQL não puder gravar em um arquivo externo, você receberá uma mensagem de erro semelhante a:
MSG-00102: Error Message :ORA-20100: File o0000071.tmp creation for FND_FILE failed.
You will find more information on the cause of the error in request log.
ORA-06512: at "APPS.FND_FILE", line 378
ORA-06512: at "APPS.FND_FILE", line 473
ORA-06512: at "APPS.AP_XYZ", line 192
REP-1419: 'beforereport': PL/SQL program aborted.

NOTA:Os aplicativos também produzem arquivos de saída PL/SQL temporários usados ​​no processamento simultâneo. Esses arquivos são gravados em um local no nó do servidor de banco de dados especificado pela configuração do ambiente APPLPTMP. O diretório APPLPTMP deve ser o mesmo diretório especificado pelo parâmetro utl_file_dir em seu arquivo de inicialização do banco de dados.
.
A Instalação Rápida define APPLPTMP e o parâmetro utl_file_dir para o mesmo diretório padrão. Como os arquivos temporários colocados nesse diretório podem conter informações sensíveis ao contexto, ele deve ser um diretório seguro no nó do servidor de banco de dados com acesso de leitura e gravação para o proprietário do servidor de banco de dados. Em um sistema de vários nós, o diretório definido por APPLPTMP não precisa existir nos servidores da camada de aplicativos. Durante um upgrade com AutoUpgrade, você deve fornecer o valor do parâmetro utl_file_dir para a configuração do ambiente APPLPTMP.

Para isolar onde está o problema, verifique o seguinte:

1) Certifique-se de que o nome do arquivo é válido (o nome do arquivo não deve incluir caracteres como “^”)

2) Certifique-se de que APPLPTMP esteja definido para um diretório válido e que AMBOS o usuário applmgr e o usuário do banco de dados tenham permissões de leitura e gravação nesse diretório (normalmente, ele pode ser definido no mesmo diretório que APPLTMP)

3) Certifique-se de que o arquivo não saia no diretório apontado por APPLPTMP

4) Certifique-se de que o diretório apontado por APPLPTMP seja a primeira entrada no utl_file_dir. Além disso, verifique se todas as entradas no utl_file_dir são válidas e se o applmgr possui permissões de leitura/gravação.

Se estiver usando um spfile, verifique a sintaxe adequada para definir utl_file_dir:

Ex.
ALTER SYSTEM SET UTL_FILE_DIR='directory1','directory2' scope=spfile;

5) Se ainda tiver problemas, verifique se você pode escrever um arquivo diretamente usando FND_FILE, que é o pacote usado pela Aplicação. No SQLPLUS, conectado como usuário de aplicativos, execute:
SQL> exec FND_FILE.PUT_LINE(FND_FILE.LOG, 'THIS IS A TEST');

Isso deve despejar um arquivo em APPLPTMP.

Se este teste funcionar, indicaria que FND_FILE está OK e o problema possivelmente está no aplicativo.

Você pode querer deixar apenas uma entrada em utl_file_dir para este teste.

6) Se ainda tiver problemas, verifique se você pode escrever um arquivo usando UTL_FILE, que é usado por FND_FILE.

Execute o PL/SQL abaixo, alterando para a primeira entrada em utl_file_dir (você pode querer deixar apenas uma entrada em utl_file_dir para este teste).
set serveroutput on
DECLARE file_location VARCHAR2(256) := '';
file_name VARCHAR2(256) := 'utlfile1.lst';
file_text VARCHAR2(256) := 'THIS IS A TEST';
file_id UTL_FILE.file_type;
BEGIN
file_id := UTL_FILE.fopen(file_Location,file_name, 'W');
UTL_FILE.put_line(file_id, file_text);
UTL_FILE.fclose(file_id);
EXCEPTION
WHEN UTL_FILE.INVALID_PATH
THEN
dbms_output.put_line('Invalid path ' || SQLERRM);
WHEN OTHERS
THEN
dbms_output.put_line('Others '|| SQLCODE || ' ' || SQLERRM);
END;
/

Este programa deve despejar um arquivo no diretório solicitado. Se o teste falhar, o problema provavelmente está no lado do banco de dados.

SCRIPTS DO SERVIDOR DE PROCESSAMENTO CONCORRENTE



afcmstat.sql Exibe todos os gerenciadores definidos, sua capacidade máxima, pids e seus status.
afimchk.sql Exibe o status do método ICM e PMON em vigor, o arquivo de log do ICM e determina se o monitor do gerenciador simultâneo está em execução.
afcmcreq.sql Exibe o gerenciador simultâneo e o nome do arquivo de log que processou uma solicitação.
afrqwait.sql Exibe as solicitações pendentes, retidas e agendadas.
afrqstat.sql Exibe o resumo do tempo de execução da solicitação simultânea e do status desde uma determinada data.
afqpmrid.sql Exibe a identificação do processo do sistema operacional do processo FNDLIBR com base em uma identificação de solicitação simultânea. O id do processo pode ser usado com o utilitário ORADEBUG.
afimlock.sql Exibe a identificação do processo, terminal e identificação do processo que podem estar causando bloqueios que o ICM e o CRM estão esperando para obter. Você deve executar este script se houver longos atrasos ao enviar trabalhos ou se suspeitar que o ICM está em um impasse com outro processo oracle.

Como fazer o ajuste simultâneo do gerenciador


Ajustando o Gerente Concorrente Interno (ICM)

O desempenho do ICM é afetado pelos três parâmetros importantes do Oracle:ciclo PMON, tamanho da fila e tempo de suspensão.

Ciclo PMON — Este é o número de ciclos de sono que o ICM espera entre o momento em que verifica as falhas dos gerenciadores simultâneos, cujo padrão é 20. Você deve alterar o ciclo PMON para um número inferior a 20 se seus gerenciadores simultâneos estiverem tendo problemas com terminações.

Tamanho da fila — O tamanho da fila é o número de ciclos PMON que o ICM espera entre a verificação de gerenciadores simultâneos desativados ou novos. O padrão para o tamanho da fila de 1 ciclo PMON deve ser usado.

Sleep Time — O parâmetro do sleep time indica os segundos que o ICM deve esperar entre a verificação de pedidos que estão esperando para ser executados. O tempo de suspensão padrão é 60, mas você pode diminuir esse número se perceber que tem muitas solicitações em espera (Pendente/Normal). No entanto, reduzir esse número para um valor muito baixo pode causar uma utilização excessiva da CPU.

Ajustando o tamanho do cache do gerenciador simultâneo individual

O desempenho do gerenciador simultâneo também pode ser aprimorado aumentando o tamanho do cache do gerenciador para pelo menos duas vezes o número de processos de destino. O tamanho do cache especifica o número de solicitações que serão armazenadas em cache cada vez que o gerenciador simultâneo ler a tabela FND_CONCURRENT_REQUESTS. Aumentar o tamanho do cache aumentará a taxa de transferência dos gerenciadores ao tentar evitar o tempo de suspensão.

Limpando Solicitações Simultâneas
É visto que quando os registros em FND_CONCURRENT_PROCESSES e FND_CONCURRENT_REQUESTS excedem 50K, você pode começar a ter sérios problemas de desempenho em seus Aplicativos Oracle. Para evitar esses problemas, devemos limpar regularmente os dados nessas tabelas usando uma solicitação específica chamada “Purge Solicitações Simultâneas e/ou Dados do Gerente”. Deve ser programado para ser executado regularmente. Essa solicitação pode ser configurada para limpar os dados da solicitação das tabelas FND, bem como os arquivos de log e os arquivos de saída acumulados no disco.

Analisando tabelas de dicionário do Oracle Apps para alto desempenho

As tabelas do Concurrent Manager podem ficar fragmentadas ao longo do tempo, portanto, é recomendável reconstruí-las em manutenção regular
Também é muito importante executar a solicitação Reunir estatísticas da tabela
Algumas das tabelas importantes são
FND_CONCURRENT_PROCESSES
FND_CONCURRENT_PROGRAMS
FND_CONCURRENT_REQUESTS,
FND_CONCURRENT_QUEUES.

Espero que gostem deste post no Oracle Concurrent Manager.

Leia também
Consultas do gerenciador simultâneo:Este artigo contém as 30 principais consultas do gerenciador simultâneo para solução de problemas, resolução, tempo de execução e detalhes do gerenciador simultâneo
ORA-01427:Confira esta solução em ORA-01427:single-row subconsulta retorna mais de um erro de linha, como resolvê-lo quando acontece com o Concurrent Manager
request definido em aplicativos oracle:Request set oferece a capacidade de enviar o mesmo conjunto de solicitações regularmente usando uma única transação.
Perguntas da entrevista de gerente simultânea ::Confira 24 perguntas da entrevista de gerente simultânea para ajudá-lo na entrevista do EBS. Isso consiste em todo tipo de pergunta sobre gerenciador padrão, gerenciador de serviços
Processamento simultâneo paralelo:o que é PCP, como configurá-lo, como definir o monitor interno
Oracle Concurrent Manager:Como um E-Business Suite Concurrent Manager Process Works,Oracle Concurrent Manager,O que é monitor interno,O que é gerenciador de serviços e solução de problemas
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174302.htm

Cursos recomendados


A seguir estão alguns dos cursos recomendados que você pode comprar se quiser dar um passo adiante

Abaixo estão os links para alguns dos cursos


Oracle DBA 11g/12c – Administração de Banco de Dados para DBA Junior :Este curso é bom para pessoas que estão começando como DBA Junior ou aspiram ser DBA Oracle. Isso fornecerá uma boa compreensão das tarefas de backup e recuperação e administração geral
Oracle Database:Oracle 12C R2 RAC Administration :Este curso abrange a instalação e administração do Oracle RAC. Um bom curso para DBA Oracle que deseja atualizar suas habilidades para Oracle RAC
Oracle Data Guard:Administração de Banco de Dados para Oracle 12C R2 :Este curso abrange a instalação e administração do Oracle Dataguard. Um bom curso para Oracle DBA que deseja atualizar suas habilidades para Oracle Dataguard