ASM-FailGroup验证

一、FailGroup有效性验证

创建DiskGroup,在Redundancy选项

  • High:至少3块disk,至少3个failgroup,每一个extent存在1主2备,分布在不同failgroup
  • Normal:至少2块disk,至少2个failgroup,每一个extent存在1主1备,分布在不同failgroup
  • External:至少1块disk,默认1块disk1个failgroup,每一个extent仅存在1主

方式一:asmca

方式二:SQLPLUS命令行

CREATE DISKGROUP fgtestdg NORMAL REDUNDANCY
FAILGROUP controller1 DISK 'ORCL:FGTEST01', <''>
FAILGROUP controller2 DISK 'ORCL:FGTEST02', <''>;

1.存储消耗测试

在Normal DG和External DG分别建立4MB的数据文件

create tablespace fg datafile '+fgtestdg' size 4m; create tablespace nofg datafile '+nofgtestdg' size 4m;

在fgtestdg磁盘组上表空间fg的extent分布如下,每一个extent存在一个primary copy和一个mirrored copy,且不在同一块DISK上

在nofgtestdg磁盘组上表空间nofg的extent分布如下,每一个extent仅存在一个primary copy,随机分散在不同DISK上

因此,在存储消耗方面:

  • Normal Size = 2 * External Size
  • High Size = 3 * External Size

2.存储读写效率测试

表空间:5G大小,创建时间Normal Time = 2 * External Time,删除时间基本一致

SQL> create tablespace fg_ts_c datafile '+fgtestdg' size 5G; Elapsed: 00:00:28.80

SQL> SQL> create tablespace nofg_ts_c datafile '+nofgtestdg' size 5G;
Elapsed: 00:00:15.12 SQL> drop tablespace fg including contents and datafiles;
Elapsed: 00:00:04.49 SQL> drop tablespace nofg including contents and datafiles; Elapsed: 00:00:04.58
  • 表:100万行记录
  • 创建时间:Normal Time = External Time,删除时间基本一致
  • Read时间:Normal Time < External Time
  • write时间:Normal Time < External Time
CREATE TABLE test_fg tablespace fg_ts_c AS
SELECT rownum AS id
,to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') AS inc_datetime
,3 trunc(dbms_random.value(0, 100)) AS random_id
,dbms_random.string('x', 20) random_string
FROM dual connect BY LEVEL <= 1000000; Elapsed: 00:01:51.68 CREATE TABLE test_nofg tablespace nofg_ts_c AS
SELECT rownum AS id
,to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') AS inc_datetime
,trunc(dbms_random.value(0, 100)) AS random_id
,dbms_random.string('x', 20) random_string
FROM dual connect BY LEVEL <= 1000000; Elapsed: 00:01:51.10 SQL> select count(*) from test_fg;
Elapsed: 00:00:00.56 SQL> select count(*) from test_nofg;
Elapsed: 00:00:00.72 SQL> update test_fg set RANDOM_STRING ='abcdefg' ; 1000000 rows updated.
Elapsed: 00:00:29.07 SQL> update test_nofg set RANDOM_STRING ='abcdefg' ; 1000000 rows updated.
Elapsed: 00:00:34.10

3.盘头破坏测试

  • 分别在之前建立的Normal DG 表空间和External DG表空间上创建测试表

  • 破坏前磁盘状态
select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH from v$asm_disk;

  • 使用dd备份盘头信息
dd if=/dev/oracleasm/disks/FGTEST02 of=/home/grid/FGTEST02.dd bs=1M count=2
dd if=/dev/oracleasm/disks/NOFGTESTDG02 of=/home/grid/NOFGTESTDG02.dd bs=1M count=2
  • 使用dd清除盘头信息
dd if=/dev/zero of=/dev/oracleasm/disks/FGTEST02 bs=4096 count=1
dd if=/dev/zero of=/dev/oracleasm/disks/NOFGTESTDG02 bs=4096 count=1
  • 检查磁盘状态

  • 数据访问正常
SQL> alter system flush buffer_cache;

SQL> select count(*) from test_fg; COUNT(*)
----------
1000000 SQL> select count(*) from test_nofg; COUNT(*)
----------
1000000
  • DG重新mount

    离线表空间,卸载DG
SQL> alter tablespace fg_ts_c offline;
Tablespace altered. SQL> alter tablespace nofg_ts_c offline;
Tablespace altered. SQL> alter diskgroup FGTESTDG dismount;
Diskgroup altered. SQL> alter diskgroup NOFGTESTDG dismount; Diskgroup altered.

正常mount,失败

SQL> alter diskgroup FGTESTDG mount; alter diskgroup FGTESTDG mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "FGTESTDG" cannot be mounted
ORA-15040: diskgroup is incomplete SQL> alter diskgroup NOFGTESTDG mount; alter diskgroup NOFGTESTDG mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "1" is missing from group number "4"

强制mount,Normal成功,External失败

SQL> alter diskgroup FGTESTDG mount force; Diskgroup altered.

SQL> alter diskgroup NOFGTESTDG mount force; alter diskgroup NOFGTESTDG mount force
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "1" is missing from group number "5"

恢复表空间,Normal业务数据访问恢复成功,External无法访问

SQL> alter tablespace fg_ts_c online; Tablespace altered.

SQL> alter tablespace nofg_ts_c online; alter tablespace nofg_ts_c online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: '+NOFGTESTDG/lt/datafile/nofg_ts_c.257.919602769' SQL> select count(*) from test_fg; COUNT(*)
----------
1000000 SQL> select count(*) from test_nofg; select count(*) from test_nofg
*
ERROR at line 1:
ORA-00376: file 9 cannot be read at this time
ORA-01110: data file 9: '+NOFGTESTDG/lt/datafile/nofg_ts_c.257.919602769'
  • 检查磁盘状态

  • 恢复磁盘状态

  • External未成功mount,回写盘头,mount

dd if=/home/grid/NOFGTESTDG02.dd of=/dev/oracleasm/disks/NOFGTESTDG02 bs=4096 count=1
  • Normal强制mount,被放弃,清除盘,重新加入DG,rebalance oracleasm scandisks
oracleasm createdisk FGTEST02 /dev/emcpowere1 alter diskgroup FGTESTDG add disk 'ORCL:FGTEST02';

二、Failgroup优先访问测试

在ASM实例执行

alter system set ASM_PREFERRED_READ_FAILURE_GROUPS='FGTESTDG.FGTEST01';

select instname, failgroup, sum(reads), sum(writes) from v$asm_disk_iostat group by instname,failgroup order by 1,2;

ASM FailGroup验证的更多相关文章

  1. 测试一体机ASM failgroup的相关问题处理

    环境:3台虚拟机 RHEL 7.3 + Oracle RAC 11.2.0.4 问题现象:RAC运行正常,ASM磁盘组Normal冗余,有failgroup整体故障,有failgroup配置错误. 温 ...

  2. 12C新特性 -- 共享asm口令文件

    12C中,ASM口令文件,可以提供本地.远程登录asm的验证.当然,要想使用asm口令文件验证,必须为每个asm创建一个口令文件. 如果是使用asm存储,asmca在配置asm磁盘组的会后,会自动为a ...

  3. 测试一体机ASM Disk online操作

    环境:3台虚拟机 RHEL 7.3 + Oracle RAC 11.2.0.4 问题现象:RAC运行正常,ASM磁盘组Normal冗余,节点主机重启,offline状态的asm disk短时间内可以直 ...

  4. 翻译 | “扩展asm”——用C表示操作数的汇编程序指令

    本文翻译自GNU关于GCC7.2.0版本的官方说明文档,第6.45.2小节.供查阅讨论,如有不当处敬请指正…… 通过扩展asm,可以让你在汇编程序中使用C中的变量,并从汇编代码跳转到C语言标号.在汇编 ...

  5. Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复

    Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...

  6. 第2课 - Hello, DTOS!

    第2课 - Hello, DTOS! 1. 主引导程序 主引导程序是软件还是固件?如果是软件,那么由谁开发?如何开发? (1)上一节说到了固件和软件的区别.由于主引导程序没有在出厂前固化到硬件中,因此 ...

  7. 使用裸设备配置Oracle ASM实例一例

    1.查看当前磁盘 [root@std u01]# fdisk -l Disk /dev/sda: bytes heads, sectors/track, cylinders Units = cylin ...

  8. 转://如何创建ASM磁盘

    1  前言 无论是安装单机版的asm还是rac都离不开ASM磁盘组的创建,创建ASM磁盘组的关键是创建好需要的asm磁盘,发现很多网友安装grid软件和grid实例,都在磁盘的创建这里有很大的问题,本 ...

  9. 转://Oracle 11gR2 ASM磁盘组管理

    一.环境.[grid@rhel2 ~]$ cat /etc/issueRed Hat Enterprise Linux Server release 5.5 (Tikanga) Kernel \r o ...

随机推荐

  1. 利用Nginx实现域名转发 不修改主机头

    在conf下 新建一个 文件 格式 : 域名.conf  例如:www.test.com.conf 文件里配置: server{ listen 80; server_name www.test.com ...

  2. 第七届山东省ACM省赛

    激动人心的省赛终于结束了…平静下来再回头看真的感觉一波三折…先是赛前毫无预兆的查出突发性耳聋…伴随而来的就是左耳听力下降.轻微耳鸣.极个别情况下的头晕…不过这都还好,毕竟药物可以恢复…热身赛只过了一道 ...

  3. javascript数据结构-栈

    github博客地址 栈(stack)又名堆栈,它是一种运算受限的线性表.遵循后进先出原则,像垃圾桶似的.功能实现依然按照增删改查来进行,内部数据存储可以借用语言原生支持的数组. 栈类 functio ...

  4. poj 1695

    用动态规划,dp[a][b][c]表示从位置最大的车在a(注意不是第一辆车),第二的车在b,第三的车在c开始最少需要的时间. 方程:dp[a][b][c]=max{dp[a+1][b][c],     ...

  5. jsp 以及javabean内省技术

    l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...

  6. iOS On-Demand Resources简单理解

    ios9引入了一个新功能,On-Demand Resources,它是app thinning 的一部分.这个机能简单的说,就是在下载app的时候,app中包含的不重要资源不下载,等到需要时,在由系统 ...

  7. MySQL MHA 搭建&测试

    一:背景介绍 MHA(Master HA)是一款开源的MySQL的高可用工具,能在MySQL主从复制的基础上,实现自动化主服务器故障转移.虽然MHA试图从宕机的主服务器上保存二进制日志,但并不是总是可 ...

  8. errno.h

    linux 中c语言使用errno.h头文件来记录错误信息以及定义返回错误代码的宏. strerror(errno)打印错误信息 1. warning: implicit declaration of ...

  9. spring+IOC+DI+AOP优点分析(一)

    Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于sprin ...

  10. 教你几种在SQLServer中删除重复数据方法(转)

    转载地址:http://www.jb51.net/article/22980.htm 方法一 复制代码 代码如下: declare @max integer,@id integer declare c ...