现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用。
一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数据变化可能,数据不一致的情况),也可以通过dblink做数据实时查询(较损耗线上数据库性能),一般最好的方式是通过建立物化视图,然后通过schedual job完成定时数据同步,这里就记录下物化视图的使用。
一、物化视图简介
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。
1、物化视图分类
ON DEMAND:该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;
ON COMMIT:一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致;
默认情况创建物化视图不指定类型,则是按需刷新(on demand)
2、物化视图
二、物化视图使用
1、物化视图创建
物化视图的数据来源于基表,而刷新的起始点记录于物化视图日志,所以创建物化视图授权必须有基表——>物化视图日志(基于基表)——>物化视图
物化视图创建示例:
在dbtest下创建物化视图T,其中基表是scott用户下的dept表
(1)授权db