我们的zabbix 监控使用 oracle 作为存储, 因此,需要创建基于 基于时间戳的分区表,在此将操作过程记录如下

1. 创建,四个zabbix 最大的表的分区表

create table history_part
(
    "ITEMID" NUMBER(20,0) NOT NULL ENABLE,
    "CLOCK" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE" NUMBER(20,4) DEFAULT '0.0000' NOT NULL ENABLE,
    "NS" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE
)
PARTITION BY RANGE (CLOCK) INTERVAL (2592000)
(partition part_t01 values less than(1573401600));

CREATE TABLE "ZABBIX_SERVER"."HISTORY_UINT_PART"
   (    "ITEMID" NUMBER(20,0) NOT NULL ENABLE,
    "CLOCK" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE" NUMBER(20,0) DEFAULT '0' NOT NULL ENABLE,
    "NS" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE
   )
   PARTITION BY RANGE (CLOCK) INTERVAL (2592000)
(partition part_t01 values less than(1573401600));

CREATE TABLE "ZABBIX_SERVER"."TRENDS_PART"
   (    "ITEMID" NUMBER(20,0) NOT NULL ENABLE,
    "CLOCK" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "NUM" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE_MIN" NUMBER(20,4) DEFAULT '0.0000' NOT NULL ENABLE,
    "VALUE_AVG" NUMBER(20,4) DEFAULT '0.0000' NOT NULL ENABLE,
    "VALUE_MAX" NUMBER(20,4) DEFAULT '0.0000' NOT NULL ENABLE,
     PRIMARY KEY ("ITEMID", "CLOCK"))
     PARTITION BY RANGE (CLOCK) INTERVAL (2592000)
(partition part_t01 values less than(1573401600));

CREATE TABLE "ZABBIX_SERVER"."TRENDS_UINT_PART"
   (    "ITEMID" NUMBER(20,0) NOT NULL ENABLE,
    "CLOCK" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "NUM" NUMBER(10,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE_MIN" NUMBER(20,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE_AVG" NUMBER(20,0) DEFAULT '0' NOT NULL ENABLE,
    "VALUE_MAX" NUMBER(20,0) DEFAULT '0' NOT NULL ENABLE,
     PRIMARY KEY ("ITEMID", "CLOCK"))
      PARTITION BY RANGE (CLOCK) INTERVAL (2592000)
(partition part_t01 values less than(1573401600));

第二步 迁移历史数据

本地不迁移了, 如果自己迁移,注意数据不能用

insert into select 方式,这样的数据量非常大,造成回滚段被占满

第三部 分区表和原始表 采用重命名方式对调

alter table trends rename to trends_nopart;
alter table trends_uint  rename to trends_uint_nopart

alter table history rename to history_nopart;
alter table history_uint rename to history_uint_nopart

alter table trends_part rename to trends;
alter table trends_uint_part rename to trends_uint;
alter table history_part rename to history;
alter table history_uint_part rename to history_uint

第五  实际操作后,发现 还要建立history和history_uint的本地索引,删除历史数据

上面建表语句中发现,history 和history_uint 没有索引, 全表扫描,会造成 CPU 一直使用 100%, 以至于数据无法写入

创建2个表的索引:

CREATE INDEX idx_history_uint_part ON ZABBIX_SERVER.HISTORY_UINT(ITEMID, CLOCK) local;
 
  CREATE INDEX idx_history_part ON ZABBIX_SERVER.HISTORY(ITEMID, CLOCK) local;

清空历史数据
  truncate table history_nopart;
  truncate table history_uint_nopart;   
  truncate table trends_nopart;
  truncate table trends_uint_nopart;

oracle 基于时间错的 分区表的更多相关文章

  1. ORACLE调度之基于时间的调度(一)【weber出品】

    一.调度的概述 这里我看到一篇对调度的概述觉得描述的比我好,但仅限于概述部分,其他部分我觉得我讲的比他好,于是发生以下事情: ************************华丽的转载******** ...

  2. Oracle之表空间基于时间点的恢复

    记一次优化过程中:一次误操作,在不影响其他表空间的情况下:采用表空间基于时间点的恢复(TSPITR)方法恢复数据的过程. 1.TSPITR恢复原理    TSPITR目前最方便的方法是使用RMAN进行 ...

  3. 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记

    phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...

  4. 【Oracle】rman基于时间点恢复

    rman基于时间点恢复 场景: 由于某研究的误操作,导致财务模块的数据丢失,如何使用rman基于时间点恢复数据. 思路 1.克隆数据库的虚拟机,直接对数据库的数据进行恢复 RMAN> shutd ...

  5. 基于时间的 SQL注入研究

    SQL注入攻击是业界一种非常流行的攻击方式,是由rfp在1998年<Phrack>杂志第54期上的“NT Web Technology Vulnerabilities”文章中首次提出的.时 ...

  6. Oracle 基于用户管理恢复的处理

    ================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...

  7. Oracle大表改为分区表及表空间切换方案

    Oracle大表改为分区表及表空间切换方案 一.            背景 由于之前数据库表和索引放在一个表空间导致表空间数据文件增长太快,文件数量即将达到Oracle表空间的限制,需要对表(没有分 ...

  8. 【RMAN】TSPITR--RMAN表空间基于时间点的自动恢复

    [RMAN]TSPITR--RMAN表空间基于时间点的自动恢复 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  9. mysql基于“时间”的盲注

    无需页面报错,根据页面响应时间做判断! mysql基于时间的盲注 =================================================================== ...

随机推荐

  1. JS使用正则表达式获取小括号、中括号及花括号内容的方法示例

    本文实例讲述了JS使用正则表达式获取小括号.中括号及花括号内容的方法.分享给大家供大家参考,具体如下: JS 正则表达式 获取小括号 中括号 花括号内的内容 <!DOCTYPE html> ...

  2. FreeRTOS学习笔记3:内核控制及开启调度器

    内核控制函数API 应用层中不会用到taskYIELD() //任务切换.会自动切换当前就绪表里优先级最高的任务 临界区 //不能被打断的代码段任务中进入临界区任务中退出临界区中断服务进入临界区中断服 ...

  3. drf三大组件之频率认证组件

    复习 """ 1.认证组件:校验认证字符串,得到request.user 没有认证字符串,直接放回None,游客 有认证字符串,但认证失败抛异常,非法用户 有认证字符串, ...

  4. 前端知识之html

    html介绍 web服务器的本质 import socket sk=socket.socket() sk.bind(('127.0.0.1'.8080)) sk.listen(5) while Tru ...

  5. jeecg /ant-design-vuepro 前端使用

    1.原生axios使用 <script> import Vue from 'vue'; import axios from 'axios'; axios.defaults.baseURL ...

  6. Day1 面向对象编程与Java核心类

    this变量 在方法内部,可以使用一个隐含的变量this,它始终指向当前实例.如果没有命名冲突,可以省略this. 但是,如果有局部变量和字段重名,那么局部变量优先级更高,就必须加上this. 构造方 ...

  7. 【Vue组件系统】

    目录 全局组件 局部组件 注册 子组件的用法 父子组件的通讯 子父组件的通讯 非父子组件的通讯 混入 插槽 具名插槽 使用组件的注意事项 使用组件实现导航栏 "vue.js既然是框架,那就不 ...

  8. Unity UGUI事件接口概述

    UGUI 系统虽然提供了很多封装好的组件,但是要实现一些特定的功能还是显得非常有限,这时候就需要使用事件接口来完成UI功能的实现.比如我们想实现鼠标移动到图片上时自动显示图片的文字介绍,一般思路会想到 ...

  9. vue项目用npm安装sass包遇到的问题及解决办法

    IDEA启动vue程序,浏览器访问时出现如下情况的关于node-sass的错误: 错误1: Module build failed (from ./node_modules/sass-loader/d ...

  10. Web.config和App.config配置连接字符串

    读取配置文件,获取连接字符串 <!-- 第一种 --> <connectionStrings> <add name="connString" conn ...