Oracle创建物化视图

news2024/12/29 9:47:25

Oracle创建物化视图

  • 物化视图的语法
  • 物化视图的创建
    • 关于手动刷新
    • 创建手动刷新的物化视图
  • 查看物化视图
  • 删除物化视图

物化视图的语法

物化视图的创建语法,如下所示:

create materialized view [view_name]
[ build immediate | build deferred ]
[ refresh fast | refresh complete| refresh force]
[
on commit | on demand 
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}

各项关键字说明如下:

名称用途含义
materialized物化视图关键字物理化
build immediate(默认)初始数据方式物化视图首次创建后,就填充数据。
build deferred初始数据方式首次创建物化视图,不填充数据。
on fast刷新方式增量更新,只会刷新自上次刷新以后的修改内容。
on complete刷新方式全部刷新。相当于重新执行一次创建视图的查询语句。
on force(默认)刷新方式由oracle在需要进行刷新操作时,当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。
on commit刷新时间(模式)在基表数据事务提交时,立即刷新对应物化视图。
on demand(默认)刷新时间(模式)(oracle的默认类型)在用户需要刷新的时候进行刷新操作。这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)
start with (start_time) next (next_time)刷新时间从指定的时间开始,每隔一段时间(由next指定)就刷新一次

物化视图的创建

-- 创建一张物化视图表,要求在事务提交后,立刻自动刷新物化视图数据。
create MATERIALIZED VIEW v_user_list 
refresh force -- 由oracle决定该刷新的时候,采取何种方式执行
ON COMMIT  -- 刷新模式,触发点
AS 
SELECT * FROM users 

关于手动刷新

trunc(sysdate,‘dd’) 表示取今天的日期,精确到天
trunc(sysdate,‘hh24’) 表示取今天的时间,精确到小时
trunc(sysdate,‘mi’) 表示取今天的时间,精确到分钟

next trunc(sysdate, 'dd') + 1 + 1/24 ;  -- 每天1点刷新 
next trunc(sysdate, 'dd') + 1 + 3/24 ;  -- 每天3点刷新 
-- 说明 trunc(sysdate,'dd') 表示取今天的日期。后面加1就是明天。再加N/24就是把时间确定到明天的N点 

-- 物化视图在每天01:10进行刷新 
next to_date(concat(to_char(sysdate + 1 , 'yyyymmdd'), '01:10:00'), 'yyyymmdd hh24:mi:ss') 

 -- 隔一小时刷新一次 
next trunc(sysdate, 'hh24') + 1/24  
next trunc(sysdate, 'mi') + 1/24  

-- 从明天一点开始刷新一次,之后都是每天一点刷新
start with to_date('22-04-2023 01:00:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate,'dd') + 1 + 1/24

-- 从今天12:32开始刷新一次,往后都是每小时的32分开始刷新
start with to_date('21-04-2023 12:32:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate,'mi') + 1/24

创建手动刷新的物化视图

-- 每天一点刷新
create materialized view v_user_day  
build immediate 
refresh force 
on demand 
start with sysdate next trunc(sysdate,'dd') + 1 + 1/24
as 
select * from user_list

-- 每小时刷新一次
create materialized view v_user_hour  
build immediate 
refresh force 
on demand 
start with sysdate next trunc(sysdate,'mi') + 1/24
as 
select * from user_list

物化视图创建后,可以进这里查看。进入目录后,选中对应视图,然后右键选择View,可查看此视图的相应创建语句。

点击 V_USER_DAY,查看创建语句,发现语句变成如下。
build immediate 是默认的,所以不显示。刷新方式没变。原创建语句规定为每天一点刷新。
今天是4月21号,创建视图时已经刷新了一次,所以下一次刷新从明天一点开始,往后都是每天一点刷新。

create materialized view V_USER_DAY  
refresh force on demand 
start with to_date('22-04-2023 01:00:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate,'dd') + 1 + 1/24
as 
select * from user_list

点击 V_USER_HOUR,查看创建语句,语句如下。
build immediate 同样不显示。执行创建语句时是11:32分,所以下一次刷新从12:32开始,往后都是每小时的32分刷新。

create materialized view V_USER_HOUR
refresh force on demand 
start with to_date('21-04-2023 12:32:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate,'mi') + 1/24
as 
select * from user_list

在不同的时间,进去查看物化视图SQL语句的时候,start with 后面连带的时间也会发生变化。证明视图到了固定的时间就会自动执行

查看物化视图

-- 查看物化视图的基本信息 
SELECT * FROM ALL_MVIEWS

-- 查看物化视图的统计信息 显示物化视图中每一列的记录数、分布数据和平均数据等信息。
SELECT * FROM USER_MVIEW_ANALYSIS 

删除物化视图

 --删除物化视图日志
drop materialized view log on test_table;

--删除物化视图  
drop materialized view V_USER_HOUR

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

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

相关文章

LRU算法和LFU算法

LRU(Least Recently Used)最近最少使用,淘汰最近最少使用的数据, LFU(Least Frequently Used)最近最不频繁用,淘汰最不常用的数据。 LRU算法 传统的LRU基于链表实现。基本的一个LRU算法实现就…

Opencv 基本操作八 不均匀光照下的图像二值化探讨

在进行图像二值化时总是存在一些明部、暗部的干扰,单一的使用opencv提供的原始二值化方法很难做到预期效果。一般我们都会采用分块二值化(将图像切为多个局部进行二值化)、对比度提升(对值域进行线性或者非线性变换、直方图均衡化…

C#串口通信从入门到精通(2)——串口相关参数介绍

1、端口号(Port) 我们使用一个串口的时候,首先是要打开这个串口,那么我们怎么知道电脑上现在支持几个串口呢?对应的端口号又是什么呢? 由于我的电脑系统是window11,下面就以window11为例介绍如…

网络请求实战-缓存、缓存清理和HTTP缓存

目录 缓存介绍 清空策略(FIFO) 实战:fifo的memory函数 实战:LRU算法 HTTP缓存 Cache-Control 强制缓存 协商缓存 协商缓存-2(用的最多的) 小结 缓存介绍 早期cpu,内存设计上都有缓存…

开发常用的 Linux 命令4(系统、进程和其它)

开发常用的 Linux 命令4(系统、进程和其它) 作为开发者,Linux是我们必须掌握的操作系统之一。因此,在编写代码和部署应用程序时,熟练使用Linux命令非常重要。这些常用命令不得不会,掌握这些命令&#xff0…

【JUC】volatile和JMM

【JUC】volatile和JMM 文章目录 【JUC】volatile和JMM1. volatile1.1 特点1.2 内存语义 2. 内存屏障2.1 分类2.2 什么叫保证有序性?2.3 内存屏障的4种插入策略 3. volatile特性3.1 保证可见性3.2 volatile读写过程3.3 没有原子性3.4 指令禁重排(有序性) 4. 正确使用…

python标识符概念及规范

在python中 能取名字的东西非常非常多 例如 我们之前学的变量 以及后面要接触的 函数 类,等等,等等 而我们给这些取的名字 被统称为 标识符 而 python中 标识符的命名也是有限制的 主要有三种 1 内容限定 2 大小写铭感 3 不能使用关键字 内容限定来讲…

leetcode6_N字形变换

如有错误,感谢不吝赐教、交流 leetcode6 题目描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I…

HTB-SecNotes

HTB-SecNotes 信息收集8808端口80端口通过CSRF获取通过二次注入 立足tyler -> administrator 信息收集 8808端口 Windows IIS 10.0 可以从官方文档查看10.0版本可能的操作系统。 80端口 通过CSRF获取 目录扫描发现需要登陆后继续进一步操作啊。 对其进行简单的SQL注入测…

数据库基础篇 《7.单行函数》

目录 1. 函数的理解 1.1 什么是函数 1.2 不同DBMS函数的差异 ​编辑1.3 MySQL的内置函数及分类 ​编辑 2. 数值函数 2.1 基本函数 ​编辑 2.2 角度与弧度互换函数 2.3 三角函数 ​编辑 2.4 指数与对数 ​编辑 2.5 进制间的转换 ​编辑3. 字符串函数 ​编辑…

SAM(segment anything model)分割一切 Demo测试及API调用

SAM 分割一切 一,SAM介绍1.1 介绍1.2 项目链接 二,Demo-Test:2.1 Demo功能介绍2.1.1,首页就是这个SAM,点击try demo,可以选择它的自带图片,也可以自己添加。2.1.2 , 自己上传图片测试&#xff1…

[java基础]面向对象(五)

访问控制修饰符:--------------保护数据的安全(隐藏数据、暴露行为),实现封装 public:公开的,任何类 private:私有的,本类 protected:受保护的,本类、派生类、同包类 默认的&…

learn_C_deep_3 (最名不符实的关键字 - static、static关键字总结、基本数据类型、最冤枉的关键字 - sizeof)

目录 最名不符实的关键字 - static stati修饰全局变量和函数 static修饰局部变量 static关键字总结 几个问题 1.c语言要设置全局变量和函数可以跨文件使用的原因 2.C程序地址空间是什么样的? 3.局部变量为什么具有临时性 4.全局变量为什么具有全局性 5.为…

vue-cli版本号始终是2.9.6,且无法删除,安装更新无效的问题。

参考博客 目录 1.问题出现原因2.我的解决办法:删除原脚手架&删除原vuevue.cmd 1.问题出现原因 从各种博客我得知,这种问题出现在2处: 没有卸载原来的脚手架原来的vue和vue.cmd没删除干净 2.我的解决办法:删除原脚手架&…

[oeasy]python0135_命名惯用法_name_convention

命名惯用法 回忆上次内容 上次 了解了isidentifier的细节 关于 关键字关于 下划线 如何查询 变量所指向的地址? id 如何查询 已有的各种变量? locals 如果 用一个变量a的值 给另一个变量b 赋值是什么样的过程 呢??🤔…

当,Kotlin Flow与Channel相逢

前言 之前的文章已经分析了Flow的相关原理与简单使用,Flow之所以用起来香,Flow便捷的操作符功不可没,而想要熟练使用更复杂的操作符,那么需要厘清Flow和Channel的关系。 本篇文章构成: 1. Flow与Channel 对比 1.1 Fl…

AVL树(C++实现)

文章目录 AVL树的概念AVL树结点定义AVL树的插入AVL树的旋转左单旋右单旋左右单旋右左双旋 AVL树的验证AVL树的性能AVL树及测试完整代码 AVL树的概念 二叉搜索树虽然可以缩短查找的效率,但如果数据有序或接近有序,那么二叉搜索树将退化为单支树,查找元素则相当于在顺序表中搜索…

从零手写Resnet50实战——利用 torch 识别出了虎猫和萨摩耶

大家好啊,我是董董灿。 自从前几天手写了一个慢速卷积之后(从零手写Resnet50实战—手写龟速卷积),我便一口气将 Resnet50 中剩下的算法都写完了。 然后,暴力的,按照 Resnet50 的结构,将手写的…

【Flowable】Flowable基础表结构

1.表结构讲解 表结构创建文件:flowable-engine-6.3.0.jar!\org\flowable\db\create\flowable.mysql.create.engine.sql 工作流程的相关操作都是操作存储在对应的表结构中,为了能更好的弄清楚Flowable的实现原理和细节,我们有必要先弄清楚Fl…