当前位置: 首页 > news >正文

做网站大图片临沧网站建设公司

做网站大图片,临沧网站建设公司,房山网站建设怎么样,近期的新闻消息1. ROWID 1.1 OB和Oracle中rowid的区别 正如大家所知道的#xff0c;OceanBase兼容Oracle的rowid特性#xff0c;但在其生成规则上却存在不同#xff0c;具体表现如下#xff1a; OceanBase ● 定义#xff1a;OceanBase#xff08;简称 OB#xff09;的rowid是通过…1. ROWID 1.1 OB和Oracle中rowid的区别 正如大家所知道的OceanBase兼容Oracle的rowid特性但在其生成规则上却存在不同具体表现如下 OceanBase ● 定义OceanBase简称 OB的rowid是通过主键包括隐藏主键直接经过base64编码计算得出的因此一旦主键发生变动相应的rowid也会随之改变。关于主键的生成规则具体如下 ○有主键非分区表用户定义的主键 ○有主键分区表用户定义的主键 ○无主键非分区表内部生成sequence作为隐藏主键 ○无主键分区表分区键sequence作为隐藏主键 ●长度17个字符。 Oracle ●定义该值表明了该行在oracle数据库中的物理具体位置。保存rowid需要10个字节或者是80个位二进制位。这80个二进制位分别是 ○1. 数据对象编号表明此行所属的数据库对象的编号每个数据对象在数据库建立的时候都被唯一分配一个编号并且此编号唯一。数据对象编号占用大约32位。 ○2. 对应文件编号表明该行所在文件的编号表空间的每一个文件标号都是唯一的。文件编号所占用的位置是10位。 ○3. 块编号表明改行所在文件的块的位置块编号需要22位。 ○4. 行编号表明该行在行目录中的具体位置行编号需要16位。 ●长度rowid需要 10个字节的存储空间并用18个字符来显示。 1.2 用户业务场景和迁移方案 业务场景 ●表A存储业务单据信息数据量较大 ●表BA表关联表表中有一列存放B表的rowid值 ●业务场景需要经常通过B表去A表关联取数为了优化取数性能直接通过rowid关联。 迁移方案 由于迁移后OB rowid长度和Oracle不一致且定义完全不同列数据迁移过去会失去原有意义成为垃圾数据。具体改造方案如下 1.表结构调整删除rowid类型列数据也不做迁移 2.性能调优创建合适索引通过其他字段关联查询。由于业务侧预留了业务主键可以关联实测性能满足客户需求。 1.3 Oracle rowid发生变化的场景 由于OMS迁移过程中全量和增量迁移都和源端oracle的rowid密切关联无论有主键表还是无主键表所以我们需要密切关注Oracle源端的rowid变化场景迁移过程中都要避免。Oracle rowid发生变化的场景如下 ○1. Oracle 行迁移 ○2. 另外一些不急于rowmovement会导致rowid修改的动作比如move和逻辑导出再导入 Oracle 行迁移row movement场景 ●行迁移 ( Row movement): 默认情况下oracle数据块中的一行其生命周期内是不会发生移动的即块的rowid不会发生改变。但是在某些情景下我们希望行的rowid可以发生变化这时候我们就需要启动表的row movement特性。 -- 启用row movement特性 Alter table table_name enable row movement; 1分区表 当我们允许分区表的分区键是可更新的时候如果分区键的更新导致当前修改的数据条目需要移动到其他分区此时就会发生rowid的改变。 create table test_rowid(id number,test_value varchar2(10)) partition by list(test_value)( partition p1 values(1), partition p2 values(2), partition p3 values(3));insert into test_rowid values(1,1); insert into test_rowid values(2,2); insert into test_rowid values(3,3); insert into test_rowid values(4,1); commit;select rowid,id,test_value from test_rowid ; /*ROWID ID TEST_VALUE AAAefAAAHAADJMWAAA 1 1 AAAefAAAHAADJMWAAB 4 1 AAAefBAAHAADJcWAAA 2 2 AAAefCAAHAADJsWAAA 3 3 */update test_rowid set test_value2 where id4; -- ORA-14402: updating partition key column would cause a partition changealter table test_rowid enable row movement;update test_rowid set test_value2 where id4; -- 1 row updated.select rowid,id,test_value from test_rowid ; /*ROWID ID TEST_VALUE AAAefAAAHAADJMWAAA 1 1 AAAefBAAHAADJcWAAA 2 2 AAAefBAAHAADJcWAAB 4 2 AAAefCAAHAADJsWAAA 3 3 */ id4的列rowid发生变化。 2闪回操作 在闪回操作时我们同样需要开启表的row movement特性。 alter table test_rowid disable row movement; -- Table altered.SQL select current_scn from v$database; -- 38719199select rowid,id,test_value from test_rowid where test_value1; /* ROWID ID TEST_VALUE AAAefAAAHAADJMWAAA 1 1 */ delete from test_rowid where test_value1; commit;flashback table test_rowid to scn 38719199; -- ORA-08189: cannot flashback the table because row movement is not enabledalter table test_rowid enable row movement; -- Table altered.flashback table test_rowid to scn 38719199; -- Flashback complete.select rowid,id,test_value from test_rowid where test_value1; /* ROWID ID TEST_VALUE AAAefAAAHAADJMWAAC 1 1 */flashback table原理oracle flashback table 是通过临时表来实现的。 create table hh(id number); insert into hh values(1); commit;alter table hh enable row movement; select current_scn from v$database; -- 1635103update hh set id 2; commit; alter session set tracefile_identifier ee; alter session set sql_tracetrue; flashback table hh to scn 1635103; -- Flashback complete.通过查看trace文件我们可以发现oracle flashback table 是通过一个临时表sys_temp_fbt来实现的。 trace文件中的部分内容如下 ******************************************************************************** sqliddtjmzuugu6ktw INSERT /* APPEND */ into SYS_TEMP_FBT SELECT /* FBTSCAN FULL(S) PARALLEL(S, DEFAULT) */ :1, :2, :3, rowid, SYS_FBT_INSDEL FROM APPTEST.HH as of SCN :4 S ******************************************************************************** sqlidbytpvbcb8zbb6 /* Flashback Table */ DELETE /* BYPASS_UJVC */ FROM (SELECT /* ORDERED USE_NL(S) PARALLEL(S,DEFAULT) PARALLEL(T,DEFAULT) */ S.rowid FROM SYS_TEMP_FBT T, APPTEST.HH S WHERE T.rid S.rowid and T.action D and T.object# : 1) V ******************************************************************************** sqlida3h5cbfc5b6xv /* Flashback Table */ INSERT /* PARALLEL(S, DEFAULT) PARALLEL(T, DEFAULT) */ INTO APPTEST.HH SELECT /* USE_NL(S) ORDERED PARALLEL(S, DEFAULT) PARALLEL(T, DEFAULT) */ S.* FROM SYS_TEMP_FBT T , APPTEST.HH as of SCN :1 S WHERE T.rid S.rowid and T.action I and T.object# :2 由此可见oracle是通过SYS_TEMP_FBT进行删除操作而后进行插入操作 因此行的rowid有可能发生改变。SQL select * from sys_temp_fbt ; SCHEMA OBJECT_NAME OBJECT# RID A ---------- -------------------- ---------- ------------------------------ - hh hh 76906 AAASxqAAGAAAAC0AAA D hh hh 76906 AAASxqAAGAAAAC0AAA ISQL select tname,tabtype from tab; TNAME TABTYPE ------------------------------ ------- HH TABLE SYS_TEMP_FBT TABLE drop表Oracle有另外的回收站技术恢复不需要开ROW MOVEMENT SQL ALTER TABLE test_rowid DISABLE ROW MOVEMENT; Table altered. SQL DROP TABLE test_rowid; Table dropped. SQL FLASHBACK TABLE test_rowid TO BEFORE DROP; Flashback complete. 没错因为drop表Oracle有另外的回收站技术恢复过来而删除几行记录是不能 直接通过回收站恢复的。 3回收空间 在收缩空间时也会造成行的移动 SQL alter table hh disable row movement; Table altered.SQL alter table hh shrink space; alter table hh shrink space * ERROR at line 1: ORA-10636: ROW MOVEMENT is not enabledSQL alter table hh enable row movement; Table altered.SQL alter table hh shrink space; Table altered.Shrink space操作without compact也会导致所有已经打开的游标失效因此需要谨慎使用 1.4 OB rowid变化场景 对于源端是OB的情况OMS迁移并不会依赖rowid通过前面的介绍也可以看到OB rowid的变化是很频繁的主要变化场景如下 ●有主键非分区表主键发生变化rowid变化 ●有主键分区表因为分区键包含在主键内所以同上 ●无主键非分区表对于一行记录rowid不会变化。 ●无主键分区表分区键发生变化时rowid变化
http://www.dnsts.com.cn/news/94302.html

相关文章:

  • 英语网站建设费用access做网站数据方法
  • 南宁网站建设方案报价顺口好记的公司名字
  • 开彩票网站做私庄wordpress地址重改
  • 西安在线网站制作网站用户体验比较
  • 深圳好看的公司网站oppo开发者选项在哪里打开
  • 网站开发需要什么专业的人才网站刷新代码
  • 网站游戏怎么制作阳明拍卖公司网站
  • 北京网站的优化哪个公司的装饰设计公司
  • 网站建设企业建站wordpress页面更新发布失败
  • 学校网站html模板宿迁网站建设推广公司
  • 公司网站销售平台建设费分录wordpress mu
  • wordpress手机端网站模板下载失败蒙牛网站是谁做的
  • dedecms网站地图修改南通市 网站设计
  • 成都市建设领域网站咨询电话宁波seo搜索引擎优化
  • 网站开发商标属于哪一类雷锋书签制作图片
  • 30天网站建设实录视频云盘icons
  • 有手机网站怎样做微信小程序大连住房城乡建设网站
  • 网站关闭与域名备案网页设计模板图片家乡
  • 防伪网站怎么做建立问答类的网站
  • 介绍美食的网站模板免费下载网络营销公司都做什么的
  • vs做网站开发育婴师培训
  • 个人建设网站需要什么证件吗jquery网站源码
  • 石龙镇住房规划建设局网站北京建站模板展示
  • 网站建设 淘宝描述psd做淘宝主要看哪些网站有哪些
  • 网站现在怎么做排名无锡做网页设计的公司
  • 做投标需要知道什么网站网站后台怎么管理
  • 华企在线网站建设哈尔滨最好的网站建设公司
  • 做箱包关注哪个网站中国女排赛程时间最新消息
  • 江苏网站建设公司昆明网站建设kmdtkj
  • 苏州制作网站哪家好html5网站特效