This post is also available in:
Durante a aplicação de um patch via Fleet Maintenance no Oracle Enterprise Manager, o job falha na etapa de verificação com os seguintes erros:
'/tmp/' ...FAILED (PRVG-1901, PRVH-0185, PRVH-0516)
Post-check for Oracle Restart configuration was unsuccessful.
PRVG-1901 : failed to setup CVU remote execution framework directory
"/tmp/CVU_19_oracle_2024-03-29_13-44-24_34146/" on nodes "cealomhmbrh1"
Please select a different work area for the framework
PRVH-0185 : Path "/tmp/CVU_19_oracle_2024-03-29_13-44-24_34146/" does not allow
execution on node "cealomhmbrh1".
Cannot run program "/tmp/CVU_19_oracle_2024-03-29_13-44-24_34146/exectask.sh":
error=13, Permission denied
PRVH-0516 : failed to retrieve CVU remote execution framework version from node
"cealomhmbrh1" during an attempt to setup remote execution framework directory
"/tmp/CVU_19_oracle_2024-03-29_13-44-24_34146/"
cealomhmbrh1 : /bin/sh: /tmp/CVU_19_oracle_2024-03-29_13-44-24_34146//exectask.sh:
Permission deniedO job para completamente. Nenhum patch é aplicado. O detalhe mais importante está no error=13, Permission denied — o sistema operacional está bloqueando a execução de um script que o próprio Fleet Maintenance criou no /tmp.
Por que acontece
O Fleet Maintenance utiliza o CVU (Cluster Verification Utility) para executar verificações pré e pós-patch. Durante esse processo, o CVU cria um diretório temporário em /tmp, extrai scripts auxiliares (como exectask.sh) e tenta executá-los a partir dali.
O problema ocorre quando o /tmp está montado com a opção noexec no /etc/fstab:
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0Com noexec, o kernel Linux bloqueia qualquer tentativa de executar binários ou scripts a partir desse filesystem — independente das permissões do arquivo. O resultado é o Permission denied com error=13, que o CVU reporta como PRVG-1901 + PRVH-0185 + PRVH-0516.
💡 O
noexecem/tmpé uma prática de hardening de segurança recomendada pelo CIS Benchmark e STIG. É comum em ambientes de produção com políticas de segurança rigorosas — por isso esse erro aparece em servidores que “funcionavam bem antes”.
Diagnóstico
Antes de qualquer ação, confirme que o /tmp está realmente montado com noexec:
mount | grep /tmpOutput esperado quando o problema existe:
tmpfs on /tmp type tmpfs (rw,nosuid,noexec,relatime)Ou usando findmnt:
findmnt /tmpTARGET SOURCE FSTYPE OPTIONS
/tmp tmpfs tmpfs rw,nosuid,noexec,relatimeSe noexec aparecer nas opções, a causa está confirmada.
Solução
Você tem duas opções: o workaround imediato (sem reboot) ou a solução permanente via redirecionamento do diretório de trabalho do CVU. Avalie qual é mais apropriada para o seu ambiente.
Opção 1 — Remount temporário do /tmp (workaround imediato)
⚠️ Atenção: Este comando remove temporariamente a restrição
noexecdo/tmp. O efeito some no próximo reboot. Se o servidor tem política de segurança que exigenoexec, converse com a equipe de segurança antes de executar em produção.
sudo mount -o remount,exec /tmpConfirme que a opção foi removida:
mount | grep /tmpCom o remount aplicado, volte ao OEM e clique em Retry no job com falha. O CVU conseguirá criar e executar os scripts no /tmp normalmente.
Opção 2 — Redirecionar o diretório de trabalho do CVU (solução permanente)
O CVU respeita a variável de ambiente CV_DESTLOC, que redireciona o diretório temporário para outro filesystem — um que não tenha noexec. Essa é a abordagem mais limpa quando você não pode ou não quer alterar as opções de mount do /tmp.
Configure a variável no perfil do usuário oracle:
echo 'export CV_DESTLOC=/u01/app/oracle/tmp' >> /home/oracle/.bash_profile
mkdir -p /u01/app/oracle/tmp
chmod 755 /u01/app/oracle/tmpCertifique-se de que o filesystem onde /u01 está montado não possui noexec:
findmnt /u01Depois reinicie o agente OEM no nó para que a variável seja carregada:
$AGENT_HOME/bin/emctl stop agent
$AGENT_HOME/bin/emctl start agent💡 Esta opção mantém o
noexecno/tmpe não compromete a política de segurança do servidor.
Opção 3 — Remover noexec do /tmp permanentemente no fstab
⚠️ Atenção: Esta opção remove definitivamente a restrição
noexecdo/tmp. Implica redução do nível de hardening do servidor. Avalie com a equipe de segurança antes de aplicar.
Edite o /etc/fstab e remova a opção noexec da linha do /tmp:
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
tmpfs /tmp tmpfs defaults,nosuid 0 0Aplique sem reboot:
sudo mount -o remount /tmpChecklist rápido
mount | grep /tmp
sudo mount -o remount,exec /tmp
echo 'export CV_DESTLOC=/u01/app/oracle/tmp' >> /home/oracle/.bash_profile
mkdir -p /u01/app/oracle/tmp && chmod 755 /u01/app/oracle/tmp
Observação importante
Este erro não é exclusivo do patch 19.21. Qualquer operação Fleet Maintenance que invoque o CVU — deploy de gold image, upgrade de Grid Infrastructure, rollback — vai falhar com PRVG-1901 / PRVH-0185 / PRVH-0516 em qualquer servidor com /tmp noexec. Resolve uma vez, resolve para todas as operações futuras.
Referências
- Oracle Support — Doc ID 2061121.1: CVU Failures: PRVH-0185 Path Does Not Allow Execution (verificar)
- Oracle Clusterware Administration and Deployment Guide — CVU Environment Variables
