Uma das perguntas durante minha apresentação “Como Usar Oracle RAT no Autonomous Database (OCI)” no GUOB Tech Day 2023 foi onde consultar algum tipo de log caso a DBMS_CLOUD_ADMIN.replay_workload apresente um erro antes da captura ser processada no Autonomous.

Essa pergunta é muito interessante porque realmente as views DBA_WORKLOAD_CAPTURES e DBA_WORKLOAD_REPLAYS do Oracle RAT só mostram informações de CAPTURA ou REPLAY que foram pré-processados com sucesso. Caso ocorra algum erro na automação do Autonomous que impeça de a captura ser pré-processada, como por exemplo, um erro ao fazer download dos arquivos de captura do Buckect para o Filesystem do Exadata, essa informação nunca será gravada nessas views convencionais do Oracle Database.

Para isso, a Oracle criou uma view específica do Autonomous, usada para logar o status ou progresso de algumas fases da automação do Database Replay: DBA_CAPTURE_REPLAY_STATUS.

Exemplo

Tentando iniciar um replay com uma URL incorreta:

SQL> BEGIN
 DBMS_CLOUD_ADMIN.replay_workload(
  location_uri => 'https://swiftobjectstorage.sa-vinhedo-1.oraclecloud.com/v1/axai3hjvkzzf/oracle-rat-spa/example',
  credential_name => 'CRED_ADB_RAT',
  synchronization => TRUE,
  process_capture => TRUE
  );
END;
/ 

PL/SQL procedure successfully completed.

Apesar dele ter apresentado “PL/SQL procedure successfully completed”, consultando a DBA_CAPTURE_REPLAY_STATUS observamos que ele encontrou um erro:

set lines 400
col state format a100
col progress format a20
SELECT * FROM DBA_CAPTURE_REPLAY_STATUS;

STATE                                                                                                PROGRESS
---------------------------------------------------------------------------------------------------- --------------------
Exception encountered: -27369, ORA-27369: job of type EXECUTABLE failed with exit code: 1 cp: cannot
 stat '/u02/nfsad1/ext_data/db_replay_capture//*': No such file or

Em alguns casos a DBMS_CLOUD_ADMIN.replay_workload pode retornar um erro imediatamente, como quando tentamos usar uma credencial incorreta:

-- criando uma credencial incorreta
SQL> BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'CRED_ADB_RAT_ERRADA',
    username => 'guob2023/maicon@dibiei.com',
    password => 'token_errado'
  );
END;
/  

PL/SQL procedure successfully completed.

-- usando uma credencial incorreta
SQL> 
SQL> BEGIN
 DBMS_CLOUD_ADMIN.replay_workload(
  location_uri => 'https://swiftobjectstorage.sa-vinhedo-1.oraclecloud.com/v1/axai3hjvkzzf/oracle-rat-spa/example',
  credential_name => 'CRED_ADB_RAT_ERRADA',
  synchronization => TRUE,
  process_capture => TRUE
  );
END;
/  
BEGIN
*
ERROR at line 1:
ORA-20401: Authorization failed for URI -
https://swiftobjectstorage.sa-vinhedo-1.oraclecloud.com/v1/axai3hjvkzzf/oracle-r
at-spa/example/
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line 1659
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_ADMIN", line 4656
ORA-06512: at line 2

Referência:

DBA_CAPTURE_REPLAY_STATUS View

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading