Bo's Oracle Station

查看: 2209|回复: 8

ASM盘组跨存储柜的问题

[复制链接]

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
发表于 2017-1-16 13:17:29 | 显示全部楼层 |阅读模式
唐SIR:
   近期遇到一起ASM盘组连接的存储故障脱机,导致盘组全部都dismount,吓尿了一干人等~~
   运气较好,后来存储自身恢复过来了,重新mount盘组没有报错。
   由此引发2个问题:
   1,类似的情况,如果ASM的物理磁盘突然脱机,再次联机后,是否存在无法mout的风险,这样的情况如果用ocrconfig备份元数据,是否有意义?
   2,如果做normal冗余度,一个盘组的2块磁盘跨不同的物理磁盘,可以避免单个磁盘脱机带来的风险。
        但是这2个磁盘如果性能差异较大,比如一个15k转数,一个7.2K转数,这样组成一个ASM盘组,是否合适?
        盘组的速度是服从低的那一个吗?
回复

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-1-18 11:19:10 | 显示全部楼层
本帖最后由 botang 于 2017-1-18 11:21 编辑

抱歉,才看到。

1. 非常有意义,另外最好还要做ASM元数据备份:
  1. ASMCMD> help md_backup
  2.         md_backup <backup_file>
  3.                   [-G '<diskgroup_name>,<diskgroup_name>,...']

  4.         Perform ASM metadata backup for disk groups.
  5.         Back up into backup file disk group metadata information including
  6.         fail groups, disks, attributes, aliases, and templates.
  7.         Store information into <backup_file>.
  8.         -G Disk groups to backup. All diskgroups are backed up by default.
  9. ASMCMD> help md_restore
  10.         md_restore  <backup_file> [--silent]
  11.                    [--full|--nodg|--newdg] [-S <sql_script_file>]
  12.                    [-G '<diskgroup_name>,<diskgroup_name>,...']
  13.                    [-o '<old_diskgroup_name>:<new_diskgroup_name>,...']

  14.         Perform ASM Metadata restore for disk groups.
  15.         Read metadata information from <backup_file>.
  16.         --silent Ignore errors. Normally if md_restore encounters an error, it
  17.                  will stop. Specifying this flag ignores that.
  18.         --full  create disk group and restore metadata.
  19.         --nodg  restore metadata only.
  20.         --newdg create disk group with a different name and restore
  21.                    metadata; -o is required.
  22.         -S Write SQL commands to <sql_script_file> instead of executing them.
  23.         -G Select the disk groups to be restored. If no disk groups defined,
  24.            all of them will be restored.
  25.         -o Rename disk group <old_diskgroup_name> to <new_diskgroup_name>.
复制代码
举个文档里例子:

  1. ASMCMD> md_backup –b jfv_backup_file -g data
  2. Disk group to be backed up: DATA#
  3. Current alias directory path: jfv
  4. ASMCMD>


  5. ASMCMD> md_restore -b jfv_backup_file -t full -g data
  6. Disk group to be restored: DATA#
  7. ASMCMDAMBR-09358, Option -t newdg specified without any override options.
  8. Current Diskgroup being restored: DATA
  9. Diskgroup DATA created!
  10. User Alias directory +DATA/jfv
  11.                  created!
  12. ASMCMD>
复制代码



2. 设定“倾向读”参数,平时读快盘:asm_preferred_read_failure_groups参数
  1. SELECT preferred_read FROM v$asm_disk;
  2. SELECT * FROM v$asm_disk_iostat;
复制代码

回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2017-1-18 11:34:51 | 显示全部楼层
唐老师,我尝试备份了fra的元数据:
ASMCMD> md_backup /backup/asm_backup_fra -G fra
Disk group metadata to be backed up: FRA
Current alias directory path: ORCL/CONTROLFILE
Current alias directory path: ORCL/ARCHIVELOG/2017_01_16
Current alias directory path: ORCL/BACKUPSET/2016_12_30
Current alias directory path: ORCL/ARCHIVELOG/2017_01_17
Current alias directory path: ORCL
Current alias directory path: ORCL/ARCHIVELOG/2017_01_18
Current alias directory path: ORCL/ARCHIVELOG
Current alias directory path: ORCL/BACKUPSET
Current alias directory path: ORCL/ONLINELOG

备份完成后查看备出来的内容:
[oracle@station79 ~]$ cat  /backup/asm_backup_fra
发现其中有下面这一段关于归档日志目录的。
由此产生一个疑问,上课的时候提到才备份ocrconfig的时候,是crs的元数据,变动很小,如果crs_stat -t列表没有变化,都可以用于还原。
但是这里不一样,每天都会产生一个新的,以日期命名的归档目录,假设我今天备份了。
但是明天挂掉的时候,我用今天的备份去恢复,备份里面会缺失明天的归档目录,这样可以吗?或者说每天都要备份?

                    'ALIASINFO' => {
                                      '6' => {
                                               'DGNAME' => 'FRA',
                                               'LEVEL' => 2,
                                               'ALIASNAME' => 'ORCL/ARCHIVELOG/2017_01_17',
                                               'REFERENCE_INDEX' => '33555121'
                                             },
                                      '3' => {
                                               'DGNAME' => 'FRA',
                                               'LEVEL' => 1,
                                               'ALIASNAME' => 'ORCL/ONLINELOG',
                                               'REFERENCE_INDEX' => '33554591'
                                             },
                                      '7' => {
                                               'DGNAME' => 'FRA',
                                               'LEVEL' => 2,
                                               'ALIASNAME' => 'ORCL/ARCHIVELOG/2017_01_16',
                                               'REFERENCE_INDEX' => '33555386'
                                             },
                                      '2' => {
                                               'DGNAME' => 'FRA',
                                               'LEVEL' => 1,
                                               'ALIASNAME' => 'ORCL/ARCHIVELOG',
                                               'REFERENCE_INDEX' => '33555333'
                                             },
                                      '8' => {
                                               'DGNAME' => 'FRA',
                                               'LEVEL' => 2,
                                               'ALIASNAME' => 'ORCL/BACKUPSET/2016_12_30',
                                               'REFERENCE_INDEX' => '33555280'
                                             },
                                      '1' => {

回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-1-19 09:32:37 | 显示全部楼层
lujiaguai 发表于 2017-1-18 11:34
唐老师,我尝试备份了fra的元数据:
ASMCMD> md_backup /backup/asm_backup_fra -G fra
Disk group metad ...

这个确实要频繁备份。因为ocrconfig备份的是集群件注册资源的元数据,而这个是备份磁盘组文件系统元数据。
回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2017-1-19 15:24:51 | 显示全部楼层
昨天开始我就访问不到论坛了~
关于第二点,我试了一下
alter system set asm_preferred_read_failure_groups='DATA.DATA_0003';
SQL> SELECT failgroup,preferred_read FROM v$asm_disk;

FAILGROUP                                                                                  PRE
------------------------------------------------------------------------------------------ ---
FRA_0001
DATA_0003                                                                                  Y
DATA_0002                                                                                  N
FRA_0000
DATA_0001                                                                                  N
DATA_0000                                                                                  N
6 rows selected.

通过命令,把data盘组的,DATA_0003这个failgroup设为parmary
然后我观察
select instname, failgroup, sum(reads), sum(writes) from v$asm_disk_iostat group by instname,failgroup order by 1,2;
instname   failgroup                     sum(reads) sum(writes)
--------------------------------------------------------------------------------------
orcl        DATA_0000        78229        147092
orcl        DATA_0001        155944        96989
orcl        DATA_0002        75651        144283
orcl        DATA_0003        117735        150200
orcl        FRA_0000        128        36473
orcl        FRA_0001        4261        90064

我试图观察这里,data_003的 sum(reads)的数值变化
预期的结果是data4个failgroup的reads应该只有data_003这个再增加,对吗?
我观察的结果并不是这样,感觉data_001也在增加,是不是我观察的过程错了?
1,通过 反复insert into select * from dba_objeces,建了一张400多万行的表
2,然后select * 这样表
3,观察变化,但发现并非只有data_003的读在增加
回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2017-1-19 15:34:51 | 显示全部楼层
本帖最后由 lujiaguai 于 2017-1-20 08:57 编辑

另外,由此想到另外一个问题
如果oracle软件本身挂了,无法访问了,但是asm盘组还在
如果我新建一个oracle服务器,能否通过下面的方法读到原ASM的数据
1,把asm磁盘挂到新建的oracle服务器下
2,oracleasm createdisk *** 把盘建出来
3,在 +ASM实例下:alter system set asm_diskstring=’/dev/oracleasm/disks/*‘
4,vim /etc/oracle/ocr.loc 上增加 ocrconfig_loc=+data,orcconfig_loc=+fra
4,这样能够就可以直接识别到原ASM盘组内的内容?
感觉似乎不行,记得课堂上说,createdisk的时候,会重写盘组的头部信息。

但是我看到有人说这样可以,他说是在rac的时候把ASM盘组的数据挂到另外2台RAC的机器上。
说是设定asm_diskstring,然后重建新的仲裁磁盘即可。
RAC的内容没有跟唐老师学过,概念非常的模糊。
没有细学的东西不去追究它。
只是由此想到如果RAC可以通过类似的做法,那么我们学习的单实例ASM,应该也可以才是。
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-1-20 09:54:04 | 显示全部楼层
lujiaguai 发表于 2017-1-19 15:24
昨天开始我就访问不到论坛了~
关于第二点,我试了一下
alter system set asm_preferred_read_failure_gro ...

这是很明显的,DATA_000X自己成自己的failgroup,叫他怎么进行 prefer读。

解释一下:select 400万行,一定要IO进别的failgroup。

正确的实验是:建一个failgroup里头包含两个盘,而且空间富裕,然后指定其中的一个盘为prefer读。观察这两个盘的读情况。
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-1-20 10:12:36 | 显示全部楼层
lujiaguai 发表于 2017-1-19 15:34
另外,由此想到另外一个问题
如果oracle软件本身挂了,无法访问了,但是asm盘组还在
如果我新建一个oracl ...

绝对不能oracleasm createdisk,这是肯定的。

在新机器上如果存储硬件挂好。装好Grid Infrastructur软件(software only)。
执行/u01/app/oracle/product/11.2.0/grid/root.sh
见到cssd资源。
之后
echo "*.asm_diskgroups='DATA', 'FRA'"  > /u01/app/oracle/product/11.2.0/grid/dbs/init+ASM.ora
echo "*.asm_diskstring='/dev/oracleasm/disks/*'"  > /u01/app/oracle/product/11.2.0/grid/dbs/init+ASM.ora

/u01/app/oracle/product/11.2.0/grid/bin/srvctl add listener
/u01/app/oracle/product/11.2.0/grid/bin/srvctl add asm
/u01/app/oracle/product/11.2.0/grid/bin/crsctl start resource ora.asm

  1. alter diskgroup data mount;
  2. alter diskgroup fra mount;
复制代码


/u01/app/oracle/product/11.2.0/grid/bin/srvctl add database -d orcl -o /u01/app/oracle/product/11.2.0/dbhome_1
/u01/app/oracle/product/11.2.0/grid/bin/crsctl start resource ora.orcl.db


回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2017-1-20 11:22:42 | 显示全部楼层
botang 发表于 2017-1-20 10:12
绝对不能oracleasm createdisk,这是肯定的。

在新机器上如果存储硬件挂好。装好Grid Infrastructur软 ...

唐SIR果然是老江湖。
这样的做法条理清晰,一目了然,非常的标准!

另外,前面关于优先读的问题,我会找时间再做验证的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-12-5 10:18 , Processed in 0.041491 second(s), 24 queries .

快速回复 返回顶部 返回列表