使用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_profilesqlplus -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;
EOFsed -i '/^$/d' $temp_outfilefunction high_value_convert(){
if [[ "$1" =~ [0-9]+-[0-9]+-[0-9]+  ]];thenecho  $(echo "$1"|perl -pe "s/.*?([0-9]+)-([0-9]+)-([0-9]+).*/\1\2/")
elif [[ "$1" =~ [0-9]{8} ]]||[[ "$1" =~ [0-9]{6} ]];thenecho $(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>$outfilerm -fr $temp_outfilesed -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++))
doprintf "\n\t\t{"printf "\"{#TABLE_NAME}\":\"${table_name[$i]}\"}"if [ $i -lt $[$length-1] ];thenprintf ","fi
doneprintf "\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.mzph.cn/news/764470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法入门

简介 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。也就是首先选取局部最优&#xff0c;从局部最优推出全局最优。 举例…

【python开发】安装配置启动+数据库管理+表管理+数据行管理+python操作Mysql及相关安全的问题

Mysql入门 一、安装&启动1、安装2、测试3、设置和修改root密码 二、数据库管理1、内置客户端操作&#xff08;1&#xff09;查看当前所有的数据库(show databases);&#xff08;2&#xff09;创建数据库&#xff1a;create database learn&#xff08;数据库名&#xff09;…

北京中科富海低温科技有限公司确认出席2024第三届中国氢能国际峰会

会议背景 随着全球对清洁能源的迫切需求&#xff0c;氢能能源转型、工业应用、交通运输等方面具有广阔前景&#xff0c;氢能也成为应对气候变化的重要解决方案。根据德勤的报告显示&#xff0c;到2050年&#xff0c;绿色氢能将有1.4万亿美元市场。氢能产业的各环节的关键技术突…

复试专业前沿问题问答合集12——网络空间安全基础知识

复试专业前沿问题问答合集12——网络空间安全基础知识 Web安全与网络攻防知识问答 Q1: 什么是Web应用防火墙(WAF)? A1: Web应用防火墙(WAF)是一种专门为Web应用程序提供保护的防火墙,它可以帮助保护Web应用免受跨站脚本(XSS)、SQL注入、文件包含等多种攻击。WAF通过…

四川宏博蓬达法律咨询有限公司:法律服务安全的新标杆

在这个法治社会&#xff0c;法律服务行业扮演着越来越重要的角色。四川宏博蓬达法律咨询有限公司&#xff0c;作为行业内的佼佼者&#xff0c;始终坚持以客户为中心&#xff0c;为客户提供专业、高效、安全的法律服务。 一、公司背景与实力展示 四川宏博蓬达法律咨询有限公司自…

【爬虫】Selenium打开新tab页

如果说 你曾苦过我的甜 我愿活成你的愿 愿不枉啊 愿勇往啊 这盛世每一天 山河无恙 烟火寻常 可是你如愿的眺望 孩子们啊 安睡梦乡 像你深爱的那样 &#x1f3b5; 王菲《如愿》 在自动化测试和网页抓取中&#xff0c;Selenium WebDriver 是一个强大的工具&…

3.0 V-22V 宽输入电压,高效率异步升压芯片-ZCC5429

一、产品综述 ZCC5429 芯片是一款自动调频、最高 600KHz工作频率、高效率、宽输入电压范围的电流模式异 步升压&#xff08;BOOST&#xff09;芯片&#xff0c;且可调输入限流功能。用户可灵活地通过外部补偿建立动态环路&#xff0c;获得在所有条件下最优瞬态性能。 ZCC542…

WebGoat通关详解

WebGoat是一个用于教授Web应用程序安全性的教育平台。它提供了一系列有关Web安全的练习&#xff0c;帮助用户了解常见的Web安全漏洞及其防御方法。通过完成这些练习&#xff0c;用户可以增强自己在Web安全领域的知识和技能。下面将详细介绍WebGoat的通关过程。 一、WebGoat简介…

C语言例3-26:逗号表达式的例子

逗号表达式&#xff1a; 表达式1&#xff0c;表达式2 表达式可以是算术表达式、关系表达式、逻辑表达式、条件表达式、赋值表达式和逗号表达式。 代码如下&#xff1a; #include<stdio.h> int main(void) {int i1,j;float f2.0f;char chb; //b(98)// printf(&…

模型设计和跑数优化1:开发数据仓库耗时复杂报表的策略

在使用Spark和Doris进行数据仓库开发时,报表生成的效率对于业务分析和决策支持至关重要。当报表复杂且数据量大时,任何改动都可能导致需要重新从零开始处理数据,这不仅耗时而且资源消耗巨大。更为严重的时,可以导致项目延期,影响了绩效,甚至因此失业。为了优化这一过程,…

Android 封装的工具类

文章目录 日志封装类-MyLog线程封装类-LocalThreadPools自定义进度条-LoadProgressbar解压缩类-ZipUtils本地数据库类-MySQLiteHelper访问webservice封装-HttpUtilsToolbar封装类-MaterialToolbar网络请求框架-OkGo网络请求框架-OkHttp 日志封装类-MyLog 是对android log的封装…

罗格朗逸景PLUS IOT智能系统发布,为您提供更智能的生活体验!

罗格朗全新推出的逸景PLUS IOT智能系统现已正式上市,采用纤薄纯平的设计,功能丰富全面,支持灯光/温度/场景控制、背景音乐等多种功能,整合罗格朗IOT2.0系统,集成可视对讲,为用户打造更舒适、安全的智能生活。 罗格朗智能家居 罗格朗是全球电气与智能建筑系统专家,创立于1865年…

【3D reconstruction 学习笔记 第二部】

三维重建 3D reconstruction 4. 三维重建与极几何三角化&#xff08;线性解法&#xff09;三角化&#xff08;非线性解法&#xff09;多视图几何极几何极几何约束基础矩阵估计 5. 双目立体视觉重建6. 多视图重建7. SFM 系统设计8. SLAM系统设计 4. 三维重建与极几何 三角化&…

复试专业前沿问题问答合集8-3——RNN、Hadoop、GPT大语言模型

复试专业前沿问题问答合集8-3——RNN、Hadoop、GPT大语言模型 深度学习中的的RNN、Hadoop、GPT大语言模型的原理关系问答: GPT(Generative Pre-trained Transformer)和RNN(Recurrent Neural Network)是两种在自然语言处理(NLP)领域广泛使用的深度学习模型。它们在处理…

Orbit 使用指南 08 | 登记注册环境 | Isaac Sim | Omniverse

如是我闻&#xff1a; 在上一个指南中&#xff0c;我们学习了如何创建一个自定义的车杆环境。我们通过导入环境类及其配置类来手动创建了一个环境实例 # create environment configurationenv_cfg CartpoleEnvCfg()env_cfg.scene.num_envs args_cli.num_envs# setup RL envir…

在 Linux/Ubuntu/Debian 上安装 SQL Server 2019

Microsoft 为 Linux 发行版&#xff08;包括 Ubuntu&#xff09;提供 SQL Server。 以下是有关如何执行此操作的基本指南&#xff1a; 注册 Microsoft Ubuntu 存储库并添加公共存储库 GPG 密钥&#xff1a; sudo wget -qO- https://packages.microsoft.com/keys/microsoft.as…

SQL经典面试题

这里写目录标题 1 背概念2 学例子 1 背概念 1 事务 事务是最小的不可在分的工作单元&#xff0c;事务的操作要么同时成功,要么同时失败。 ACID: 原子性、一致性、隔离性、持久性 2 约束 主键约束&#xff1b;外键约束&#xff08;少用&#xff0c;会增加程序的耦合性&#xff…

【Golang星辰图】洞悉Go语言数据交换秘籍:遍历常用序列化策略和技术选型

Go语言中的序列化技术大盘点&#xff1a;解析内建格式与主流第三方库 前言: 随着现代软件开发中的数据交互需求不断增加&#xff0c;有效地进行数据编码与序列化已成为一项关键任务。各种不同的数据格式与序列化库不仅影响着程序性能&#xff0c;也直接影响到系统的互操作性和…

jeect-boot queryFieldBySql接口RCE漏洞(CVE-2023-4450)复现

jeect-boot积木报表由于未授权的 API /jmreport/queryFieldBySql 使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生。 1.漏洞级别 高危 2.漏洞搜索 fofa app"Jeecg-Boot 企业级快速开发平台"3.影响范围 JimuReport < 1.6.14.漏洞复现 这个漏洞的…

C/C++代码性能优化——编程实践

1. 编程实践 在一些关键的地方&#xff0c;相应的编程技巧能够给性能带来重大提升。 1.1. 参数传递 传递非基本类型时&#xff0c;使用引用或指针&#xff0c;这样可以避免传递过程中发生拷贝。参数根据是否需要返回&#xff0c;相应加上const修饰&#xff0c;代码更安全&am…