This post is also available in: English
Durante muitos meses, a única maneira que eu encontrei para renomear um target no OEM Cloud Control era apagando e adicionando novamente. No entanto, existe outra maneira como mostrarei adiante. Este procedimento foi testado e validado no EM 12.1.0.2. Portanto, se você optar por experimentar em outra versão, faça assumindo um risco!
Todos os alvos do Enteprise Manager Cloud Control 12c tem um "Display Name" e um "Target Name".
Além disso , há dois tipos de alvos:
- Alvos de Repositório ("Repository Side")
- Alvos de Agente ("Agent Side")
Para consultar os alvos de Repositório, utilize a seguinte query dentro do seu repositório do EM:
SELECT ENTITY_TYPE, TYPE_DISPLAY_NAME, ENTITY_NAME, DISPLAY_NAME FROM SYSMAN.EM_MANAGEABLE_ENTITIES WHERE MANAGE_STATUS = 2 AND REP_SIDE_AVAIL = 1 ORDER BY 1, 2;
Para consultar os alvos de Agente, use esta query dentro do seu repositório EM:
SELECT ENTITY_TYPE, TYPE_DISPLAY_NAME, ENTITY_NAME, DISPLAY_NAME, EMD_URL FROM SYSMAN.EM_MANAGEABLE_ENTITIES WHERE MANAGE_STATUS = 2 AND REP_SIDE_AVAIL = 0 AND EMD_URL IS NOT NULL ORDER BY 1, 2, 3;
Os alvos de Agente são armazenados também dentro do host sendo monitorado. Você pode listá-los com o seguinte script (como usuário owner do EM Agent):
[root@evabddrjs001 ~]# su - emc12 [emc12@evabddrjs001 ~]$ $AGENT_HOME/bin/emctl config agent listtargets Oracle Enterprise Manager Cloud Control 12c Release 2 Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved. [10.221.63.104, host] [10.221.63.104:3872, oracle_emd] [agent12c1_2_evabddrjs001, oracle_home] [COLISEU_104, oracle_database] [OraDb10g_home1_1_evabddrjs001, oracle_home] [COLISEU_10.221.63.104, oracle_listener] [emc12@evabddrjs001 ~]$
Primeiro, vamos ver um exemplo de como renomear alvos do Repositório:
Renomear alvos de Repositório
O que você precisa saber:
- Esses alvos não são monitorados pelo agente do Cloud Control.
- Esses alvos não estão presentes nos arquivos do agente do Cloud Control "$AGENT_BASE/sysman/emd/targets.xml"
- Esses alvos estão apenas presentes no repositóio do Cloud Control repository e eles são mais conhecidos como alvos de "Sistema" ou alvos agregados (como grupos).
O "Display Name" e o "Target Name" são quase sempre iguais para alvos de Repositório.
É possível renomear alvos de Repositório. Para começar, execute o seguinte comando "emcli", como usuário oracle dentro do servidor do OEM:
[root@ec12mntrjr001 ~]# su - oracle [oracle@ec12mntrjr001 ~]$ emcli login -username=sysman Enter password : Login successful [oracle@ec12mntrjr001 ~]$ emcli sync Synchronized successfully
Target Name
Para renomear o "Target Name" do nome, use o comando abaixo:
-target_name=<"target name" atual>
-new_target_name=<novo "target name">
Ex: Renomenado um target name de "oracbddrjs_cluster" para "oracbddrjs-cluster".
[oracle@ec12mntrjr001 ~]$ emcli rename_target -target_type="cluster" -target_name="oracbddrjs_cluster" -new_target_name="oracbddrjs-cluster"
Agora verifique com a query de "alvos de Repositório" se o "Target name" e o "Display name" foram alterados.
Se apenas o "target name" tiver sido modificado, execute o seguinte:
Display Name
Para renomar o "Display Name" do alvo, use o comando:
-name=<"Target name"> # Perceba que aqui eu utilizei o novo nome pois eu já o renomeei na etapa anterior.
-display_name=<novo "Display name">
Ex: Renomeando um display name para "oracbddrjs-cluster".
[oracle@ec12mntrjr001 ~]$ emcli modify_target -name="oracbddrjs-cluster" -type="cluster" -display_name="oracbddrjs-cluster" Target "oracbddrjs-cluster:cluster" modified successfully [oracle@ec12mntrjr001 ~]$
Agora vamos ver um exemplo de como renomear alvos de Agentes:
Renomear alvos de Agente
O que você precisa saber:
- Esses alvos são monitorados pelo agente do Cloud Control.
- Esses alvos estão presentes nos arquivos do agente do Cloud Control "$AGENT_BASE/sysman/emd/targets.xml"
O "Display Name" e o "Target Name" podem ser diferentes para alvos de Agente.
O "Target Name" para um alvo de Agente é o nome do alvo no arquivo "$AGENT_BASE/sysman/emd/targets.xml" do agente do EM Cloud Control.
(Que pode ser obtido executando o comando "emctl config agent listtargets" no agente do EM Cloud Control).
Display Name
Para modificar o "Display Name" de um alvo de Agente, você pode executar o seguinte comando:
Ex: Renomeando o display name do listener para "LISTENER_10.221.63.104".
[root@ec12mntrjr001 ~]# su - oracle [oracle@ec12mntrjr001 ~]$ emcli login -username=sysman Enter password : Login successful [oracle@ec12mntrjr001 ~]$ emcli modify_target -name="COLISEU_10.221.63.104" -type="oracle_listener" -display_name="LISTENER_10.221.63.104" -on_agent Target "COLISEU_10.221.63.104:oracle_listener" modified successfully
Verificando no alvo:
[emc12@evabddrjs001 ~]$ emctl config agent listtargets Oracle Enterprise Manager Cloud Control 12c Release 2 Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved. [10.221.63.104, host] [10.221.63.104:3872, oracle_emd] [agent12c1_2_evabddrjs001, oracle_home] [COLISEU_104, oracle_database] [OraDb10g_home1_1_evabddrjs001, oracle_home] [COLISEU_10.221.63.104, oracle_listener] [emc12@evabddrjs001 ~]$
O "Target name" não mudou, mas o "Display name" está agora como na figura abaixo:
Target Name
Atenção: Execute os comando abaixos assumindo um risco. Oracle não suporta isto ainda e será necessário efetuar modificações em packages do SYSMAN.
Neste exemplo, nós iremos renomear o target name de um listener de "COLISEU_10.221.63.104" para "LISTENER_10.221.63.104". Note que o display name já foi alterado na etapa anterior.
Antes de mais nada, pare o agente na máquina alvo, edite o arquivo "$AGENT_BASE/sysman/emd/targets.xml" com o nome desejado para o "Target name" e inicie o agente novamente:
[emc12@evabddrjs001 ~]$ emctl stop agent Oracle Enterprise Manager Cloud Control 12c Release 2 Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved. Stopping agent ..... stopped. [emc12@evabddrjs001 ~]$ vim $AGENT_BASE/sysman/emd/targets.xml
Antes:
[emc12@evabddrjs001 ~]$ cat $AGENT_BASE/sysman/emd/targets.xml
... <Target TYPE="oracle_listener" NAME="COLISEU_10.221.63.104" DISPLAY_NAME="LISTENER_10.221.63.104" ON_HOST="" EMD_URL="https://10.221.63.104:3872/emd/main/" TIMEZONE_REGION="" IDENTIFIER="TARGET_GUID=0AD03AC01B183A0E9762470BD2A4799E"> <Property NAME="Machine" VALUE="10.221.63.104"/> <Property NAME="Port" VALUE="1521"/> <Property NAME="ListenerOraDir" VALUE="/software/app/oracle/product/network/admin"/> <Property NAME="OracleHome" VALUE="/software/app/oracle/product"/> <Property NAME="LsnrName" VALUE="LISTENER"/> </Target> ...
Depois:
[emc12@evabddrjs001 ~]$ cat $AGENT_BASE/sysman/emd/targets.xml
... <Target TYPE="oracle_listener" NAME="LISTENER_10.221.63.104" DISPLAY_NAME="LISTENER_10.221.63.104" ON_HOST="" EMD_URL="https://10.221.63.104:3872/emd/main/" TIMEZONE_REGION="" IDENTIFIER="TARGET_GUID=0AD03AC01B183A0E9762470BD2A4799E"> <Property NAME="Machine" VALUE="10.221.63.104"/> <Property NAME="Port" VALUE="1521"/> <Property NAME="ListenerOraDir" VALUE="/software/app/oracle/product/network/admin"/> <Property NAME="OracleHome" VALUE="/software/app/oracle/product"/> <Property NAME="LsnrName" VALUE="LISTENER"/> </Target> ...
[emc12@evabddrjs001 ~]$ emctl start agent Oracle Enterprise Manager Cloud Control 12c Release 2 Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved. Starting agent .................. started. [emc12@evabddrjs001 ~]$ vim $AGENT_BASE/sysman/emd/targets.xml [emc12@evabddrjs001 ~]$ emctl config agent listtargets Oracle Enterprise Manager Cloud Control 12c Release 2 Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved. [10.221.63.104, host] [10.221.63.104:3872, oracle_emd] [agent12c1_2_evabddrjs001, oracle_home] [COLISEU_104, oracle_database] [OraDb10g_home1_1_evabddrjs001, oracle_home] [LISTENER_10.221.63.104, oracle_listener] [emc12@evabddrjs001 ~]$
O nome do target no cliente foi alterado. No entanto, apenas essas mudanças não são suficiente.s Se você verificar no EM, verá que o "Target name" continua o mesmo.
Agora, teremos 2 métodos diferentes com o mesmo resultado para terminar essa renomeação do target:
Método 1:
Se você tentar renomear o "Target name" como fizemos com os alvos de Repositório, você receberá o seguinte erro:
[oracle@ec12mntrjr001 ~]$ emcli rename_target -target_type="oracle_listener" -target_name="COLISEU_10.221.63.104" -new_target_name="LISTENER_10.221.63.104" Rename not supported for given Target Type.
Esse comando chama, implicitamente, a procedure SYSMAN.EM_TARGET.RENAME_TARGET.
Infelizmente, se verificarmos o código dentro da procedure, veremos que existe o comentário:
-- we will implement rename of agent side targets when it is fully -- supported by agent
No entanto, já fizemos essa alteração manual no nome do target do agente.
Para completar a tarefa, você precisará editar a PACKAGE BODY SYSMAN.EM_TARGET. Faça um backup do código e efetive as mudanças:
De:
-- we will implement rename of agent side targets when it is fully -- supported by agent IF ( l_trec.manage_status = MANAGE_STATUS_MANAGED AND l_trec.emd_url IS NOT NULL) THEN raise_application_error(MGMT_GLOBAL.INVALID_PARAMS_ERR, MGMT_GLOBAL.INVALID_PARAMS_ERR||' Not allowed') ; END IF ;
Para:
-- we will implement rename of agent side targets when it is fully -- supported by agent IF ( l_trec.manage_status = MANAGE_STATUS_MANAGED AND l_trec.emd_url IS NOT NULL) THEN --raise_application_error(MGMT_GLOBAL.INVALID_PARAMS_ERR, -- MGMT_GLOBAL.INVALID_PARAMS_ERR||' Not allowed') ; null; END IF ;
Agora faça o recompile da package e de qualquer objeto dependente iválido::
SQL> EXEC sys.UTL_RECOMP.recomp_serial('SYSMAN'); PL/SQL procedure successfully completed.
Vamos tentar de novo. Ups, recebemos um erro:
[oracle@ec12mntrjr001 ~]$ emcli rename_target -target_type="oracle_listener" -target_name="COLISEU_10.221.63.107" -new_target_name="LISTENER_10.221.63.107" ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package body "SYSMAN.EM_TARGET" has been invalidated ORA-04065: not executed, altered or dropped package body "SYSMAN.EM_TARGET" ORA-06508: PL/SQL: could not find program unit being called: "SYSMAN.EM_TARGET" ORA-06512: at "SYSMAN.MGMT_TARGET", line 3373 ORA-06512: at line 1
Se você recebeu este erro, apenas reconecte ou faça o resync da sessão que estava aberta antes da alteração do código da package e tente novamente:
[oracle@ec12mntrjr001 ~]$ emcli sync Synchronized successfully [oracle@ec12mntrjr001 ~]$ emcli rename_target -target_type="oracle_listener" -target_name="COLISEU_10.221.63.107" -new_target_name="LISTENER_10.221.63.107" Target COLISEU_10.221.63.107 successfully renamed to LISTENER_10.221.63.107.
Ótimo. Agora recupere o código da package body original do backup que foi feito e coloque de volta a linha comentada.
Método 2:
Também existe outro caminho para trocar o nome do target dentro do metadados do OEM 12c. Nós podemos chamar diretamente a procedure que foi alterada no "Método 1":
SQL> exec sysman.em_target.rename_target('oracle_listener','COLISEU_10.221.63.104','LISTENER_10.221.63.104'); begin sysman.em_target.rename_target('oracle_listener','COLISEU_10.221.63.104','LISTENER_10.221.63.104'); end; ORA-20233: -20233 Not allowed ORA-06512: at "SYSMAN.EM_TARGET", line 5040 ORA-06512: at line 2
Eu recebi o erro acima porque é preciso comentar as linhas do Package Body exatamente como foi feito no "Método 1". Faça então o backup do código, comente, recompile as rependências e execute novamente:
SQL> exec sysman.em_target.rename_target('oracle_listener','COLISEU_10.221.63.104','LISTENER_10.221.63.104'); begin sysman.em_target.rename_target('oracle_listener','COLISEU_10.221.63.104','LISTENER_10.221.63.104'); end; ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package "SYSMAN.EM_TARGET" has been invalidated ORA-04065: not executed, altered or dropped package "SYSMAN.EM_TARGET" ORA-06508: PL/SQL: could not find program unit being called: "SYSMAN.EM_TARGET" ORA-06512: at line 2
Se você receber este erro, apenas reconecte ou faça o resync da sessão que estava aberta antes da alteração do código da package e tente novamente:
SQL> exec sysman.em_target.rename_target('oracle_listener','COLISEU_10.221.63.104','LISTENER_10.221.63.104'); PL/SQL procedure successfully completed SQL> commit; Commit complete SQL>
Ótimo, agora vamos verificar na tela do EM:
Tudo está funcionando bem. Não esqueça de restaurar o código original da package body com o backup que você fez, colocando de volta as linhas comentadas.
Agora finalmente o seu target foi renomeado.
Esse artigo foi escrito baseado no documento do Metalink Doc ID 1515413.1, com muitas e muitas adaptações.
Gostou? Não deixe de comentar ou deixar um 👍!
1 comentário
Boa noite Rodrigo, ótimo artigo.
Estou com uma dificuldade, você já passou por algo igual?
Instalei o grid control 13c, e após criar um host e conectar com sucesso ao tentar configurar o alvo de banco de dados não aparece.
Já instalei o agent com sucesso, consigo visualizar o servidor pelo grid mas não consigo acessar pelo alvo de banco de dados.
Só consegui configurar um alvo de banco de dados no mesmo servidor onde esta o repositório do grid, mas quando tento em outro servidor, mesmo com o agent instalado e aparecendo o host no grid o banco não aparece.
Já passou por algo parecido?
Desde já agradeço
Obrigado