ASM笔记5--磁盘组操作相关



2.4.5 如何mount 和dismount 磁盘组
show parameter asm_diskgroups  --看哪些磁盘组自动启动。
实际上,只要我们把磁盘组的名称添加到了ASM_DISKGROUPS的初始化参数中,那么在启动ASM 实例的时候,就会自动挂载这些磁盘组。
同样,在我们shutdown ASM 实例时,也会dismount这些diskgroups。
另外一点,在我们创建一个diskgroup的时候,ASM 也会自动mount 这个磁盘组,并且在我们drop diskgroup时自动的dismount。
--查询当前实例中有那些磁盘组
select group_number,name from v$asm_diskgroup;
当我们mount 一个diskgroup的时候,会选择一个disk group number 与之对应。 但是这个number 不是固定的,因为这些disk group number 与disk

group 的对应关系永久的保存在任何结构中。

前面说的都是自动的mount和dismount,我们也可以手工的进行这些操作,语法如下:
ALTER DISKGROUP ANQING MOUNT
ALTER DISKGROUP ANQING DISMOUNT
ALTER DISKGROUP ALL DISMOUNT;

2.4.3.1 使用FORCE 强制mount disk groups
当disk group的冗余级别是Normal 或者是high 的时候,如果diskgroup 在我们挂载这个diskgroup的时候,如果有部分disk 不可用,那么就必须使

用MOUNT FORCE 来挂载。
alter diskgroup fra dismount force;
ALTER DISKGROUP FRA MOUNT force;

2.4.6 如何检查磁盘组 metadata 的内部一致性?
我们可以ALTER DISKGROUP + CHECK 选项来检查disk group metadata的内部一致性。
该命令可以检查diskgroup 中某个特定的文件,特定的disk 或者所有disk,或者指定的failure。
该命令必须在diskgroup处于mount状态下才能执行。
ALTER DISKGROUP FRA CHECK ALL;
Check 子句会执行如下操作:
(1)验证disk的一致性。
(2)交叉效验所有文件的extent maps 和allocation tables 是否一致。
(3)检查alias metadata directory和file directory 关联是否正确。
(4)验证alias directory tree 是否正确link。
(5)检查Oracle ASM metadata directories是否有不能读取的allocated blocks
默认情况下,CHECK DISK GROUP 会验证所有的metadata 目录。 然后显示汇总的错误摘要,并将详细的错误信息写入到alert log。
如果这里没有错误,将没有信息返回。

在使用CHECK的时候,也可以指定REPAIR 和NOREPAIR 子句来指定ASM 是否尝试修复check过程中发现的错误。 默认使用NOREPAIR. 
ALTER DISKGROUP FRA CHECK ALL REPAIR;

2.4.7 如何drop diskgroup?  一定要慎重操作
DROP DISKGROUP 命令可以删除ASM disk group,当我们指定INCLUDING CONTENTS 子句后,那么在删除disk group的时候也会删除disk group上的所

有文件。
默认是EXCLUDING CONTENTS,这样只要diskgroup上还有任何文件,我们都不能drop diskgroup。
为了保证DROP DISKGROUP成功执行,必须保证ASM instance 已经启动,disk group 处于mount 状态,并且该diskgroup 上没有文件被打开。  当

drop 成功以后, drop 命令才会返回到命令界面。
在我们drop 的时候,ORACLE ASM 会dismount 这个diskgroup,如果使用的是spfile来启动的ASM 实例,那么会从ASM_DISKGROUPS 初始化参数中移除

disk group的名称。
如果使用的是pfile 文件,那么在下次启动ASM 实例之前,必须手工的从ASM_DISKGROUPS 参数中移除删除的diskgroup。
删除DISK GROUP的语法如下:
DROP DISKGROUP ANQING;
drop diskgroup anqing including contents;
执行该语句后,在确认磁盘组上没有任何打开的文件,ORACLE ASM 会重写该磁盘组上每个disk 的header,来移除ASM formatting的信息。 因为我们

这里没有指定INCLUDING CONTENTS,所以如果diskgroup上包含其他文件,该语句就会返回失败。
Z72-MZ(94071007)21:12:39
 
如果我们不能mount 一个disk group,但我们又必须drop它,那么我们可以指定FORCE 选项。 这样就可以我们移除disk group上所有disk header的

信息。
语法如下:
DROP DISKGROUP data1 FORCE

2.4.8 如何重命名Disks Groups? 
2.4.3.1 说明
我们这里对diskgroup 重命名使用的是renamedg工具,这个工具是在oracle 11gR2中引入的。 11gR2 之前需要单独的安装这个patch,才能使用

renamedg。
renamedg 对disk group rename时有2个阶段:
1.阶段1: 生成第二阶段需要使用的配置文件
2.阶段2:使用前面生成的配置文件来执行变更操作。
[grid@asm trace]$ renamedg -help

语法的相关说明:
phase={one|two|both}:
指定运行的阶段,该选项有:one,two和both。 该选项是可选的,默认是both。
如果我们以both运行,在这个过程中出现问题,那么我们可以使用two重新执行。

dgname=diskgroup:
指定待重命名的diskgroup

newdgname=newdiskgroup:
指定disk group的新名称

config=configfile:
用来指定第一节生成配置文件的名称和路径。 该参数是可选的,默认的配置文件名称是:renamedg_config,默认的位置是脚本指定的当前路径。在

不同的平台,可能需要添加单括号。

asm_diskstring=discoverystring, discoverystring ...:
指定ORACLE ASM discovery的字符串。如果ASM disk不是平台的默认路径,一定要加这个参数,不同平台,可能需要添加单引号,可以使用通配符。

clean={true|false}:
指定是否允许错误,默认是true,即允许有错误。

check={true|false}:
该参数用在第二阶段,如果为true,那么会输出disk 的变化list。 这个是可选选项,默认为false。

confirm={true|false}:
该参数用在第二阶段,如果为false,那么renamedg工具会打印出需要改变的信息,并在操作前进行确认。 这个选项是一个可选的选线个,默认为

false。
如果check 已经设置为true,那么这里就没必要设置了。

verbose={true|false}:
是否用详细模式执行。 默认为false,为了便于查看变更过程,建议这里用true。

keep_voting_files={true|false}:
是否保留renamed disk group中的voting files。 默认为false,会在rename时删除voting files。

注意:
1.renamedg 工具不会更新资源的名称,也不会更新与数据库相关的文件。也因为如此,rename 之后,原来的diskgroup 信息不会自动删除。我们还

是可以通过CRSCTL 工具查看到原diskgroup的信息。 但我们可以手工的使用srvctl remove diskgroup命令从CRS的资源中移除disk的信息。

2.renamedg 工具不会rename diskgroup 相关的ASM DISK的名称。

2.4.3.2 操作示例
2.4.2.3.1 查看diskgroup信息并dismount
--查看diskgroup的信息:
select group_number,name,state,type from v$asm_diskgroup;

--asm环境下关数据库,防止资源不同步
srvctl stop database -d dave

--1.UMOUNT dave 这个diskgroup:
[grid@asm ~]$ asmcmd umount dave

--2.重命名磁盘组一次性操作
renamedg phase=both dgname=dave  newdgname=newdave asm_diskstring='/dev/asm*' verbose=true

--2.重命名磁盘组分2次操作
    2.4.2.3.2 使用path 分阶段进行rename

       renamedg phase=one dgname=data newdgname=new_data       asm_diskstring='/dev/asm*' config=/tmp/data2.conf verbose=true

       renamedg phase=two dgname=data newdgname=new_data config=/tmp/data2.conf       verbose=true
--3.确认:
select group_number,name,state,type from v$asm_diskgroup;

--4.mount diskgroup失败
[grid@asm ~]$ asmcmd mount anqing

srvctl config database -d dave  --查数据库用了哪些磁盘组
srvctl modify database -d dave -a "DATA,FRA"  --重建数据库对应磁盘组的关系

--5.修改资源
[grid@asm ~]$ srvctl disable diskgroup -g DAVE
[grid@asm ~]$ srvctl remove diskgroup -g DAVE

--6.启动磁盘组
SQL> ALTER DISKGROUP NEWDAVE MOUNT;

--7.启动数据库要修改配置文件
startup
ORACLE instance started.

Total System Global Area  680607744 bytes
Fixed Size      2256352 bytes
Variable Size    444596768 bytes
Database Buffers   230686720 bytes
Redo Buffers      3067904 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '+DAVE/dave/datafile/dave.256.844692805'
--需要修改文件到新的磁盘组名次
alter database rename file '+DAVE/dave/datafile/dave.256.844692805' to '+NEWDAVE/dave/datafile/dave.256.844692805';
alter database rename file '+DAVE/dave/datafile/dave_hot.257.844701321' to '+NEWDAVE/dave/datafile/dave_hot.257.844701321';

总体顺序
1. 先查询
2. dismount
3. renamedg
4. mount diskgroup
5. 检查文件依赖关系
6. crsctl 资源问题


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值