8i和8i前,oracle 提供了 快照 snapshot ,9i中把其改名为物化视图,也叫实体化视图 materialized View。

在海量数据中,如果只想查询特定的数据,通常会select 基表或者视图,而查询视图是通过基表进行查询的。如果基表数据的数量级非常之大,那么对于只想查询特定的数据时效率就会很不尽人意。传统的视图是逻辑上的。而物化视图是存在磁盘空间里的。他是远端数据库在本地上的一个副本,或者用来生成数据库表求和的汇总表。物化视图存储基于远程表的数据,也可以移位快照。物化视图可以在 基表,视图,其他物化视图中来建立。通常在物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。

想提高查询速度,数据库性能调整重点

1.调整SGA 和PGA

2.调整SQL语句,使用绑定变量

3.使用物化视图

4.系统结构上要读写分离。用两个数据库读库和写库,读库和写库数据时时同步,读库专门用来查询,写库专门用来写入。

对于普通复制,本地数据库的物化视图只可读.

如果要创建基于主键的物化视图,则必须具有访问主表和访问主表的日志 和  Create Materialized View 这三个权限。

如果是创建基于Rowid的物化视图,则需要访问主表和  Create Materialized View 这两个权限

查询重写,Enable Query Rewrite,允许对基表进行查询时,可以直接查询物化视图。

物化视图日志,如果需要快速刷新,则需要建立物化视图日志,物化视图日志根据不同物化视图的快速刷新的需要,可以建立Rowid和Primary Key类型的

刷新,当基表发生了DML操作时,物化视图采用哪种方式和基表进行同步,模式有两种On Demand(用户需要时刷新,缺省值)和On Commit(DML提交时刷新) , 方法有四种  Fast ,Complete,Force ,Never。可以通过Job定时刷新,还可以手工刷新

例如

在远端数据库中创建一个有主键的表

-- Create table
create table STUDENT
(sno    NUMBER(6) not null,sname  VARCHAR2(10),deptno CHAR(3)
)
tablespace SYSTEMpctfree 10pctused 40initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);
-- Create/Recreate primary, unique and foreign key constraints
alter table STUDENTadd primary key (SNO)using index tablespace SYSTEMpctfree 10initrans 2maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);
alter table STUDENTadd constraint DEP_DEPARTMENT foreign key (DEPTNO)references DEPARTMENT (DEPTNO);

创建物化视图日志

create materialized view log on student;

给用户赋予权限

grant select on student to voapd;    ---允许访问基表
grant create materialized view to voapd; ----允许创建物化视图
grant select on  MLOG$_STUDENT to voapd; ----允许访问物化视图日志

之后再本地数据库voapd中创建物化视图 (注:不要在右侧添加注释):

-- fast 的刷新方式
--- 从现在开始
--- 每隔 1/1440天即1分钟以后 刷新
create materialized view mv_student
refresh fast
start with sysdate
next sysdate + 1/1440
with primary key
asselect * from  system.student where deptno = '001';

此时在远端数据库插入一条记录,过1分钟后可以在本地数据库中查看到信息

删除物化视图;

 drop  materialized view mv_student ;

重新创建,用任务的方式创建:

create materialized view mv_student
asselect * from  system.student where deptno = '001';create or replace procedure test   Authid Current_User is
begindbms_mview.refresh('mv_student');
end;
/variable job1 number;
begin dbms_job.submit(:job1,'test;',sysdate,'sysdate+1');
end;
/begindbms_job.run(:job1);
end;
/

--------------------------

删除表,重新建立 on commit 的物化视图

还需要权限:

GRANT ON COMMIT REFRESH to voapd;
create materialized view mv_allstudent  refresh fast  on commit  as select * from  system.student;

Oracle 原理: 物化视图,快照,实体化视图。相关推荐

  1. oracle实体视图日志,Oracle案例02——ORA-12034: SCOTT.USER_TABLE 上的实体化视图日志比上次刷新后的内容新...

    通过查看schedual job报错日志,具体报错信息如下 ORA-12034:"SCOTT"."USER_TABLE" 上的实体化视图日志比上次刷新后的内容新 ...

  2. oracle 物化视图 ORA-23413: 表 xxx.xx 不带实体化视图日志

    DROP materialized view log on TAB_NAME ;    --不是view名,是表名 CREATE MATERIALIZED VIEW LOG ON TAB_NAME W ...

  3. oracle max相同,关于oracle:具有相同名称的材料化视图和表

    我有点理解物化视图,并且之前曾与他们合作过.最近出现了一个问题,即为什么特定报告没有显示最新数据,所以我调查了这个问题.显然,他们之前有一个临时表,其中装有crontab,后来又切换到了物化视图. 当 ...

  4. oracle查看物化视图的索引,oracle – 物化视图中的域索引返回零行

    我有Oracle DB的问题 – 在物化视图上通过CONTAINS()搜索后,域索引返回零行.我看到物化视图充满了数据,我还使用过程ctx_ddl.sync_index()进行域索引同步. 什么有用: ...

  5. oracle创建物化视图的权限,建立物化视图的权限

    首先,重新构造测试环境: SQL> CONN YANGTK/YANGTK@TEST4 已连接. SQL> DROP USER TEST CASCADE; 用户已丢弃 SQL> DRO ...

  6. oracle查看视图定义语句_oracle视图详解

    Oracle 视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行 ...

  7. mbk文件导入到oracle,Oracle基于物化视图的远程数据复制

    物化视图简介: 远程表复制功能:可以借助数据库链接(dblink),在远程数据库中建立一个本地表的副本,用该方式实现表的定时同步.物化视图存储基于远程表的数据,也可以称为快照. 加速查询功能:物化视图 ...

  8. oracle数据库物化视图的作用,Oracle物化视图的用法与总结

    物化视图(material view)是什么? 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据,也可以称为快照(类 ...

  9. Oracle之物化视图

    近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相 ...

最新文章

  1. A. 位运算符的应用---管理一组事务的开关状态
  2. java虚拟机参数-X 与 -XX的区别
  3. LSTM CNN GRU DGA比较
  4. linux shell 2 /dev/null的解释
  5. C# 学习笔记(12)hex文件转bin文件小工具
  6. Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs
  7. CSS的六种垂直居中
  8. windows下nodejs环境配置
  9. 公需科目必须学吗_专业技术人员一般公需科目学习的通知
  10. 开展批评时的方式与态度
  11. C++中public,protected,private的区别
  12. Android View layout方法的简单使用案例
  13. 浏览器软件下载,点击超链接、图标等直接下载(前后端代码)
  14. sqlite3:sqlite3_column 函数
  15. org.apache.ibatis.type.TypeException: The alias ‘XXXX‘ is already mapped to the value ‘XXXX‘ 问题解决
  16. phal接口查询显示中多余方法处理
  17. 该充电时就充电,电池生命力才会持久,人何尝不是呢?
  18. Linux之root密码忘记
  19. MOPSO算法总结,包括OMOPSO,SMPSO,dMOPSO,CMPSO,DDMOPSO,MMOPSO等
  20. IDEA2021 event log提示 打开/关闭

热门文章

  1. 使用 SSH 免密码登录连接远程服务器
  2. 《JavaScript高级程序设计》阅读笔记(三):ECMAScript中的引用类型
  3. 技术关注:搜索引擎经验
  4. 记录一次postfix无法收取邮件和mysql异常不能启动
  5. spring+mybatis+atomikos 实现JTA事务
  6. mongoDB入门必读(概念与实战并重)
  7. DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation(笔记)
  8. 【计网】计算机网络期末总复习-谢希仁(个人总结)理论概念
  9. 10 个 GitHub 上超火和超好看的管理后台模版,后台管理项目有着落了
  10. Jupyter notebook 多行注释 输出注释的文本