FM_SYNC_NMS_PRD.sql 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. --/
  2. CREATE PROCEDURE FM_SYNC_NMS_PRD
  3. (v_nms in varchar2)
  4. AS
  5. -- create by dufs 2018-8-22
  6. -- 调用方式:211.4服务器上脚本调用
  7. /*
  8. #=============== create by dufs 2018-8-20 接入专业网管与OMC告警对比详情,需求负责人:薛宇 ======================
  9. 10 * * * * . $HOME/.profile;cd /backup/fm_sync; ./fm_sync_pn_Run.sh
  10. 10 * * * * . $HOME/.profile;cd /backup/fm_sync; ./fm_sync_tn_Run.sh
  11. #=============== create by dufs 2018-8-20 接入专业网管与OMC告警对比详情,需求负责人:薛宇 ======================
  12. */
  13. v_cnt number:=0;
  14. v_report_time date;
  15. v_omcList varchar2(2000);
  16. v_sql varchar2(4000);
  17. v_prd varchar2(64):='FM_SYNC_NMS_PRD';
  18. v_logInfo varchar2(500);
  19. procedure FM_SYNC_NMS_COMPARE_PRD(v_report_time in date,v_nms_name in varchar2,v_specialty in varchar2)
  20. as
  21. begin
  22. -- 得到omc列表,在这些omc范围内比较告警,原因:专业网管存在部分omc告警同步失败等原因,如果不限制omc范围,则会出现集中故障明显会多很多告警的情况
  23. select listagg(omc_id,',') within group(order by omc_id) into v_omcList
  24. from (
  25. select distinct d.omc_id
  26. from fm_sync_nms_detail d
  27. where d.report_time=v_report_time
  28. and d.nms_name=v_nms_name
  29. );
  30. --按配置表中需要比对的告警项,逐项与集中故障告警进行比较
  31. for cur in (select synctype,titles,device_key,device_value from fm_sync_config where specialty=v_specialty order by order_desc)
  32. loop
  33. dbms_output.put_line(cur.synctype);
  34. -- 标识一致的告警,活动库中对比
  35. update fm_sync_nms_detail d set d.compare_type_jzgz='集中故障与'||v_nms_name||'一致',
  36. (d.nms_time,d.jzgz_time,d.event_id,d.construct_alarm_flag,d.city)=(select e.ems_time,e.first_occurrence_time,e.event_id,e.construct_alarm_flag,e.city from fm_alarm e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 and rownum=1)
  37. where d.report_time=v_report_time
  38. and d.nms_name=v_nms_name
  39. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  40. and exists (select 1 from fm_alarm e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 /*and e.ne_time=d.ne_time*/)
  41. and d.nms_alarm_id is not null
  42. and d.compare_type_jzgz is null
  43. ;
  44. commit;
  45. update fm_sync_nms_detail d set d.compare_type_jzgz='集中故障与'||v_nms_name||'一致',
  46. (d.nms_time,d.jzgz_time,d.event_id,d.construct_alarm_flag,d.city)=(select e.ems_time,e.first_occurrence_time,e.event_id,e.construct_alarm_flag,e.city from fm_alarm_permanent e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 and rownum=1)
  47. where d.report_time=v_report_time
  48. and d.nms_name=v_nms_name
  49. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  50. and exists (select 1 from fm_alarm_permanent e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 /*and e.ne_time=d.ne_time*/)
  51. and d.nms_alarm_id is not null
  52. and d.compare_type_jzgz is null
  53. ;
  54. commit;
  55. update fm_sync_nms_detail d set d.compare_type_jzgz='集中故障与'||v_nms_name||'一致',
  56. (d.nms_time,d.jzgz_time,d.event_id,d.construct_alarm_flag,d.city)=(select e.ems_time,e.first_occurrence_time,e.event_id,e.construct_alarm_flag,e.city from fm_alarm_recent e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 and rownum=1)
  57. where d.report_time=v_report_time
  58. and d.nms_name=v_nms_name
  59. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  60. and exists (select 1 from fm_alarm_recent e where e.ems_alarm_id=d.nms_alarm_id and e.is_derivative=0 /*and e.ne_time=d.ne_time*/)
  61. and d.nms_alarm_id is not null
  62. and d.compare_type_jzgz is null
  63. ;
  64. commit;
  65. -- 标识一致的告警,历史库中对比
  66. update fm_sync_nms_detail d set d.compare_type_jzgz='集中故障与'||v_nms_name||'一致',
  67. (d.nms_time,d.jzgz_time,d.event_id,d.construct_alarm_flag,d.city)=(select e.ems_time,e.first_occurrence_time,e.event_id,e.construct_alarm_flag,e.city from fm_alarm_history e where e.ems_alarm_id=d.nms_alarm_id and e.ne_time=d.ne_time and e.is_derivative=0 and rownum=1)
  68. where d.report_time=v_report_time
  69. and d.nms_name=v_nms_name
  70. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  71. and exists (select 1 from fm_alarm_history e where e.ems_alarm_id=d.nms_alarm_id and e.ne_time=d.ne_time and e.is_derivative=0)
  72. and d.nms_alarm_id is not null
  73. and d.compare_type_jzgz is null
  74. ;
  75. commit;
  76. -- 标识集中故障少的告警 筛选nms_alarm_id不为空的数据,发现有标识为:OMC与专业网管一致,但专业网管流水号为空的情况
  77. update fm_sync_nms_detail d set d.compare_type_jzgz='集中故障比'||v_nms_name||'少'
  78. where d.report_time=v_report_time
  79. and d.nms_name=v_nms_name
  80. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  81. --and not exists (select 1 from fm_alarm e where e.ems_alarm_id=d.nms_alarm_id /*and e.ne_time=d.ne_time*/)
  82. --and not exists (select 1 from fm_alarm_recent e where e.ems_alarm_id=d.nms_alarm_id /*and e.ne_time=d.ne_time*/)
  83. --and not exists (select 1 from fm_alarm_history e where e.ems_alarm_id=d.nms_alarm_id and e.ne_time=d.ne_time)
  84. and d.nms_alarm_id is not null
  85. and d.compare_type_jzgz is null
  86. ;
  87. commit;
  88. -- 写入集中故障多的告警,按配置表中设置条件,以及同步成功的omc列表
  89. v_sql:='insert into fm_sync_nms_detail(
  90. report_id,
  91. report_time,
  92. omc_id,
  93. ne_name,
  94. nms_alarm_id,
  95. omc_alarm_id,
  96. omc_alarm_id2,
  97. title,
  98. ne_time,
  99. vendor,
  100. compare_type,
  101. nms_name,
  102. compare_type_jzgz,
  103. event_id
  104. )
  105. select
  106. to_char(:v_report_time,''yyyymmddhh24miss'') report_id,
  107. :v_report_time,
  108. e.ems_id omc_id,
  109. e.ne_name,
  110. e.ems_alarm_id nms_alarm_id,
  111. e.omc_alarm_id,
  112. null omc_alarm_id2,
  113. e.title,
  114. e.ne_time,
  115. e.vendor,
  116. null compare_type,
  117. ''集中故障'' nms_name,
  118. :x1 compare_type_jzgz,
  119. event_id
  120. from fm_alarm e
  121. where e.ne_time<=:v_report_time
  122. and e.is_cleared=0
  123. and e.specialty=:x2
  124. and e.title in (select * from table(STR2VARLIST_NEW(:v_titles)))
  125. and e.ems_id in (select * from table(STR2VARLIST_NEW(:v_omc)))
  126. and not exists (select 1 from fm_sync_nms_detail d where d.report_time=:v_report_time and d.nms_alarm_id=e.ems_alarm_id /*and d.ne_time=e.ne_time*/)
  127. ';
  128. --标识告警是哪一组
  129. if cur.device_key is not null and cur.device_value is not null
  130. then
  131. v_sql:=v_sql || ' and cur.device_key =' || '''cur.device_value''';
  132. update fm_sync_nms_detail d set d.synctype=cur.synctype
  133. where d.report_time=v_report_time
  134. and d.nms_name in (v_nms_name,'集中故障')
  135. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  136. and d.synctype is null
  137. and d.ne_type=cur.device_value
  138. ;
  139. commit;
  140. else
  141. update fm_sync_nms_detail d set d.synctype=cur.synctype
  142. where d.report_time=v_report_time
  143. and d.nms_name in (v_nms_name,'集中故障')
  144. and d.title in (select * from table(STR2VARLIST_NEW(cur.titles)))
  145. and d.synctype is null
  146. ;
  147. commit;
  148. end if;
  149. -- 传输网管同步告警的时间点是不固定的,所有暂时不能统计集中故障多的告警
  150. /*
  151. if v_nms_name='话务网管'
  152. then
  153. execute immediate v_sql using v_report_time,v_report_time,'集中故障比'||v_nms_name||'多',v_report_time,v_specialty,cur.titles,v_omcList,v_report_time;
  154. end if;
  155. */
  156. if v_nms_name in ('话务网管','传输网管')
  157. then
  158. --delete from fm_sync_report d where d.report_time=v_report_time and d.sync_type=cur.synctype;
  159. insert into fm_sync_report (report_id,
  160. report_time,
  161. sync_type,
  162. omc_id,
  163. vendor,
  164. network_type,
  165. omc_alarm_total,
  166. nms_alarm_total,
  167. omc2nms_more,
  168. omc2nms_less,
  169. omc2nms_same,
  170. omc2nms_same_rate,
  171. omc2nms_reason,
  172. jzgz_alarm_total,
  173. nms2jzgz_more,
  174. nms2jzgz_less,
  175. nms2jzgz_same,
  176. nms2jzgz_same_rate,
  177. nms2jzgz_reason,
  178. project_alarm)
  179. select d.report_id,
  180. d.report_time,
  181. d.synctype,
  182. d.omc_id,
  183. d.vendor,
  184. d.network_type,
  185. sum(case when d.compare_type in('OMC比'||v_nms_name||'多','OMC与'||v_nms_name||'一致') then 1 else 0 end) omc_alarm_total,
  186. sum(case when d.compare_type in('OMC比'||v_nms_name||'少','OMC与'||v_nms_name||'一致') then 1 else 0 end) nms_alarm_total,
  187. sum(case when d.compare_type='OMC比'||v_nms_name||'多' then 1 else 0 end ) omc2nms_more,
  188. sum(case when d.compare_type='OMC比'||v_nms_name||'少' then 1 else 0 end ) omc2nms_less,
  189. sum(case when d.compare_type='OMC与'||v_nms_name||'一致' then 1 else 0 end ) omc2nms_same,
  190. decode(sum(case when d.compare_type in('OMC比'||v_nms_name||'多','OMC与'||v_nms_name||'一致') then 1 else 0 end),0,100,round(100*sum(case when d.compare_type='OMC与'||v_nms_name||'一致' then 1 else 0 end )/sum(case when d.compare_type in('OMC比'||v_nms_name||'多','OMC与'||v_nms_name||'一致') then 1 else 0 end),2)) omc2nms_same_rate,
  191. null omc2nms_reason,
  192. sum(case when d.compare_type_jzgz in('集中故障比'||v_nms_name||'多','集中故障与'||v_nms_name||'一致') and d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') then 1 else 0 end ) jzgz_alarm_total,
  193. sum(case when d.compare_type_jzgz='集中故障比'||v_nms_name||'少' and d.compare_type in('OMC比'||v_nms_name||'少','OMC与'||v_nms_name||'一致') then 1 else 0 end ) nms2jzgz_more,
  194. sum(case when d.compare_type_jzgz='集中故障比'||v_nms_name||'多' then 1 else 0 end ) nms2jzgz_less,
  195. sum(case when d.compare_type_jzgz='集中故障与'||v_nms_name||'一致' and d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') then 1 else 0 end ) nms2jzgz_same,
  196. decode(sum(case when d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') and d.nms_alarm_id is not null then 1 else 0 end ),0,100,round(100*sum(case when d.compare_type_jzgz='集中故障与'||v_nms_name||'一致' and d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') then 1 else 0 end )/sum(case when d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') and d.nms_alarm_id is not null then 1 else 0 end ),2)) nms2jzgz_same_rate,
  197. null nms2jzgz_reason,
  198. sum(case when d.compare_type_jzgz in('集中故障比'||v_nms_name||'多','集中故障与'||v_nms_name||'一致') and d.compare_type in ('OMC与'||v_nms_name||'一致','OMC比'||v_nms_name||'少') and construct_alarm_flag=1 then 1 else 0 end ) jzgz_alarm_total
  199. from fm_sync_nms_detail d
  200. where d.report_time=v_report_time and d.synctype=cur.synctype
  201. and nms_name=v_nms_name
  202. and not exists (select 1 from fm_sync_report d1 where d1.report_time=d.report_time and d1.sync_type=d.synctype and d1.omc_id=d.omc_id)
  203. group by d.report_id,d.report_time,d.synctype,d.omc_id,d.vendor,d.network_type;
  204. commit;
  205. end if;
  206. if v_nms_name in ('传输网管')
  207. then
  208. -- alter by dufs 2018-9-11 针对PON网管,采集结果为空的情况,增加处理逻辑
  209. insert into fm_sync_report (report_id,
  210. report_time,
  211. sync_type,
  212. omc_id,
  213. vendor,
  214. omc_alarm_total,
  215. nms_alarm_total,
  216. omc2nms_more,
  217. omc2nms_less,
  218. omc2nms_same,
  219. omc2nms_same_rate,
  220. omc2nms_reason,
  221. jzgz_alarm_total,
  222. nms2jzgz_more,
  223. nms2jzgz_less,
  224. nms2jzgz_same,
  225. nms2jzgz_same_rate,
  226. nms2jzgz_reason
  227. )
  228. select distinct d.report_id,
  229. d.report_time,
  230. 'OLT断站' synctype,
  231. d.omc_id,
  232. null,
  233. null,
  234. null,
  235. null,
  236. null,
  237. null,
  238. 100,
  239. null,
  240. null,
  241. null,
  242. null,
  243. null,
  244. 100,
  245. null
  246. from fm_sync_nms_detail d
  247. where d.report_time=v_report_time and d.compare_type='空数据'
  248. and nms_name=v_nms_name
  249. and not exists (select 1 from fm_sync_report d1 where d1.report_time=d.report_time and d1.sync_type='OLT断站' and d1.omc_id=d.omc_id)
  250. and exists (select 1 from rm_trans_ems e where d.omc_id=e.objectid_nms and e.remark like 'PON%')
  251. ;
  252. commit;
  253. update fm_sync_report r set city=(select e.regionname from rm_trans_ems e where r.omc_id=e.objectid_nms and rownum=1)
  254. where r.report_time=v_report_time and r.sync_type=cur.synctype
  255. and exists (select e.regionname from rm_trans_ems e where r.omc_id=e.objectid_nms )
  256. ;
  257. commit;
  258. end if;
  259. --更新OMC覆盖地市情况
  260. update fm_sync_report r set r.cover_area=(select e.cover_area from fm_sync_omc e where r.omc_id=e.omc_id and rownum=1)
  261. where r.report_time=v_report_time and r.sync_type=cur.synctype
  262. and exists (select e.cover_area from fm_sync_omc e where r.omc_id=e.omc_id )
  263. ;
  264. commit;
  265. commit;
  266. end loop;
  267. --更新集中故障event_id
  268. /*
  269. update fm_sync_nms_detail d set d.event_id=(select d.event_id from fm_alarm e where e.ems_alarm_id=d.nms_alarm_id and e.ne_time=d.ne_time and rownum=1)
  270. where d.report_time=v_report_time
  271. and d.nms_name =v_nms_name
  272. and d.compare_type_jzgz='集中故障与'||v_nms_name||'一致'
  273. and d.event_id is null;
  274. update fm_sync_nms_detail d set d.event_id=(select d.event_id from fm_alarm_history e where e.ems_alarm_id=d.nms_alarm_id and e.ne_time=d.ne_time and rownum=1)
  275. where d.report_time=v_report_time
  276. and d.nms_name =v_nms_name
  277. and d.compare_type_jzgz='集中故障与'||v_nms_name||'一致'
  278. and d.event_id is null;
  279. commit;
  280. */
  281. end;
  282. BEGIN
  283. case when v_nms='PN'
  284. then
  285. select count(*),max(report_time) into v_cnt,v_report_time
  286. from fm_sync_nms_detail_tp_pn tp
  287. where tp.nms_name='话务网管'
  288. and not exists (select 1 from fm_sync_nms_detail d where tp.report_time=d.report_time and tp.nms_alarm_id=d.nms_alarm_id);
  289. -- select count(*),max(report_time) into v_cnt,v_report_time from fm_sync_nms_detail_tp tp;
  290. if v_cnt = 0
  291. then
  292. dbms_output.put_line('not find data.');
  293. return;
  294. elsif v_report_time is null
  295. then
  296. dbms_output.put_line('report_time is null.');
  297. return;
  298. end if;
  299. --送的全量告警,没有做过滤,这里通过已配置的告警标题,过滤出需要的告警
  300. for cur_title in (select titles from fm_sync_config where specialty in('话务网','动环网') order by order_desc)
  301. loop
  302. insert into fm_sync_nms_detail(
  303. report_id,
  304. report_time,
  305. omc_id,
  306. ne_name,
  307. nms_alarm_id,
  308. omc_alarm_id,
  309. omc_alarm_id2,
  310. title,
  311. ne_time,
  312. vendor,
  313. compare_type,
  314. omc_time,
  315. ne_type,
  316. network_type,
  317. nms_name
  318. )
  319. select
  320. distinct
  321. to_char(report_time,'yyyymmddhh24miss') report_id,
  322. report_time,
  323. omc_id,
  324. ne_name,
  325. nms_alarm_id,
  326. omc_alarm_id,
  327. omc_alarm_id2,
  328. title,
  329. ne_time,
  330. m.enum_label vendor,
  331. compare_type,
  332. omc_time,
  333. m2.enum_label ne_type,
  334. case when m2.enum_label in ('CELL','BTS','BSC','UTRANCELL','NODEB','RNC') then '2G/3G'
  335. when m2.enum_label in ('EUTRANCELL','ENodeB') then '4G'
  336. when omc_id in ('740','1750') then '动环网'
  337. else '核心网'
  338. end network_type,
  339. nms_name
  340. from fm_sync_nms_detail_tp_pn tp
  341. left join enum m on m.enum_value=tp.vendor and m.enum_key='FM_COLLECT_VENDOR'
  342. left join enum m2 on m2.enum_value=tp.ne_type and m2.enum_key='FM_COLLECT_NETYPE'
  343. where exists (select 1 from table(STR2VARLIST_NEW(cur_title.titles)) t where tp.title=t.column_value)
  344. and not exists (select 1 from fm_sync_nms_detail d where tp.report_time=d.report_time and tp.nms_alarm_id=d.nms_alarm_id)
  345. and not exists (select 1 from fm_sync_nms_detail d where d.report_time=tp.report_time and tp.omc_id=d.omc_id and tp.omc_alarm_id=d.omc_alarm_id)
  346. ;
  347. commit;
  348. end loop;
  349. execute immediate 'truncate table fm_sync_nms_detail_tp_tn';
  350. FM_SYNC_NMS_COMPARE_PRD(v_report_time,'话务网管','话务网');
  351. FM_SYNC_NMS_COMPARE_PRD(v_report_time,'话务网管','动环网');
  352. when v_nms='TN'
  353. then
  354. -- 传输网管同步告警的时间点是不固定的,每天出一次,所有把报表时间归整到当天0点整
  355. select count(*),trunc(max(report_time)) into v_cnt,v_report_time
  356. from fm_sync_nms_detail_tp_tn tp
  357. --where tp.nms_name='传输网管'
  358. -- and not exists (select 1 from fm_sync_nms_detail d where d.report_time=trunc(tp.report_time) and tp.nms_alarm_id=d.nms_alarm_id)
  359. ;
  360. if v_cnt = 0
  361. then
  362. dbms_output.put_line('not find data.');
  363. return;
  364. elsif v_report_time is null
  365. then
  366. dbms_output.put_line('report_time is null.');
  367. return;
  368. end if;
  369. --update fm_sync_nms_detail_tp_tn set compare_type='OMC与传输网管一致' where compare_type='传输网管与OMC一致';
  370. --update fm_sync_nms_detail_tp_tn set compare_type='OMC比传输网管少' where compare_type='传输网管比OMC多';
  371. --update fm_sync_nms_detail_tp_tn set compare_type='OMC比传输网管多' where compare_type='传输网管比OMC少';
  372. for cur_t in (select report_time from (select trunc(report_time) report_time,count(*) from fm_sync_nms_detail_tp_tn tp group by trunc(report_time) order by 2 desc) where rownum=1
  373. --where tp.nms_name='传输网管'
  374. -- and not exists (select 1 from fm_sync_nms_detail d where d.report_time=trunc(tp.report_time) and tp.nms_alarm_id=d.nms_alarm_id)
  375. )
  376. loop
  377. --传输网管送的全量告警,没有做过滤,这里通过已配置的告警标题,过滤出需要的告警
  378. for cur_title in (select titles from fm_sync_config where specialty='传输网' order by order_desc)
  379. loop
  380. -- 传输网管同步告警的时间点是不固定的,所有暂时把报表时间归整到下一个整点
  381. insert into fm_sync_nms_detail(
  382. report_id,
  383. report_time,
  384. omc_id,
  385. ne_name,
  386. nms_alarm_id,
  387. omc_alarm_id,
  388. omc_alarm_id2,
  389. title,
  390. ne_time,
  391. vendor,
  392. compare_type,
  393. nms_name,
  394. ne_type,
  395. omc_time
  396. )
  397. select
  398. to_char(trunc(report_time),'yyyymmddhh24miss') report_id,
  399. trunc(report_time) report_time,
  400. omc_id,
  401. ne_name,
  402. nms_alarm_id,
  403. omc_alarm_id,
  404. omc_alarm_id2,
  405. title,
  406. ne_time,
  407. vendor,
  408. case when compare_type='传输网管与OMC一致' then 'OMC与传输网管一致'
  409. when compare_type='传输网管比OMC多' then 'OMC比传输网管少'
  410. when compare_type='传输网管比OMC少' then 'OMC比传输网管多'
  411. else compare_type
  412. end compare_type,
  413. nms_name,
  414. ne_type,
  415. omc_time
  416. from fm_sync_nms_detail_tp_tn tp
  417. where trunc(report_time)=cur_t.report_time
  418. and nms_name='传输网管'
  419. and exists (select 1 from table(STR2VARLIST_NEW(cur_title.titles)) t where tp.title=t.column_value)
  420. and (
  421. not exists (select 1 from fm_sync_nms_detail d where d.report_time=trunc(tp.report_time) and tp.nms_alarm_id=d.nms_alarm_id)
  422. or tp.nms_alarm_id is null and not exists (select 1 from fm_sync_nms_detail d where d.report_time=trunc(tp.report_time) and tp.omc_id=d.omc_id and tp.omc_alarm_id=d.omc_alarm_id)
  423. )
  424. ;
  425. commit;
  426. end loop;
  427. update fm_sync_nms_detail d set (d.city,d.ems_type,d.network_type)=(select e.regionname,e.remark,case when e.remark like 'PON%' then '家宽' else '传输' end network_type from rm_trans_ems e where d.omc_id=e.objectid_nms and rownum=1)
  428. where d.report_time=cur_t.report_time and d.nms_name='传输网管'
  429. and exists (select 1 from rm_trans_ems e where d.omc_id=e.objectid_nms )
  430. ;
  431. commit;
  432. FM_SYNC_NMS_COMPARE_PRD(cur_t.report_time,'传输网管','传输网');
  433. end loop;
  434. execute immediate 'truncate table fm_sync_nms_detail_tp_tn';
  435. else
  436. dbms_output.put_line(v_nms||' is not support.');
  437. end case;
  438. exception when others then
  439. v_logInfo := ',SQL-error code:' || sqlcode||sqlerrm;
  440. v_logInfo := substr(v_logInfo, 0, 1999);
  441. execute immediate 'insert into prd_exec_log(prd,what,logtype,loginfo) values (:x1,:x2,:x3,:x4)'
  442. using v_prd,v_prd,'ERROR',v_loginfo;
  443. commit;
  444. END;
  445. /