Como atualizar Oracle EM 12c com Database Vault habilitado

This post is also available in: English

Nestes últimos dias, fui atualizar o EM 12c do release 12.1.0.3.0 para o release 12.1.0.4.0. No entanto, o BD onde estava o repositório do Enterprise Manager tinhao Oracle Database Vault habilitado e pela política de segurança de empresa, eu não poderia desabilitá-lo nem temporariamente para prosseguir com o upgrade.

Sem dúvidas a melhor forma de prosseguir com a instalação sem ter problemas teria sido desligando temporariamente o Database Vault.

O repositório executava um Oracle Database 11.2.0.4 atualizado com PSU 3.

Quando iniciei o processo de instalação, já na etapa de atualização do repositório, me deparei com o seguinte erro:

ORA-01031: insufficient privileges
ORA-06512: at line 21
File:/u01/app/oem/em12cR4/Middleware/oms/sysman/admin/emdrep/sql/core/latest/admin/admin_create_cloud_engine_user.sql
Statement:declare 
    l_sql varchar2(512);
    l_count number;
BEGIN
    select count(*) into l_count from all_users where username = upper('CLOUD_ENGINE_USER');
    IF (l_count = 0) THEN
        l_sql := 
            'CREATE USER CLOUD_ENGINE_USER ' ||
            ' IDENTIFIED BY "dbaspdgs10rio" ' ||
            ' DEFAULT TABLESPACE MGMT_ECM_DEPOT_TS ' ||
            ' TEMPORARY TABLESPACE TEMP '||
            '  PASSWORD EXPIRE  ACCOUNT LOCK';

        execute immediate l_sql; 
    END IF;

EXCEPTION WHEN OTHERS THEN 
    IF SQLCODE = -01920 THEN 
        NULL;
    ELSE
        raise;
    END IF;
END;

O SYS não tem permissão de criar usuários quando o DV está habilitado. Para passar por este erro, eu resolvi conceder temporariamente os grants nas roles dv_acctmgrdv_owner para o usuário SYS e SYSMAN (ambos participam da tarefa de upgrade). Após isso, cliquei em RETRY e passei pelo problema:

grant dv_acctmgr to sys;
grant dv_acctmgr to sysman;

grant dv_owner to sys;
grant dv_owner to sysman;

Porém, isso não foi o suficiente. Mais a frente, tive erros com outro privilégio:

ORA-47410: Realm violation for GRANT on CONNECT
File:/u01/app/oem/em12cR4/Middleware/oms/sysman/admin/emdrep/sql/core/latest/admin/admin_grants_repos_user.sql
Statement:GRANT connect, resource TO SYSMAN

O problema aqui foi no momento em que o usuário SYS tentou conceder grant na role CONNECT para o usuário SYSMAN (que por sinal, já possuia este grant).

Para passar por esta etapa, adicione temporariamente o usuário SYS na realm 'Database Vault Account Management':

BEGIN
  DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALM(
  REALM_NAME => 'Database Vault Account Management',
  GRANTEE => 'SYS',
  AUTH_OPTIONS => DVSYS.DBMS_MACUTL.G_REALM_AUTH_OWNER);
END;
/

Ao clicar em RETRY, não tive mais nenhum problema e a instalação da nova versão seguiu transparente até o final.

A melhor forma de ter atualizado teria sido desabilitando o Oracle Database Vault antes do início da tarefa, mas com estes workarounds, é possível atualizá-lo com o Vault habilitado.

Por fim, revogue os acessos concedidos temporariamente:

revoke dv_acctmgr from sys;
revoke dv_acctmgr from sysman;

revoke dv_owner from sys;
revoke dv_owner from sysman;

BEGIN
  DVSYS.DBMS_MACADM.DELETE_AUTH_FROM_REALM(
  REALM_NAME => 'Database Vault Account Management',
  GRANTEE => 'SYS');
END;
/
Gostou? Não deixe de comentar ou deixar um 👍!

Deixe um comentário

Seu e-mail não será publicado.