oracle asm磁盘回收步骤,重建ASM磁盘组的步骤 [ID 268481.1]

Step 1: 保证使用ASM的数据库事先已经用RMAN做了备份

Step 2: 关闭ASM实例

Step3: 使用dd命令清除ASM磁盘上的元数据

Step 4: 重建ASM磁盘组

Step 5: 恢复数据库[@more@]

这个事件中,不能mount ASM磁盘组,也就不能启动使用这些磁盘组的数据库,可能在mount ASM磁盘组的时候报下列错误:

SQL> startup mount

ORA-15032: not all alterations performed

ORA-15063: diskgroup "" lacks quorum of 2 PST disks; 0 found

错误可能由于下列原因导致:

a)操作系统不能访问ASM磁盘。

b) ASM实例上没有正确设置asm_diskstring参数。

c)磁盘上的 ASM元数据被覆盖或者崩溃了。

如果已经验证了操作系统可以使用正确的权限访问磁盘,asm_diskstring参数也是正确设置的,仍看到这个错误或者其他的错误,意味着ASM元数据崩溃了。那么就需要重建ASM实例和磁盘组:

Step 1: 保证使用ASM的数据库事先已经用RMAN做了备份

Step 2: 关闭ASM实例

Step3: 使用dd命令清除ASM磁盘上的元数据

Step 4: 重建ASM磁盘组

Step 5: 恢复数据库

Step 1: 保证使用ASM的数据库事先已经用RMAN做了备份

RMAN备份的例子:

1). 连接到rman

rman nocatalog target /

2). 备份数据库、归档日志和控制文件,例如:

RMAN> backup device type disk format '/u03/backup/%U' database plus archivelog;

RMAN> backup device type disk format '/u03/backup/ctrlf_%U' current controlfile;

3). 手动拷贝spfile,例如:

CREATE PFILE='/u03/app/oracle/product/10.1.0/dbs/init.ora' FROM SPFILE='/+DATA/V10FJ/spfile.ora';

Step 2: 关闭ASM实例

使用sqlplus or srvctl (RAC)关闭数据库实例和ASM实例:

SQLPLUS Example:

export ORACLE_SID=+ASM

sqlplus '/ as sysdba'

SQL> shutdown immediate

export ORACLE_SID=orcl

sqlplus '/ as sysdba'

SQL> shutdown immediate

SRVCTL (RAC) Example:

srvctl stop asm -n srvctl stop asm -n srvctl stop database -d

Step3: 使用dd命令清除ASM磁盘上的元数据

在打算重建ASM实例和磁盘组之前,必须清除ASM的所有元数据,例如:

dd if=/dev/zero of=/dev/rdsk/c1t4d0s4 bs=8192 count=12800

or

dd if=/dev/zero of=/dev/rdsk/c1t4d0s4 bs=4096 count=12800

Step 4: 重建ASM磁盘组

例如:

export ORACLE_SID=+ASM

sqlplus '/ as sysdba'

SQL> startup nomount

SQL> create diskgroup data disk '/dev/rdsk/c1t4d0s4';

SQL> shutdown immediate

SQL> startup mount

Step 5: 恢复数据库

1). 使用step 1拷贝的pfile启动实例

export ORACLE_SID=orcl

sqlplus '/ as sysdba'

SQL> startup nomount pfile=init.ora

2). 使用RMAN还原控制文件和数据库,例如:

$>rman target /

RMAN> restore controlfile from '/u03/backup/ctrlf_'; -- where is the unique string generated

by %U.

RMAN> alter database mount;

RMAN> restore database;

RMAN> recover database;

RMAN> alter database open resetlogs;

3). 连接到ASM实例,得到controlfile文件名,例如:

export ORACLE_SID=+ASM

sqlplus '/ as sysdba'

SQL> select name, alias_directory from v$asm_alias;

4). 编辑 init.ora改变control_files参数指向 ASM v$asm_alias视图中的name标识。

5). 重建spfile,例如:

SQL> create spfile='+DATA/V10FJ/spfileV10FJ.ora'

from pfile='/u03/app/oracle/product/10.1.0/dbs/pfile.out';

6).关闭、使用新创建的spfile重启实例。

7). 如果还有其他的数据库,重复STEP 5。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值