DataPatch or Upgrade database fails with ORA-13647

Olá DBAs, a vida tá boa?
Mais um errinho chato que enfrentei durante as minhas andanças pelos patches da vida. Mais uma vez um erro simples, que pode possivelmente ser evitado com checagem pré execução, mas que a gente só descobre quando escuta o “valenddooooooooo”.

Seguindo os patches que tenho aplicado, encontrei o seguinte erro em um dos databases ao aplicar o datapatch

$ ./datapatch -verbose
SQL Patching tool version 12.1.0.2.0 Production on Sun Feb 12 08:22:07 2025
Copyright (c) 2012, 2016, Oracle.  All rights reserved

Validating logfiles...done
Patch 34057742 apply: WITH ERRORS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/34057742/xxxxxxxx/34057742_apply_PBLMCHATO_2025Feb12_08_22_07.log (errors)
|
- ORA-13647: Setting of parameter ALTERNATE_PLAN_BASELINE is disallowed during
- task execution.
- ORA-06512: at line 22
- ORA-06512: at "SYS.PRVT_ADVISOR", line 5010
- ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
- ORA-06512: at "SYS.PRVT_ADVISOR", line 1285
- ORA-06512: at "SYS.PRVT_ADVISOR", line 4902
- ORA-06512: at line 11

Chato isso né! Já tinha aplicado os binários, passou liso, agora bem na hora do datapatch, que é pra finalizar já o trampo, eu pego um erro. Particularmente detesto, mas vamos lá resolver a bucha.

O erro é claro, e informa que eu tenho uma task em execução que está bloqueando o meu datapatch. Vamos checar a veracidade dessa informação?

SQL> SELECT status FROM DBA_ADVISOR_TASKS WHERE task_name = 'SYS_AUTO_SPM_EVOLVE_TASK';

STATUS
---------
EXECUTING

Olha ele aí… O problema ocorre porque a tarefa agendada pela autotask está em execução enquanto as instruções pós-instalação do patch são executadas.

Atualmente isso está sendo classificado pela Oracle como Bug 30298195 não publicado – DATA PATCH FAILS WITH ORA-13647: SETTING OF PARAMETER ALTERNATE_PLAN_BASELINE IS DISALLOWED DURING TASK EXECUTION, ou seja, voce não vai encontrar esse bug na Oracle Support.

De qualquer maneira, analisando um pouco, concluimos que estas tarefas podem ser executadas depois, pois o autotask vai verificar novamente o que pode ser aplicado além de que os advisors reconhecerão novamente as possíveis melhorias e elas estarão em uma nova task caso necessário.

Então vamos a simples resolução desse problema que está bloqueando nosso datapatch.

sql> exec DBMS_SQLTUNE.CANCEL_TUNING_TASK('SYS_AUTO_SPM_EVOLVE_TASK');

SQL> SELECT status FROM DBA_ADVISOR_TASKS WHERE task_name = 'SYS_AUTO_SPM_EVOLVE_TASK';

STATUS
-----------
CANCELLED

Pronto… tarefa cancelada manualmente. E agora?

Bom, agora é só executar o datpatch novamente.

$ ./datapatch -verbose
SQL Patching tool version 12.1.0.2.0 Production on Sun Feb 12 08:22:07 2025
Copyright (c) 2012, 2016, Oracle.  All rights reserved

Log file for this invocation: /u00/oracle/cfgtoollogs/sqlpatch/sqlpatch_21663_2025_02_12_08_48_29/sqlpatch_invocation.log

Connecting to database...OK
Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of SQL patches:
Patch 34086863 (Database PSU 12.1.0.2.220719,Oracle JavaVM Component (JUL2022)):
  Installed in the binary registry and the SQL registry
Bundle series PSU:
  ID 220719 in the binary registry and ID 220719 with errors in the SQL registry

Adding patches to installation queue and performing prereq checks...
Installation queue:
  Nothing to roll back
  The following patches will be applied:
    34057742 (DATABASE PATCH SET UPDATE 12.1.0.2.220719)

Installing patches...
Patch installation complete.  Total patches installed: 1

Validating logfiles...
Patch 34057742 apply: SUCCESS
  logfile: /u00/oracle/cfgtoollogs/sqlpatch/34057742/24873298/34057742_apply_PBLMCHATO_2025Feb12_08_48_43.log (no errors)
SQL Patching tool complete on Wed Feb 12 08:48:50 2025

Prontinho!!! Post Patch aplicado com sucesso em seu database depois do susto dele não aplicar bem no meio da sua janela de manutenção.

Vale a pena olhar antes de executar o datpatch no DB se a auto task está executando ou não? Vale sempre a pena. Vai garantir que o erro não aconteça? Depende da sua sorte, se entre a verificação e o início real do datapatch seu database começar a task.

Este mesmo erro pode acontecer também durante Oracle upgrades. Seguem abaixo as notas no MOS para verificação caso desejem ir mais a fundo:

Datapatch failed with “ORA-13647: Setting of parameter ALTERNATE_PLAN_LIMIT is disallowed during task execution ” (Doc ID 2710316.1)

Database Upgrade failed with Error : “ORA-13647: Setting of parameter ALTERNATE_PLAN_LIMIT is disallowed during task execution” (Doc ID 2641766.1)

De qualquer maneira, agora voce já sabe como resolver esse problema, rápido e rasteiro pra não atrapalhar sua tão apertada janela.

Como sempre, Fiquem a vontade para fazer quaisquer pontuações caso já tenham vivenciado algo do tipo.

Essa é a dica 0800 pra vocês desta vez.

“Saber das coisas vale ouro. Compartilhar esse conhecimento não tem preço.”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *