PROBLEMAS AL AGREGAR UNA INSTANCIA YA ELIMINADA.
(ORA-20600: The specified target is in the process of being deleted.)
Algunas de las cosas que sigo sin comprender es por que tengo que recurrir a opciones manuales cuando GRID CONTROL de oracle tiene tantas cosas automatizadas.
Una de ellas se refiere a cuando elimino un target , ya sea SINGLE o RAC, o cualquier dato como host. etc.
Cuando elimino desde GRID CONTROL o desde la ejecucion de un package, intento agregarla nuevamente y comienzan los problemas.
El error que presento en primer lugar es que me arroja GC.
TASPRO.somedomain.com: - Connection failure may be due to a slow network, or to the presence of an intervening firewall. Saving TASPRO.somedomain.com_TASPRO2 ...java.sql.SQLException: ORA-20600: The specified target is in the process of being deleted.(target name = TASPRO.somedomain.com)(target type = rac_database)(target guid = 5B7EF67A10D95539FD55842B846872AD) ORA-06512: at "SYSMAN.TARGETS_INSERT_TRIGGER", line 36 ORA-04088: error during execution of trigger 'SYSMAN.TARGETS_INSERT_TRIGGER' ORA-06512: at "SYSMAN.EM_TARGET", line 1936 ORA-06512: at "SYSMAN.MGMT_TARGET", line 2702 ORA-06512: at line 1 - ORA-20600: The specified target is in the process of being deleted.(target name = TASPRO.somedomain.com)(target type = rac_database)(target guid = 5B7EF67A10D95539FD55842B846872AD) ORA-06512: at "SYSMAN.TARGETS_INSERT_TRIGGER", line 36 ORA-04088: error during execution of trigger 'SYSMAN.TARGETS_INSERT_TRIGGER' ORA-06512: at "SYSMAN.EM_TARGET", line 1936 ORA-06512: at "SYSMAN.MGMT_TARGET", line 2702 ORA-06512: at line 1
Bien , voy a quitarlo de la forma manual , por la linea de comando del SQLPLUS, y comienza mi sorpresa !
No se encuentra !!
SQL> exec sysman.mgmt_admin.cleanup_agent(':3872') BEGIN sysman.mgmt_admin.cleanup_agent(':3872'); END; * ERROR at line 1: ORA-20206: Target does not exist: :3872 ORA-06512: at "SYSMAN.MGMT_ADMIN", line 788 ORA-06512: at line 1
Analicemos un poco lo que esta ocurriendo.
Hay registros de esta instancia, que se encuentran en diferentes tablas del repositorio de GRIDCONTROL y que no fueron eliminados por la ejecucion del package tanto de la capa de aplicacion del producto , como de la ejecucion manual.
Entonces, nunca podremos agregar esa intancia a la consola grafica, salvo cambiando el nombre de la misma por otro.
Hay una tabla en el repositorio que nos dice las instancias que fueron eliminadas .
Y los mas importante en nuestro caso que nos brinda el GUID.
La tabla es mgmt_targets_delete.
SQL> desc sysman.mgmt_targets_delete Name Null? Type ----------------------------------------------------------------------------------- -------- -------------------------------------------------------- TARGET_NAME NOT NULL VARCHAR2(256) TARGET_TYPE NOT NULL VARCHAR2(64) TARGET_GUID NOT NULL RAW(16) EMD_URL VARCHAR2(1024) TIMEZONE_REGION VARCHAR2(64) DELETE_REQUEST_TIME DATE DELETE_COMPLETE_TIME DATE LAST_UPDATED_TIME DATE
Bien, cuando tiramos un query y nos retorna registros podemos trabajar con el que ya eliminamos.
Otra posibilidad es tomar del error del GUID que no arroja en el GRID CONTROL
... Saving TASPRO.somedomain.com_TASPRO2 ...java.sql.SQLException: ORA-20600: The specified target is in the process of being deleted.(target name = TASPRO.somedomain.com)(target type = rac_database)(target guid = 5B7EF67A10D95539FD55842B846872AD) ...
TRABAJEMOS EN LA SOLUCION
Con esta query podemos averiguar si nuestra instancia esta entre los targets eliminados.
SELECT target_name, delete_complete_time, target_guid FROM sysman.mgmt_targets_delete WHERE target_type = 'oracle_emd';
Ahora en esta otra podemos buscar los GUID de las instancias eliminadas para su completo borrado del repositorio.
set line 150 set pages 100 col TARGET_NAME format a60 col TARGET_TYPE format a40 SELECT TARGET_GUID, TARGET_NAME, TARGET_TYPE FROM SYSMAN.MGMT_TARGETS_DELETE;
Veamos un ejemplo.
SQL> set line 150 set pages 100 col TARGET_NAME format a60 col TARGET_TYPE format a40 SELECT TARGET_GUID, TARGET_NAME, TARGET_TYPE FROM SYSMAN.MGMT_TARGETS_DELETE;SQL> SQL> SQL> SQL> 2 3 4 5 6 TARGET_GUID TARGET_NAME TARGET_TYPE -------------------------------- ------------------------------------------------------------ ---------------------------------------- 0C48C5AE0FAFB42ED91F897FF398FC84 Management Services and Repository oracle_emrep 02B12E961DEA69599FB2F6990490B7CC sdat4101lx.somedomain.com_oms_csa_collector oracle_csa_collector 2A8309FA110086253A1C6D6DF460C4DF TESTR7 oracle_database 3883FB68928192C5764B281C43B5DC7A TSTR2N.somedomain.com oracle_database AE8776C8A4EFDE2278E8EF7C383B2F47 TSTR2N_SDAT1010LX_sdat1010lx.somedomain.com oracle_listener 2599AB7549D2543B5F3E60551AD7CACA TEST_SDAT1010LX_sdat1010lx.somedomain.com oracle_listener D739F5E5CAD03634460458A1ED1F1414 +ASM_sdat4103lx.somedomain.com osm_instance 84919D70546D0F532B6216C4189ACC32 LISTENER_SDAT1010LX_sdat1010lx.somedomain.com oracle_listener 6AC580566181F348968035A56D8CD75C sdat1010lx.somedomain.com host 6FED8183F8C07EEA3DDE4093B9749C62 LISTENER_sdat4101lx.somedomain.com oracle_listener 861D54B16D650F7C008EFB4C7A59524C sdat2010lx.somedomain.com host 53C04B1B71F5E4AC94F13D6E5EB8FB9F LISTENER_RMAN_sdat1010lx.somedomain.com oracle_listener 986B082BE7F98385B08C28B78FDB82C6 sdat1010lx.somedomain.com host DAA0BF83B3B3865C1BB0C8B1F4AC5023 PROPE.somedomain.com oracle_database DB0039609F65B31409CDFB6886735E56 TESTPROPE oracle_database 15 rows selected.
Con los datos obtenidos en el paso anterior podemos:
- Ejecutar un paquete.
- Removerlo de forma manual (Para mi fue lo mas efectivo).
Query para eliminar con paquetes.
select 'execute sysman.mgmt_admin.delete_target_internal ('''||target_name||''','''||target_type||'''); ' from sysman.mgmt_targets_delete
En el caso que las anteriores querys no hayan retornado nada, debemos tomar el GUID del error que nos arroja el GRID CONTROL, que nos fue brindada por la aplicacion a la hora de querer agregarlo nuevamente.
Definimos el GUID
DEFINE TARGET_GUID = "0C48C5AE0FAFB42ED91F897FF398FC84"
Corremos las querys que nos dice donde se encuentran todos los registros relacionados a ese GUID.
REM Or check ALL raw columns SELECT 'SELECT COUNT(*) FROM ' || table_name || ' WHERE ' || column_name || ' = HEXTORAW(''&TARGET_GUID'');' FROM ( SELECT table_name, column_name FROM dba_tab_columns NATURAL JOIN dba_tables WHERE owner = 'SYSMAN' AND data_type = 'RAW' ) /
Deleteamos los registros que estan asociados a ese GUID:
REM Or check ALL raw columns --SELECT 'SELECT COUNT(*) FROM ' || table_name || ' WHERE ' || column_name || ' = HEXTORAW(''&TARGET_GUID'');' SELECT 'DELETE FROM ' || table_name || ' WHERE target_guid = HEXTORAW(''&TARGET_GUID'');' FROM ( SELECT table_name, column_name FROM dba_tab_columns NATURAL JOIN dba_tables WHERE owner = 'SYSMAN' AND data_type = 'RAW' ) /
Ahora podemos agregar nuestra instancia felizmente.
Hasta la proxima !
Ate mais !
Regards !
Buenas Noches.
Soy un estudiante de ciclo formativo de grado superior en desarrollo de aplicaciones informáticas.
Utilizando la herramienta de Oracle Oracle Forms developer, he desarrollado una base de datos que inicio desde Forms.
La cuestión es que cuando compilo, supuéstamente estoy logueado en la base de datos con el nombre de usuario y contraseña (de lo contrario, no me dejaría compilar ya que las tablas y vistas pertenecen a la base de datos).
La historia de todo esto es que tengo que “simular” una especie de login en el que cuando introduzca un usuario y un password automáticamente se me habiliten los controles.
Mis compañeros lo que están haciendo es que ponen un usuario que se inventan y un password y comprueban sin acceder a la base de datos. Yo, por el contrario, he conseguido comprobar si existe el usuario en la base de datos. Cuando he intentado validar la contraseña, me he dado cuenta que esta está en hexadecimal. Hay alguna forma de validar mi contraseña a través de PL/SQL?
Gracias y Un saludo!
LikeLike
Your style is really unique compared to other people I’ve read stuff from. I appreciate you for posting when you’ve got the opportunity, Guess
I’ll just book mark this web site.
LikeLike