ITPub博客

首页 > 应用开发 > IT综合 > 重建ASM磁盘组的步骤 [ID 268481.1]

重建ASM磁盘组的步骤 [ID 268481.1]

原创 IT综合 作者:fanhongjie 时间:2011-11-23 14:59:44 0 删除 编辑

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。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/73920/viewspace-1056498/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-22

  • 博文量
    112
  • 访问量
    657539