Oracle Cloud Control 13c- очищаем неочищаемые инциденты.

Случается так, что нельзя очистить инциденты из OEM13c.

Инцидент может быть просто не ‘кликабельным’ и виден он только если перейти в таргет, затем в All Metrics, увидим Open Metric Events , а в Incident Manager его нет.

Также выполнение всех требований (This incident will be automatically cleared when the underlying issue is resolved.) по его устранению не вызывает авто удаление инцидента.

Либо инцидентов может быть слишком много, чтобы быстро зачистить их с веб-консоли.

Я знаю два варианта решения этих проблем:

1.      Используя утилиту emcli.

Подключаемся к репозитарию OEM13c и запросом строим скрипт по зачистке:

select a.adr_related,a.problem_num,b.target_name, a.incident_num, a.severity, a.creation_date, a.summary_msg,

q'!emcli delete_incident_record -force -incident_number_list=!'||a.incident_num scr_incident,

q'!emcli delete_incident_record -force -incident_number_list=!'||a.problem_num scr_problem

from mgmt$incidents a, mgmt$target b, mgmt$INCIDENT_CATEGORY c

where a.target_guid=b.target_guid

and a.incident_id=c.incident_id

--and a.summary_msg like '%MesageName%'

--and adr_related=0

and b.target_name like 'targetName%'

--and a.incident_num=78381

and a.severity!='Clear'

В колонках scr_incident и scr_problem будет сгенерирована строка на каждый инцидент/проблему для удаления. Фильтровать можно по имени таргета, инциденту, или куску текста из сообщения об инциденте.

Далее логинемся по ssh на сервер где установлен Weblogic, переходим в MW_HOME/bin и выполняем:

emcli login -username=sysman

Enter password :    <------ Указываем пароль для SYSMAN

Теперь выполняем команду на удаление полученную из скрипта:

[oracle]$ emcli delete_incident_record -force -incident_number_list=218893

=========

Results

=========

=> Incident 218,893 has been successfully deleted.

Если же при выполнении удаления инцидента есть сообщения вида:

Incident 201,646 cannot be deleted. It may be closed, does not exist or is not accessible to this user.

Или

Incident 104,021 is a diagnostic incident and cannot be deleted.

Тогда переходим к варианту номер два.

2.  Вычистить данные об инцидентах из бд репозитория.

Подключаемся к репозитарию OEM. Создаём две таблицы(можете использовать свой вариант, главное запомнить эти ID), в которые запишем ID инцидентов, которые хотим удалить. Одна таблица будет содержать ISSUE_ID другая EVENT_INSTANCE_ID. Я собираю ISSUE_ID и EVENT_INSTANCE_ID  для инцидентов связанных с ошибкой ORA 3137:

create table KKS$ISSUE_ID as select pp.ISSUE_ID from em_issues_msg pp where pp.SUMMARY_MSG like '%ORA 3137%'
create table KKS$EVENT_INSTANCE_ID as select oo.EVENT_INSTANCE_ID from  EM_EVENT_MSGS oo where msg like '%ORA 3137%'

Далее генерируем скрипт по удалению данных для ISSUE_ID:

select q'!delete from !'||s.TABLE_NAME ||q'! e1 where !' 
|| case s.COLUMN_NAME when 'ISSUE_ID' then q'!ISSUE_ID in (select issue_id from KKS$ISSUE_ID);!'
                      when 'INCIDENT_ID' then q'!ISSUE_ID in (select issue_id from KKS$ISSUE_ID);!'
                      when 'EVENT_INSTANCE_ID' then q'!EVENT_INSTANCE_ID in (select p3.event_instance_id  from KKS$EVENT_INSTANCE_ID p3);!' 
  else q'!Wrong column !'||s.COLUMN_NAME
    end
from dba_tab_cols s where s.COLUMN_NAME='ISSUE_ID'; ---<<<<----- условие ISSUE_ID

Затем для EVENT_INSTANCE_ID:

select q'!delete from !'||s.TABLE_NAME ||q'! e1 where !' 
|| case s.COLUMN_NAME when 'ISSUE_ID' then q'!ISSUE_ID in (select issue_id from KKS$ISSUE_ID);!'
                      when 'INCIDENT_ID' then q'!ISSUE_ID in (select issue_id from KKS$ISSUE_ID);!'
                      when 'EVENT_INSTANCE_ID' then q'!EVENT_INSTANCE_ID in (select p3.event_instance_id  from KKS$EVENT_INSTANCE_ID p3);!' 
  else q'!Wrong column !'||s.COLUMN_NAME
    end
from dba_tab_cols s where s.COLUMN_NAME='EVENT_INSTANCE_ID';---<<<<----- условие EVENT_INSTANCE_ID

Эти два скрипта генерируют выражение delete для таблиц у которых встречается колонка SSUE_ID или EVENT_INSTANCE_ID в связке с нашими таблицами которые мы создали ранее.

Метод номер два гораздо опаснее чем метод номер один. Перед его применением просчитайте варианты отката бд к моменту до удаление(как вариант, используйте точку восстановления).

Всем ‘зелёных’ OEM!