转载自:http://book.51cto.com/art/201108/288296.htm
在Oracle Database 11g以前,ASM磁盘的损坏通常都是一种灾难,即使你的ASM磁盘组是受Normal Redundancy或High Redundancy的保护。因为在Oracle 10g中,损坏的ASM磁盘会马上offline,进而这个损坏的磁盘立刻会被Oracle drop掉。以后即便你修复了这块磁盘,重新加入原先磁盘组的时候,Oracle也会做rebalance操作来完全重构这个磁盘上的数据,这个rebalance操作之前有提到──可能会极为耗时。试想如果这个损坏的磁盘仅仅是因为掉电或者仅仅损坏了几个块就需要完全重构,无疑效率是非常低的。
Oracle意识到这是个问题,于是在11g里引入了一个参数disk_repair_time,其默认值是3.6小时并且用户可以修改。其含义是当损坏的磁盘offline后,Oracle并不会马上将其drop,而是会等待参数disk_repair_time所表示的时间,在这段时间内,Oracle会记录下对损坏的磁盘上的extent所做的修改,一旦这个offline的损坏的磁盘在disk_repair_time所表示的时间内重新online,则Oracle会将之前所记录的对这个磁盘上extent所做的修改重新同步到这块盘上,从而高效地同步了数据(因为这里只同步了offline后修改的extent上的数据),避免了极为耗时的重构全部数据的rebalance过程─这就是Oracle
11g里引入的快速镜像同步(Fast Mirror Reync)。
快速镜像同步的原理可以通过图6-31来说明。
|
图6-31 Oracle Databaes 11g快速镜像同步示意图 |
来看一个实际的例子,首先创建一个Normal Redundancy的磁盘组dgtest:
- SQL>creatediskgroupDGTESTnormalredundancy
disk'/dev/raw/raw1','/dev/raw/raw2';
- attribute'compatible.rdbms'='11.1','compatible.asm'='11.1';
- Diskgroupcreated.
-
SQL>selectgroup_number,namefrom
v$asm_diskgroupwheregroup_number=1;
- GROUP_NUMBERNAME
- --------------------------------
- 1DGTEST
可以从视图v$asm_attribute中查看disk_repair_time的值:
- SQL>selectname,valuefromv$asm_attributewheregroup_number=1;
- NAMEVALUE
- ----------------------------------------
- disk_repair_time3.6h
- au_size1048576
- compatible.asm11.1.0.0.0
- compatible.rdbms11.1.0.0.0
现在连上数据库的实例,并创建一个测试表空间testtbs:
- SQL>createtablespaceTESTTBSdatafile'+DGTEST'size20m;
- Tablespacecreated.
然后关闭上述数据库实例并且dismount上述磁盘组:
- SQL>alterdiskgroupdgtestdismount;
- Diskgroupaltered.
接着更改/dev/raw/raw1的权限以模拟磁盘损坏:
- [root@11g~]#chownroot:root/dev/raw/raw1
- [root@11g~]#ls-ltr/dev/raw/raw1
- crw-rw----1rootroot162,1Jan1415:23/dev/raw/raw1
可以看到,现在DGTEST当然是mount不起来了:
- SQL>alterdiskgroupdgtestmount;
- alterdiskgroupdgtestmount
- *
- ERRORatline1:
- ORA-15032:notallalterationsperformed
- ORA-15040:diskgroupisincomplete
- ORA-15042:ASMdisk"0"ismissing
像上述这种normal redundancy的磁盘组坏了一块盘的情况,在Oracle 11g中我们可以使用force关键字强制mount:
- SQL>alterdiskgroupdgtestmountforce;
- Diskgroupaltered.
从结果里我们可以看到/dev/raw/raw1所对应的DGTEST_0000所对应的repaire_time是12960秒,也就是缺省的3.6小时:
- SQL>selectpath,name,repair_timerfrom
v$asm_diskwheregroup_number=1;
- PATHNAMEREPAIR_TIMER
- -----------------------------------------------
- DGTEST_000012960
- /dev/raw/raw2DGTEST_00010
现在我们重新连上数据库实例并对表空间testtbs添加一个数据文件,以模拟在有offline磁盘存在情况下的数据修改:
- SQL>altertablespacetesttbsadddatafile'+DGTEST'size20m;
- Tablespacealtered.
接着把/dev/raw/raw1的权限改回来以模拟损坏的磁盘已经修好了(chown oracle.dba /dev/raw/raw1)。现在可以对/dev/raw/raw1所对应的DGTEST_0000执行online操作了:
- SQL>alterdiskgroupdgtestonlinediskDGTEST_0000;
- Diskgroupaltered.
等Oracle执行完快速镜像同步后,可以看到现在/dev/raw/raw1已经恢复正常:
- SQL>selectpath,header_status,mount_status
fromv$asm_diskwheregroup_number=1;
- PATHHEADER_STATUMOUNT_S
- ----------------------------------
- /dev/raw/raw2MEMBERCACHED
- /dev/raw/raw1MEMBERCACHED
分享到:
相关推荐
重新同步特征节点回调管理,如同步代码承诺支持本机ES6承诺蓝鸟用法安装使用npm安装此软件包: npm install --save resync例子数据库查询 var Resync = require ( 'resync' ) ;var Pg = require ( 'postgres' ) ;var...
错误之处,还请指出,谢谢。
草绘71符号重新同步 此插件可为在Sketch 71.0中打开的Cloud Libraries恢复正确的ID。 如果文档中的符号和共享样式已停止在检查器中显示其源库,而是显示“此文档”,则您将遇到此问题。 用法 下载并安装插件(有关更...
rapidio 端口错误恢复参考手册,错误恢复流程是rapidio标准操作,该手册将此过程讲述直观、易理解,
栏目介绍这是为srt文件制作的重新同步工具。 这些二进制文件在“ Excutables”目录中可用,并且提供了Linux开发的源代码。 我计划保持代码更新,以后再添加更多功能,并达到相同的界面和可能相同的源代码。笔记该...
Rsync是一款功能强大的网络备份软件。 本资源是其源码。
SubSync.m 通过定义 timeshift 或 begin-/endtimes 来调整 *... 子同步(文件夹、旧文件、新文件、dt) % 方法 2 % % T1=[00 03 03 500]; %HMS % % Te=[01 58 06 000]; % % SubSync(文件夹,旧文件,新文件,T1,Te)
DVI 1.0 encode and decode source code, write with verilog, with simulation project, synplify project and all soure code. They're have been running on xilinx spartan3A FPGA. ...resync_part_new.vhd
2012Windows系统脚本技术大全.zip;[本站资源全部免费];2012年最新整理;2012最新...
resync.py提供了一种新颖的方法来充分利用同步和异步世界,它具有一个简单而强大的API,该API允许诸如基本的生产者-消费者模型,将回调的结果传递给另一个函数等功能。 threaded.py集中了从thread / _thread的导入...
下面的示例解析一个SRT文件,将其重新同步并输出一个VTT文件: import fs from 'fs' import { parse , resync , stringify } from 'subtitle' fs . createReadStream ( './my-subtitles.srt' ) . pipe ( parse ( ...
重复 目的 多核复制使蒙特卡洛仿真更加轻松快捷。基于重新考虑软件包中的mcreplicate函数。程序包需要安装 ,这可能是一个障碍,同时也没有为该功能添加功能。 注意:Windows不提供多核支持。 安装 ...
它包括4个命令:随机化(生成随机排序的名称列表)resync(保留列表订单相同,但添加/删除已加入或剩下的客人)复制(将名称列表复制到剪贴板)autopost ** new **(生成或重新同步列表时自动发布到聊天窗口)您可以...
rtp_session_resync rtp_session_set_time_jump_limit copymsg rtp_session_enable_jitter_buffer rtp_session_compute_recv_bandwidth rtp_session_compute_send_bandwidth rtp_session_set_rtp_socket...
Resync . ( Refetch . ( get( "http://httpbin.org/get" ) |> Future . flatMap( fun | Response . Ok ( _ , response ) => Response . text(response) | _ => "oops!" |> Future . from) |> Future . ...
欢迎来到NASMan Django ZFS NAS管理系统。...$ docker exec nasman_web_1 python manage.py sitetree_resync_apps 您的安装现在将在主机的端口8000上运行并正在侦听。 目前,它正在使用Django运
Vobsub里自带的Subresync可以说是最方便好用的一个小工具了。然而后来的版本貌似与IE有冲突。网上有不少版本宣称是可以运行,实际上都是闪退。此版本在Win7 x64 IE11的环境上实测正常运行!
Resync(User) Post Counts 此hack将会 在管理员面版里面加入一个新的记录发贴数量的功能。一但帖子被删除或销毁,贴数数量并未被真实的反应出来。此hack将搜索所有帖子并重新计算贴子数量 Stats for the ...
SQL语法大全 SQL语法大全 1. ASP与Access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...