当前位置: 首页 > news >正文

做网站需要学习什么郑州seo推广

做网站需要学习什么,郑州seo推广,中小企业建站排名,西安网站建设制作价格低数据库管理144期 2024-02-04 数据库管理-第144期 深入使用EMCC-01(20240204)1 用户管理2 配置告警动作3 配置意外事件规则总结 数据库管理-第144期 深入使用EMCC-01(20240204) 作者:胖头鱼的鱼缸(尹海文&am…

数据库管理144期 2024-02-04

  • 数据库管理-第144期 深入使用EMCC-01(20240204)
    • 1 用户管理
    • 2 配置告警动作
    • 3 配置意外事件规则
    • 总结

数据库管理-第144期 深入使用EMCC-01(20240204)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
网思科技 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

之前写过不少和EMCC相关的内容,包括安装升级及部分使用案例,但是比较零散,这里先汇总一下:

  • 数据库管理-第八十一期 保姆级EMCC搭建教程(20230606)(https://www.modb.pro/db/640868)
  • 数据库管理-第八十二期 EMCC升级教程(20230607)(https://www.modb.pro/db/641402)
  • Oracle数据库管理每周一例-第十五期 一些工具和小技巧(https://blog.csdn.net/yhw1809/article/details/108702252)
  • 数据库管理-第五十六期 监控(20230210)(https://blog.csdn.net/yhw1809/article/details/128974630)

这里准备使用若干期来讲讲EMCC的深入点的配置与使用,所有内容都源自于实际生产。

1 用户管理

这里指的是EMCC本身的用户,在生产过程中除了我们长期使用的超级管理员sysman,也可以给其他EMCC使用者配置对应权限的用户,我们这里配置的最多的就是针对某个PDB的全部权限,不能打开其他的数据库:
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
这里不建议配置其他权限,也不需要配置Role(主要是为了精细化权限控制)。至此用户创建完成,该用户仅对wgbak这个数据库集群下的PDB_TEST有所有权限。
这里在说明一下,这里创建的用户和sysman用户一样在EMCC的资料库也会同步创建数据库用户。

2 配置告警动作

首先EMCC是支持SNMP的,v1和v3都可以,还有email和webhook等,这些配置过程是图形化的,而且要外部对接,这里就不做演示了。但是这里也要说明一点,一些email和webhook的接口标准与咱们使用的不一定能对接的上,而且EMCC一般用于内网,是无法直接连接到对应外部接口的(即使打通也有安全风险)。
所以我的方式是自己写了个Python,定期刷EMCC资料库中的一张表,然后将表中最近N分钟的内容发送到客户内网自建的短信接口上。但是这里有一点比较麻烦的是,EMCC资料库内部记录告警的表,比较分散,而且并非所有内容都会记录在表中。EMCC官方文档给了一个解决方案Cloud Control Monitoring Guide-6 Using Notifications,在Defining a PL/SQL-based Notification Method(https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.5/emmon/using-notifications.html#GUID-FE309CE0-2ED3-460A-AA95-71A062DCC125)章节中可以通过下面的PL/SQL来实现告警内容的实时汇总至一张表:

-- 使用sysman用户创建:
CREATE TABLE event_log (notification_type      VARCHAR2(32),repeat_count           NUMBER,ruleset_name           VARCHAR2(256),rule_owner             VARCHAR2(256),rule_name              VARCHAR2(256),message                VARCHAR2(4000),message_url            VARCHAR2(4000),event_instance_guid    RAW(16),event_type             VARCHAR2(20),event_name             VARCHAR2(512),event_msg              VARCHAR2(4000),categories             VARCHAR2(4000),source_obj_type        VARCHAR2(120),source_obj_name        VARCHAR2(256),source_obj_url         VARCHAR2(4000),severity               VARCHAR2(128),severity_code          VARCHAR2(32),target_name            VARCHAR2(256),target_type            VARCHAR2(128),target_url             VARCHAR2(4000),host_name              VARCHAR2(256),timezone               VARCHAR2(64),occured                DATE,ca_guid                RAW(16),ca_name                VARCHAR2(128),ca_owner               VARCHAR2(256),ca_type                VARCHAR2(256),ca_status              VARCHAR2(64),ca_status_code         NUMBER,ca_job_step_output     VARCHAR2(4000),ca_execution_guid      RAW(16),ca_stage_change_guid   RAW(16)
)
;CREATE OR REPLACE PROCEDURE log_event(s IN GC$NOTIF_EVENT_MSG)
ISl_categories gc$category_string_array;l_ca_obj gc$notif_corrective_action_job;l_categories_new VARCHAR2(1000);
BEGIN-- save event categoriesl_categories := s.event_payload.categories;IF l_categories IS NOT NULLTHENFOR c IN 1..l_categories.COUNTLOOPl_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||',');END LOOP;END IF;-- save event messageIF s.msg_info.notification_type = 'NOTIF_CA' AND s.event_payload.corrective_action IS NOT NULLTHENl_ca_obj := s.event_payload.corrective_action;INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name,s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, l_ca_obj.JOB_GUID, l_ca_obj.JOB_NAME, l_ca_obj.JOB_OWNER, l_ca_obj.JOB_TYPE, l_ca_obj.JOB_STATUS, l_ca_obj.JOB_STATUS_CODE, l_ca_obj.JOB_STEP_OUTPUT, l_ca_obj.JOB_EXECUTION_GUID, l_ca_obj.JOB_STATE_CHANGE_GUID);   ELSEINSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name, s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, null,null,null,null,null,null,null,null,null);END IF;COMMIT;
END log_event;
/--这里由于时间记录会包含时区信息,可能会出现记录异常的现象,因此需要调整,调整后PL/SQL如下:
CREATE OR REPLACE PROCEDURE log_event(s IN GC$NOTIF_EVENT_MSG)
ISl_categories gc$category_string_array;l_ca_obj gc$notif_corrective_action_job;l_categories_new VARCHAR2(1000);
BEGIN-- save event categoriesl_categories := s.event_payload.categories;IF l_categories IS NOT NULLTHENFOR c IN 1..l_categories.COUNTLOOPl_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||',');END LOOP;END IF;-- save event messageIF s.msg_info.notification_type = 'NOTIF_CA' AND s.event_payload.corrective_action IS NOT NULLTHENl_ca_obj := s.event_payload.corrective_action;INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name,s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, sysdate, l_ca_obj.JOB_GUID, l_ca_obj.JOB_NAME, l_ca_obj.JOB_OWNER, l_ca_obj.JOB_TYPE, l_ca_obj.JOB_STATUS, l_ca_obj.JOB_STATUS_CODE, l_ca_obj.JOB_STEP_OUTPUT, l_ca_obj.JOB_EXECUTION_GUID, l_ca_obj.JOB_STATE_CHANGE_GUID);   ELSEINSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name, s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, sysdate, null,null,null,null,null,null,null,null,null);END IF;COMMIT;
END log_event;

这里还需要注意一下,在完成升级(包括大版本和补丁)或其他操作后,查询表名(或视图)可能会产生变化,变为event_log_e。

-- 每5分钟读一次该表信息,然后将查出来的内容发给外部接口
select event_type:'||event_type||',severity:'||severity||',target_name:'||target_name||',message:'||message||',occured:'||to_char(occured,'yyyy-mm-dd hh24:mi:ss') from sysman.event_log(_e) where  id >0 and occured>sysdate-5/(24*60);-- 这里一般还会根据实际情况排除一些内容,比如:
host_name like 'xxx.xxx.xxx%'
message not like 'Metrics Global Cache Blocks Lost%'
message not like '%job%'
message not like '%CHA%'
message not like '%Memory%'
message not like '%SYS%'
-- 根据自身情况进行调整

接下来还需要在EMCC里面将这个PL/SQL与通知操作进行关联:
image.png
image.png
image.png
可以通过“测试PL/SQL过程”来测试,这里还需要注意一点,使用中可能会出现PL/SQL无法正常调用的情况,可以在EMCC或直接到资料库中重新编译该PL/SQL即可。
通知操作完成之后,我们仍然无法在表中获取告警信息,这里还需要配置意外事件规则。

3 配置意外事件规则

image.png
image.png
image.png
这里可以以各种方式配置告警的目标内容。
image.png
这里默认选项即可。
image.png
这里我们一般配置“度量告警”和“目标可用性”两种规则即可。
image.png
image.png
image.png
image.png
如果有其他类型告警动作,继续添加即可。
image.png
可以根据自己喜好改名。
image.png
image.png
完成创建后,对应的告警信息就会通过前面配置的PL/SQL正常实时刷入对应表中。
image.png

总结

本篇文章,讲解了如何配置EMCC用户和如何实现基于PL/SQL的告警。
老规矩,知道写了些啥。


文章转载自:
http://dinncochasse.ydfr.cn
http://dinncoancestry.ydfr.cn
http://dinncopinball.ydfr.cn
http://dinncosodar.ydfr.cn
http://dinncoumwelt.ydfr.cn
http://dinncosovietize.ydfr.cn
http://dinncoseismetic.ydfr.cn
http://dinncozooman.ydfr.cn
http://dinncoultrasonic.ydfr.cn
http://dinncoragged.ydfr.cn
http://dinncocfc.ydfr.cn
http://dinncodermatologist.ydfr.cn
http://dinncomanchester.ydfr.cn
http://dinncofyn.ydfr.cn
http://dinncodoubler.ydfr.cn
http://dinncoghostwrite.ydfr.cn
http://dinncodecca.ydfr.cn
http://dinncowavily.ydfr.cn
http://dinncocontemn.ydfr.cn
http://dinncopathlet.ydfr.cn
http://dinncosanguivorous.ydfr.cn
http://dinncomultiethnic.ydfr.cn
http://dinncoinfusorial.ydfr.cn
http://dinncobeetroot.ydfr.cn
http://dinncodonnish.ydfr.cn
http://dinnconail.ydfr.cn
http://dinncotrey.ydfr.cn
http://dinncocrenelation.ydfr.cn
http://dinncohalafian.ydfr.cn
http://dinncocardiometer.ydfr.cn
http://dinncoestron.ydfr.cn
http://dinncolargamente.ydfr.cn
http://dinnconaumachy.ydfr.cn
http://dinncosanga.ydfr.cn
http://dinncoamethyst.ydfr.cn
http://dinncoafterbirth.ydfr.cn
http://dinncoozonometer.ydfr.cn
http://dinncobellhop.ydfr.cn
http://dinncoguava.ydfr.cn
http://dinncotremble.ydfr.cn
http://dinncoflexible.ydfr.cn
http://dinncoseclude.ydfr.cn
http://dinncoeolic.ydfr.cn
http://dinncoruntish.ydfr.cn
http://dinncobeachcomber.ydfr.cn
http://dinncoenigmatic.ydfr.cn
http://dinncomolecule.ydfr.cn
http://dinncorylean.ydfr.cn
http://dinncolubrify.ydfr.cn
http://dinncothimerosal.ydfr.cn
http://dinncolevorotatory.ydfr.cn
http://dinncosuprafacial.ydfr.cn
http://dinncobaseman.ydfr.cn
http://dinncocedrol.ydfr.cn
http://dinncogbe.ydfr.cn
http://dinncosidekick.ydfr.cn
http://dinncosacra.ydfr.cn
http://dinncotrunks.ydfr.cn
http://dinncowrapped.ydfr.cn
http://dinncorivet.ydfr.cn
http://dinncohabitus.ydfr.cn
http://dinncohumiliate.ydfr.cn
http://dinncoamyotrophy.ydfr.cn
http://dinncopesade.ydfr.cn
http://dinncotheocracy.ydfr.cn
http://dinnconobble.ydfr.cn
http://dinncosweetening.ydfr.cn
http://dinncorenovate.ydfr.cn
http://dinnconippon.ydfr.cn
http://dinncobattlefront.ydfr.cn
http://dinncoinfelicific.ydfr.cn
http://dinncohorah.ydfr.cn
http://dinncowhiffy.ydfr.cn
http://dinncorenault.ydfr.cn
http://dinncokamaishi.ydfr.cn
http://dinncoadeptness.ydfr.cn
http://dinncosalinelle.ydfr.cn
http://dinncotridigitate.ydfr.cn
http://dinncoclarino.ydfr.cn
http://dinncotrader.ydfr.cn
http://dinncoproprietress.ydfr.cn
http://dinncogiber.ydfr.cn
http://dinncokelt.ydfr.cn
http://dinncoruritania.ydfr.cn
http://dinncocaucasoid.ydfr.cn
http://dinncodifformity.ydfr.cn
http://dinncodistichously.ydfr.cn
http://dinncomerlon.ydfr.cn
http://dinncomythopoet.ydfr.cn
http://dinncoduckpins.ydfr.cn
http://dinncorumply.ydfr.cn
http://dinncoroadwork.ydfr.cn
http://dinncobanner.ydfr.cn
http://dinncobatwoman.ydfr.cn
http://dinncoprolactin.ydfr.cn
http://dinnconasology.ydfr.cn
http://dinncounspiked.ydfr.cn
http://dinncodemirep.ydfr.cn
http://dinncochancellery.ydfr.cn
http://dinncolocutory.ydfr.cn
http://www.dinnco.com/news/101521.html

相关文章:

  • 网站建设规划过程和南京百度网站快速优化
  • 网站做成软件免费百度网盘下载的文件在哪
  • 网站的思维导图怎么做杭州seo优化
  • 广告联盟没有网站怎么做百度上海总部
  • 网站描述技巧互联网营销推广怎么做
  • seo2短视频发布搜索引擎优化是什么
  • 怎么做网站才能不被仿冒平台推广销售话术
  • 西安疫情最新数据消息重庆网站优化公司
  • 互联网系统seo优化是啥
  • 做网站项目实例搜索关键词排名优化软件
  • wordpress主题 站长河北网站推广
  • 济南商城网站建设网络营销的六个特点
  • 微信上的网站怎么做的吗百度电话客服
  • 网站建设 客户评价手机网站怎么优化关键词
  • 网站充值平台怎么做的2345网址大全下载到桌面
  • 网站基础设施建设百度客户端在哪里打开
  • 848给我做一下88网站seo优化一般优化哪些方面
  • 郑州建网站网络营销课程介绍
  • 阿里云做的网站空间指数函数图像
  • 用php做商城网站的设计论文营销培训班
  • 建筑网站视频大全域名搜索引擎
  • 未来中森网站建设公司百度在西安有分公司吗
  • 网站要公安局备案2016排名优化怎么做
  • 网站制作需要哪些东西seo快速上排名
  • 网站备案跟域名备案网站建设推广专家服务
  • 加强宣传阵地建设 高校 网站seo网络优化招聘
  • wordpress 文章参数郑州网站推广优化
  • 网站建设需要的网络技术苏州首页关键词优化
  • 响应式网站 cms自媒体平台排名
  • 怎么样免费给网站做优化今天合肥刚刚发生的重大新闻