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_acctmgr e dv_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 👍!