[20150629]12c物化视图刷新Out of place

[20150629]12c物化视图刷新Out of place.txt

--11G物化视图刷新有1个参数atomic_refresh.
--如果为false,采用的方式是truncate,再使用/*+ append */ 提示insert。这样redo最少,但是刷新期间无法访问。
--如果为true,采用的方式是delete,再insert。这样产生许多redo与undo。这样在刷新期间访问没问题,最多有点慢。
--自己做一个测试:

--12c在这个基础上引入1个参数Out of place,刷新时先建立表在外部,刷新后通过类似分区交换的技术与之交换,这个刷新很形象的命名
--为out-of-place refresh.

--自己做一个测试:

1.建立测试环境:

SCOTT@test01p> @ver1

PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

create table t as select * from all_objects a;

create materialized view t_mv build immediate refresh on demand enable query rewrite as
select owner, count(*) from t group by owner ;


insert into t select * from all_objects a where rownum commit;

@10046on 12
exec dbms_mview.refresh('T_MV','C', atomic_refresh=>false, out_of_place=>true);
@10046off

--atomic_refresh=>false, out_of_place=>true
--在刷新时先建立表RV$xxxxxx( xxxxx 表示 新表的object_id),然后插入数据,如果物化视图有索引在插入完成后建立,命名RV$xxxxxxx.
--( xxxxx 表示 新索引的object_id).一旦以上步骤完成,做交换在数据字段内部,删除的对象保持在recyclebin.这种方式减少redo与
--undo的生成.避免atomic_refresh=>false, out_of_place=>false的缺点.

--看看跟踪文件:

=====================
PARSE ERROR #179385424:len=68 dep=2 uid=109 oct=26 lid=109 tim=947239691 err=1418
LOCK TABLE  FOR INDEX "SCOTT"."RV$17EDF" IN EXCLUSIVE MODE  NOWAIT
CLOSE #179385424:c=0,e=3,dep=2,type=0,tim=947239944
=====================
PARSE ERROR #350722896:len=49 dep=1 uid=109 oct=10 lid=109 tim=947246385 err=1418
/* MV_REFRESH (DIDX) */ DROP INDEX SCOTT.RV$17EDF
CLOSE #350722896:c=0,e=6,dep=1,type=0,tim=947246764
XCTEND rlbk=0, rd_only=1, tim=947247033
=====================
PARSING IN CURSOR #350722896 len=52 dep=1 uid=109 oct=12 lid=109 tim=947247214 hv=2144366463 ad='22d9988' sqlid='55vc89xzx0vvz'
/* MV_REFRESH (DTB) */ drop table "SCOTT"."RV$17EDE"
END OF STMT
.....

--先删除表"SCOTT"."RV$17EDE",索引"SCOTT"."RV$17EDF".

=====================
PARSING IN CURSOR #350722896 len=181 dep=1 uid=109 oct=1 lid=109 tim=947494659 hv=1271955313 ad='7ff59657c00' sqlid='az9jhb95x0zvj'
/* MV_REFRESH (CTB) */CRE
END OF STMT
PARSE #350722896:c=78001,e=71340,p=0,cr=160,cu=0,mis=1,r=0,dep=1,og=1,plh=1064870033,tim=947494658
=====================

--这里是建表,仅仅看见CRE.

=====================
PARSING IN CURSOR #350722896 len=135 dep=1 uid=109 oct=2 lid=109 tim=947756432 hv=898979897 ad='7ff55b616a0' sqlid='32hyvfhutaq1t'
/* MV_REFRESH (ITB) */INSERT INTO "SCOTT"."RV$17EDE" ("OWNER","COUNT(*)") SELECT "T"."OWNER",COUNT(*) FROM "T" "T" GROUP BY "T"."OWNER"
END OF STMT
PARSE #350722896:c=15600,e=4699,p=0,cr=8,cu=0,mis=1,r=0,dep=1,og=1,plh=47235625,tim=947756431
=====================

=====================
PARSING IN CURSOR #350722896 len=736 dep=1 uid=109 oct=9 lid=109 tim=947886624 hv=2337637262 ad='7ff559d86b8' sqlid='1frh4hu5pb0wf'
/* MV_REFRESH (CIDX) */ CREATE UNIQUE INDEX "SCOTT"."RV$17EDF" ON "SCOTT"."RV$17EDE" (SYS_OP_MAP_NONNULL("OWNER"))
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"
END OF STMT
PARSE #350722896:c=0,e=6877,p=0,cr=9,cu=1,mis=1,r=0,dep=1,og=1,plh=1685961876,tim=947886624
PARSE #350689800:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,plh=0,tim=947887312
EXEC #350689800:c=0,e=63,p=0,cr=0,cu=0,mis=0,r=1,dep=2,og=1,plh=0,tim=947887446
CLOSE #350689800:c=0,e=9,dep=2,type=3,tim=947887554
CLOSE #728695808:c=0,e=4,dep=2,type=3,tim=947887674
=====================
--不知道为什么要建立这个索引?看了建立的mv确实有1个索引.

--...交换后.

=====================
PARSING IN CURSOR #350722896 len=49 dep=1 uid=109 oct=10 lid=109 tim=950101269 hv=3950017501 ad='22d9988' sqlid='cfrmrnbpr0yyx'
/* MV_REFRESH (DIDX) */ DROP INDEX SCOTT.RV$17EDF
END OF STMT
====================

=====================
PARSING IN CURSOR #350722896 len=52 dep=1 uid=109 oct=12 lid=109 tim=952228430 hv=2144366463 ad='22d9988' sqlid='55vc89xzx0vvz'
/* MV_REFRESH (DTB) */ drop table "SCOTT"."RV$17EDE"
END OF STMT
PARSE #350722896:c=0,e=342,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=952228429
=====================

SCOTT@test01p> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
RV$17EDE         BIN$g0wGYZ6pRhmN7FiieHWDdQ==$0 TABLE        2015-06-29:20:42:31

--可以发现原来的t_mv是RV$17EDE.很容易验证.


SCOTT@test01p> select * from "BIN$g0wGYZ6pRhmN7FiieHWDdQ==$0" minus select * from t_mv;
OWNER    COUNT(*)
------ ----------
SYS         41418

SCOTT@test01p> select * from t_mv minus select * from "BIN$g0wGYZ6pRhmN7FiieHWDdQ==$0";
OWNER    COUNT(*)
------ ----------
SYS         41423

--正好相差5条.
--说明原来的t_mv就是"BIN$g0wGYZ6pRhmN7FiieHWDdQ==$0",oracle在内部数据字典做了交换.

SCOTT@test01p> @16to10 17EDE
16 to 10 DEC
------------
       98014

SCOTT@test01p> select object_name,original_name,operation,type,related,base_object,purge_object,CREATETIME from user_recyclebin ;
OBJECT_NAME                    ORIGINAL_NAME  OPERATION TYPE      RELATED BASE_OBJECT PURGE_OBJECT CREATETIME
------------------------------ -------------- --------- ------ ---------- ----------- ------------ -------------------
BIN$g0wGYZ6pRhmN7FiieHWDdQ==$0 RV$17EDE       DROP      TABLE       98014       98014        98014 2015-06-29:20:41:29

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

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

相关文章

VBScript学习笔记 - 数组

数组声明 dim var(10) 数组声明指出了数组名和索引(index)的最大值。数组索引从0开始。因此该语句创建一个11个元素的数组,其中值为var(0), var(1), …和var(10) 遍历数组的所有元素 可用for each循环,不需事先指明数组中元素的个数。如果不想处理每一个…

android logo在线生成工具,在线生成logo

在线生成logo是一款为大家提供logo设计的手机服务软件,平台上面的logo设计都是基于AI技术提供的,然后再搭配上一些创意,平台上面会根据用户的行业及喜好来提供6款的成品logo,用户可以从中选择一款自己最喜欢的进行定稿&#xff0c…

在JS函数中执行C#中的函数、字段

1、调用字段 cs文件的代码&#xff1a; public int id 0;protected void Page_Load(object sender, EventArgs e){id 2;} View Codejs页面的代码&#xff1a; function CheckFunc() {alert("<% id%>");} View Code2、调用函数&#xff1a; 在JS函数中访问或执…

任意阶幻方(魔方矩阵)C语言实现

魔方又称幻方、纵横图、九宫图&#xff0c;最早记录于我国古代的洛书。据说夏禹治水时&#xff0c;河南洛阳附近的大河里浮出了一只乌龟&#xff0c;背上有一个很奇怪的图形&#xff0c;古人认为是一种祥瑞&#xff0c;预示着洪水将被夏禹王彻底制服。后人称之为"洛书&quo…

android防谷歌滑动效果,谷歌是如何做到这一点的?在Android应用程序中滑动ActionBar...

事实上&#xff0c;有一种方法可以做到这一点。即使没有实施自己的ActionBar。看看hierachyviewer吧&#xff01;(位于工具目录中)还有的DecorView&#xff0c;并且LinearLayout作为一个孩子。这LinearLayout包含ActionBar其他内容和其他内容。所以&#xff0c;你可以简单地应用…

thinkphp框架使用心得

接触的第一个PHP框架就是TP&#xff0c;在使用的了一段时间后就放弃了&#xff0c;说实话TP的弊端挺多&#xff0c;之后又接触laravel框架&#xff0c;慢慢的就爱上laravel这个框架了。这段时间由于公司的原因&#xff0c;又不得不使用thinkphp框架,在这里分享下使用心得。 TP框…

计算本年 本月 本周的起始日期

html: <table><tr><td align"right" width"120px"> 销售时间区间:</td><td><select id"ddlChoiceDate" name"ddlChoiceDate" runat"server" onchange"SelectChange(this.value);&quo…

Android查看真机布局,android-外部存储

外部存储&#xff0c;个人理解是在app作用域之外存储&#xff0c;就是数据没有和app做关联&#xff0c;app卸载后&#xff0c;它依旧存在而不再是之前手机本身存储空间和sd卡的区别&#xff0c;现在安卓手机已经不携带可拆卸的SD卡androidManifest.xml 需要写入读写权限简单布局…

用自己的ID在appstore中更新app-黑苹果之路

由于之前套用了别人的镜像&#xff0c;在appstore中更新XCode时总要输别人id的密码&#xff0c;id还不能改。网上有的说要把XCode删掉&#xff0c;然后再用自己的ID更新&#xff0c;找到另外一个方法&#xff0c;更简单&#xff1a; 1.打开引用程序目录 2.找到Xcode&#xff0c…

如何打开pr_debug调试信息

转载&#xff1a;http://blog.csdn.net/helloanthea/article/details/25330809 以DMA的调试为例&#xff0c;先来看看一个pr_debug函数调用 pr_debug("%s: %s (%s)\n",__func__,chan ? "success" : "fail",chan ? dma_chan_name(chan) : NULL)…

android国籍组件,android组件化之路

问题&#xff1a;实际业务变化快&#xff0c;而工程内各个功能模块耦合度太高&#xff0c;不能对功能模块进行快速方便地拆分或组装。团队共同开发中&#xff0c;可能一个文件同时被多人修改&#xff0c;导致每次更新提交代码都需要消耗大量时间去merge代码。每次修改&#xff…

UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数...

lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函…

poj2750 PottedFlower(线段树的环状操作)

题目&#xff1a;Potted Flower 大意&#xff1a;该你一个换环&#xff0c;求环上的最大连续的和&#xff08;如果最大和包含所有数&#xff0c;要求减去最小的一个&#xff09;。 思路&#xff1a;这道题的思路并不难&#xff0c;需要在线段树里维护区间的最大和&#xff0c…

android代码导入有错误,android新项目导入后进行编译出现cmake错误

问题描述使用as加载并且gradle sync 提示&#xff1a;SIMPLE:error configure同时使用make project提示问题出现的环境背景及自己尝试过哪些方法已经尝试更换过ndk 调整target brinary 然后完全clean project等操作相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)使用g…

简单排序算法设计(Java)

总共有八种排序算法&#xff0c;还是慢慢看吧 1、简单排序算法 简单排序算法就是设置标兵&#xff0c;逐个比较数&#xff0c;然后查找插入位置&#xff0c;插入 public static void p(int[] a){for(int i0;i<a.length;i){System.out.print(a[i]" ");}}public sta…

cocos2d-x坐标系

在cocos2d-x在&#xff0c;有几种不同的坐标系。因为有好几个坐标系着一定的差异&#xff0c;他们需要明白&#xff0c;能力更精确的绘制各种图形画面上。 1.屏幕坐标系 只windows通过绘制图形上基本都知道。相应的坐标系统&#xff1a;原点在左上角。向右是x轴正方向&#xff…

android收入管理系统,毕业设计(论文)-基于Android系统的家庭理财通软件的设计——收入管理模块.docx...

PAGE河北农业大学信息学院本科毕业论文题 目&#xff1a;基于Android系统的家庭理财通软件的设计——收入管理模块学 院&#xff1a; 信息科学与技术学院专业班级&#xff1a; 计算机科学与技术0902班学 号&#xff1a;二O一三 年 五 月 二十八 日摘 要基于安卓系统的家庭理财通…

BZOJ1652 [Usaco2006 Feb]Treats for the Cows

蒟蒻许久没做题了&#xff0c;然后连动规方程都写不出了。 参照iwtwiioi大神&#xff0c;这样表示区间貌似更方便。 令f[i, j]表示i到j还没卖出去&#xff0c;则 f[i, j] max(f[i 1, j] v[i] * T, f[i, j - 1] v[j] * T) &#xff08;←这样用推的方式更好想一点。。&#…

android系统提供了url通信,Android两种HTTP通信,HttpURLConnection和HttpClient

Android系统中主要提供了两种方式来进行HTTP通信&#xff0c;HttpURLConnection和HttpClient&#xff0c;几乎在任何项目的代码中我们都能看到这两个类的身影&#xff0c;使用率非常高。不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的&#xff0c;如果不进行适当封…

ECSHOP 订单状态 记录

记录订单状态 order_status /* 订单状态 */ define(‘OS_UNCONFIRMED’, 0); // 未确认 define(‘OS_CONFIRMED’, 1); // 已确认 define(‘OS_CANCELED’, 2); // 已取消 define(‘OS_INVALID’, 3); // 无效 define(‘…