使用zabbix自动发现规则监控oracle分区表的分区键的合法

一、 创建从数据库查询原始数据脚本

  1. 编写脚本query_table.sh

vim query_table.sh

#!/bin/bash
temp_outfile="/tmp/table.source"
outfile="/tmp/table.txt"
source /home/oracle/.bash_profile

sqlplus -s zabbix/zabbix>${temp_outfile}<<EOF
col table_owner for a10
col table_name for a10
col partition_name for a10
col high_value for a150
set long 999999
set linesize 200
set pagesize 10000
set heading off
set feedback off
set termout off
set echo off
select rn,table_owner,table_name,partition_name,high_value from 
(select table_owner,table_name,partition_name,high_value,row_number()over(partition by table_owner,table_name order by partition_position desc) as rn from dba_tab_partitions where interval<>'YES' and table_owner not in ('SYS','SYSTEM','AUDSYS','MDSYS'))
where rn<3 order by 2,3,1;
quit;
EOF

sed -i '/^$/d' $temp_outfile

function high_value_convert(){
if [[ "$1" =~ [0-9]+-[0-9]+-[0-9]+  ]];then
 echo  $(echo "$1"|perl -pe "s/.*?([0-9]+)-([0-9]+)-([0-9]+).*/\1\2/")
elif [[ "$1" =~ [0-9]{8} ]]||[[ "$1" =~ [0-9]{6} ]];then
 echo $(echo "$1"|perl -pe "s/.*?([0-9]{6}).*/\1/")
fi
}

function get_result(){
current_date=$(date '+%Y%m')
if [ $(high_value_convert "$var_high_value") -le "$current_date" ];then
echo $line
fi
}


flag_id=0
while read line 
do
var_high_value=$(echo $line|awk '{for(i=5;i<=NF;i++){if(i<NF){printf $i}else{print $i}}}')
var_rn=$(echo $line|awk '{print $1}')
if [[ "$var_high_value" == "MAXVALUE" ]];then
flag_id=$((flag_id+1))
continue
elif [[ "$var_high_value" != "MAXVALUE" ]]&&[[ "$var_rn" == "1" ]];then
get_result 
elif [[ "$var_high_value" != "MAXVALUE" ]]&&[[ "$var_rn" == "2" ]]&&[[ "$flag_id" == "1" ]];then
get_result
flag_id=$((flag_id-1))
fi
done<$temp_outfile>$outfile

rm -fr $temp_outfile

sed -i 's/^[1-2]//' $outfile

chmod a+x /home/oracle/shellscripts/query_table.sh

  1. 脚本执行后的截图
    在这里插入图片描述

  2. 将脚本添加到crontab中
    crontabl -e

*/1 * * * * /home/oracle/shellscripts/query_table.sh > /home/oracle/shellscripts/oracle_cron.sh.log 2>&1

二、 创建自定义发现规则脚本

创建生成json数据的脚本
vim /etc/zabbix/scripts/oracle_discovery_partition.sh

#!/bin/bash
table_name=(`cat /tmp/table.txt|awk '{print $1"."$2}'`)
length=${#table_name[@]}
 
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
    printf "\n\t\t{"
    printf "\"{#TABLE_NAME}\":\"${table_name[$i]}\"}"
    if [ $i -lt $[$length-1] ];then
        printf ","
    fi
done
    printf "\n\t]\n"
printf "}\n"

chmod a+x /etc/zabbix/scripts/oracle_discovery_partition.sh
执行结果如图
在这里插入图片描述

三、 创建自定义监控原型脚本

vim /etc/zabbix/scripts/oracle_check_partition.sh

#!/bin/bash
TABLE_NAME="$1"
table_owner=${TABLE_NAME%.*}
table_name=${TABLE_NAME#*.}
SOURCE_DATA=/tmp/table.txt
grep "\b${table_owner}\b" ${SOURCE_DATA} |grep "\b${table_name}\b"

chmod a+x /etc/zabbix/scripts/oracle_check_partition.sh
测试脚本

四、 配置zabbix agent端

vim /etc/zabbix/zabbix_agentd.d/userparameter_oracle.conf

UserParameter=table.discovery,/etc/zabbix/scripts/oracle_discovery_partition.sh
UserParameter=table.check[*],/etc/zabbix/scripts/oracle_check_partition.sh "$1"

重启agent服务
systemctl restart zabbix-agent

在zabbix server端测试键值配置是否正确

zabbix_get -s 192.168.1.137 -k "table.discovery"
 
zabbix_get -s 192.168.1.137 -k "table.check[TXB.T01]"

在这里插入图片描述
在这里插入图片描述

五、 在zabbix中web界面配置

  1. 在被监控的主机中创建自动发现规则
    在这里插入图片描述

  2. 在自动发现规则下创建监控原型
    在这里插入图片描述

  3. 在监视中查看最新数据展示

在这里插入图片描述

六、 oracle分区表测试数据模版

select owner,table_name from dba_tables where owner='TXB';
select 'drop table '||owner||'.'||table_name||';' from dba_tables where owner='TXB';

当分区键是日期类型时候
create table txb.t01
(
    id integer primary key,
    retail_date date,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(to_date('2024-01-01','yyyy-mm-dd')) tablespace USERS,
   partition par_02 values less than(to_date('2024-02-01','yyyy-mm-dd')) tablespace USERS
);

create table txb.t02
(
    id integer primary key,
    retail_date date,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(to_date('2024-01-01','yyyy-mm-dd')) tablespace USERS,
   partition par_02 values less than(to_date('2024-04-01','yyyy-mm-dd')) tablespace USERS
);

create table txb.t03
(
    id integer primary key,
    retail_date date,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(to_date('2024-01-01','yyyy-mm-dd')) tablespace USERS,
   partition par_02 values less than(to_date('2024-03-01','yyyy-mm-dd')) tablespace USERS,
   partition par_03 values less than (maxvalue) tablespace USERS
);

create table txb.t04
(
    id integer primary key,
    retail_date date,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(to_date('2024-01-01','yyyy-mm-dd')) tablespace USERS,
   partition par_02 values less than(to_date('2024-05-01','yyyy-mm-dd')) tablespace USERS,
   partition par_03 values less than (maxvalue) tablespace USERS
);

create table txb.t05
(
    id integer primary key,
    retail_date date,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(to_date('20240201','YYYYMMDD')) tablespace USERS,
   partition par_02 values less than(to_date('20240301','YYYYMMDD')) tablespace USERS
);

范围分区分区键数据类型是数字
create table txb.t06
(
    id integer primary key,
    retail_date number,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(20240101) tablespace USERS,
   partition par_02 values less than(20240301) tablespace USERS
);

create table txb.t07
(
    id integer primary key,
    retail_date number,
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than(20240101) tablespace USERS,
   partition par_02 values less than(20240401) tablespace USERS
);

当分区键的数据类型是字符串的时候
create table txb.t08
(
    id integer primary key,
    retail_date varchar2(50),
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than('20240101') tablespace USERS,
   partition par_02 values less than('20240301') tablespace USERS
);

create table txb.t09
(
    id integer primary key,
    retail_date varchar2(50),
    ware_name varchar2(50)
)
partition by range(retail_date)
(
   partition par_01 values less than('20240101') tablespace USERS,
   partition par_02 values less than('20240328') tablespace USERS
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/478983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle数据库——单行函数1(字符函数和数字函数)

单行函数 操作数据对象接受参数返回一个结果只对一行进行变换每行返回一个结果可以转换数据类型可以嵌套参数可以是一列或一个值一、字符函数 1.大小写控制函数

使用OpenCV将图片切割成小图 及图片拼接(附python代码)

文章目录 1. 图片切割2. 图片拼接3. AcknowledgmentReference 要分割的图片如下&#xff1a; 1. 图片切割 思路也比较简单&#xff0c;代码注释比较详细&#xff0c;看代码就行。 from cv2 import cv2 import numpy as np import ospic_path .jpg # 分割的图片的位置 pic_ta…

离散型工业生产制造MES管理系统解决方案

一、核心优势 1、业务场景高适配 ①配置好程度高,可适应不同的业务场景。 ②业务功能灵活可配,可根据客户需求及时调整。 2、功能覆盖全周期 产品功能覆盖面广,能够实现从来料管理到销售出库整个产品生命周期管控。 3、触点互联降成本 能将相关的设备集成至MES中来,实现与设…

【Web】浅聊Jackson序列化getter的利用——POJONode

目录 核心速览 原理分析 EXP TemplatesImpl利用 SignedObject利用 核心速览 writeValueAsString是jackson序列化自带的入口&#xff0c;在调用该方法的过程中将会通过遍历的方法将bean对象中的所有的属性的getter方法进行调用 下面介绍如下利用链&#xff1a; BadAttrib…

《逆水寒》“公费追星”被骂上热搜,玩家为何如此抗拒剧游联动?

游戏行业最近真是风波不断。 《逆水寒》手游因为和武侠剧《莲花楼》深入联动而遭到玩家抵制&#xff0c;网易游戏测评总监被质疑“公费追星”&#xff0c;还波及到了成毅、陈都灵等多位演员。 尤其是《莲花楼》的男主角成毅&#xff0c;遭到大量《逆水寒》手游玩家的吐槽调侃…

【JS】for in可能遇到的问题

问题一&#xff1a;for in 打印属性顺序与定义顺序不一致 先来做一道题&#xff0c;请说出打印结果 const obj {a2: aaa,2: aaa,1: aaaa,a1: aaa, }for(let key in obj){console.log(key) }结果&#xff1a; 1 2 a2 a1 属性的书写顺序不一定就是对象遍历时的顺序。这涉及到…

消息队列—RabbitMQ如何保证消息可靠性?

1. 如何保证消息的可靠性&#xff1f; 先来看看我们的万年老图&#xff0c;从图上我们大概可以看出来一个消息会经历四个节点&#xff0c;只有保证这四个节点的可靠性才能保证整个系统的可靠性。 生产者发出后保证到达了MQ。MQ收到消息保证分发到了消息对应的Exchange。Exchan…

鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)

如何申请key 1、创建新应用 进入[控制台]&#xff0c;创建一个新应用。如果您之前已经创建过应用&#xff0c;可直接跳过这个步骤。 2、添加新Key 在创建的应用上点击"添加新Key"按钮&#xff0c;在弹出的对话框中&#xff0c;依次&#xff1a;输入应用名名称&…

FMR-NET:用于弱光图像增强的快速多尺度残差网络(已更新三类预训练模型)

之前上传的代码存在一定问题&#xff0c;目前已重新更新并上传了三类新的预训练模型供大家使用 paper Github CSDN下载 动机&#xff1a; 不按摘要来形式来写&#xff0c;本文的动机在于一个&#xff0c;减少模型参数量&#xff0c;加快运行速度&#xff0c;以及取得…

深度学习500问——Chapter04:经典网络解读(1)

文章目录 4.1 LeNet-5 4.1.1 模型介绍 4.1.2 模型结构 4.1.3 模型特性 4.2 AlexNet 4.2.1 模型介绍 4.2.2 模型结构 4.2.3 模型特性 4.3 ZFNet 4.3.1 模型介绍 4.3.2 模型结构 4.3.3 模型特性 4.4 Network in Network 4.4.1 模型介绍 4.4.2 模型结构 4.4.3 模型特性 4.1 LeNet-…

VBA_MF系列技术资料1-405

MF系列VBA技术资料1-405 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

【云呐】固定资产管理系统都有哪些内容

固定资产管理是企业经营过程中一项非常重要的任务。它涉及到公司的核心资产&#xff0c;包括土地、建筑物、设备、车辆等。为了有效地管理这些资产&#xff0c;许多企业选择使用固定资产管理系统。那么&#xff0c;固定资产管理系统的内容是什么呢&#xff1f;本文将为您进行全…

美国对苹果提起反垄断诉讼;周鸿祎:不转向 AI 手机的厂商会成下一个「诺基亚」丨 RTE 开发者日报 Vol.170

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」…

QML无边框窗口(可拖动)

一、实现原理 在 QML 中实现无边框且可以拖动的窗口&#xff0c;要比 Qt 和 PyQt 简单的多。只要隐藏掉窗体、去掉标题栏&#xff0c;然后用一个和原窗体相同大小的 Rectangle 作为新窗体。 最后在新窗体上再加一个小一些的 Rectangle 作为标题栏&#xff0c;在标题栏中放一个 …

Modbus串口通信

Modbus ASCII与RTU? 发送报文的方式不一样 ASCII:将数据转换成1 6进制ASCII码再发送 RTU:直接发送原始报文当然也是进制 Modbus-与RS485有何区别? Modbus是通信协议 RS485电气接口规范 Modbus软件 RS485硬件 比如高速公路与汽车的关系&#xff0c;TCP/IP与网线…

FreeCad-0.19源码For Windows编译分享

前言 最近花了不少时间来研究这个FreeCad开源代码的编译&#xff0c;一是查看GitHub上的安装介绍&#xff0c;二是查看各位道友们踩坑安装的心路历程&#xff0c;由于比较信息零碎&#xff0c;也是跟着踩了不少的坑。。。为了帮助后人快速编译通过&#xff0c;节省时间决定先梳…

发展的挺快的Rust

C 可能在将来会逐步的退出历史舞台 Rust 在linux 上出现的频次越来越多了 新的语言和重构带来了更方便快捷的体验 好玩的命令集合 https://github.com/ibraheemdev/modern-unix.git 这速度&#xff0c;这花活儿

每个云渲染平台都说自己24小时客服,真的是这样吗?

我们平时经常看到很多云渲染平台说自己是7x24小时客服&#xff0c;随时找客服都能找到&#xff0c;真的是这样吗&#xff1f;其实不是的&#xff0c;很多云渲染平台根本没有24小时人工客服&#xff0c;哪他们的人工客服什么时候有呢&#xff1f;我们一起来看看。 1、 炫云 炫云…

分享购:社交电商新模式,购物省钱又赚钱的创新之道

分享购模式如今在网络世界中引起了广泛的讨论和关注&#xff0c;其独特的盈利方式更是吸引了大批用户的目光。那么&#xff0c;分享购究竟是什么呢&#xff1f; 分享购的核心亮点在于它巧妙地融合了各大主流电商平台&#xff0c;如淘宝、京东、拼多多等。用户在购物时无需改变原…

AcWing 3224. 画图 (BFS,Flood Fill,坐标变换)

用 ASCII 字符来画图是一件有趣的事情&#xff0c;并形成了一门被称为 ASCII Art 的艺术。 例如&#xff0c;下图是用 ASCII 字符画出来的 CSPRO 字样。 ..____.____..____..____...___.../.___/.___||.._.\|.._.\./._.\.|.|...\___.\|.|_).|.|_).|.|.|.||.|___.___).|..__/|.…