RAC的Diskgroup重建

[img]http://dl2.iteye.com/upload/attachment/0097/3804/b628db67-0b4d-319a-853f-45c1807ef022.jpg[/img]
之前安装时diskgroup使用的是external的冗余级别,现在想把它换成normal的冗余级别,但是由于diskgroup的冗余一经创建就无法调整,只能重建。

整个过程的大概步骤如下:

1、备份已有的数据库DCDB,并伤处asm上的文件

2、新建一个磁盘组SFRA作为过渡

3、迁移原磁盘组DATA上的vote和ocr以及asm的spfile至SFRA

4、删除并重建DATA磁盘组为normal冗余

5、回迁vote和ocr以及asm的spfile至DATA磁盘组

6、恢复数据库


详细过程如下:

1、备份已有数据库,此步略过不做介绍

使用dbca删除数据库。

删除ASM上DCDB数据库的参数文件等:

[grid@srcbdb2 ~]$ asmcmd
ASMCMD> cd +DATA/
ASMCMD> ls
DCDB/

ASMCMD> rm -fr DCDB

过程如同在os上执行。


2、新建一个磁盘组SFRA作为过渡

CREATE DISKGROUP SFRA NORMAL REDUNDANCY
FAILGROUP DGFG02 DISK '/dev/iscsi/11gdisk41' SIZE 20480M ,
'/dev/iscsi/11gdisk42' SIZE 20480M ,
'/dev/iscsi/11gdisk43' SIZE 20480M
FAILGROUP DGFG01 DISK '/dev/iscsi/11gdisk31' SIZE 20480M ,
'/dev/iscsi/11gdisk32' SIZE 20480M ,
'/dev/iscsi/11gdisk33' SIZE 20480M
ATTRIBUTE 'compatible.asm'='11.2.0.0.0',
'au_size'='1M';

Diskgroup created.

检查另一节点上改磁盘组是否mount起来的。

+ASM2@SYS> select * from v$asm_diskgroup;


GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE TYPE TOTAL_MB FREE_MB HOT_USED_MB COLD_USED_MB
------------ ------------------------------------------------------------ ----------- ---------- -------------------- ---------------------- ------------ ---------- ---------- ----------- ------------
REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB OFFLINE_DISKS COMPATIBILITY
----------------------- -------------- ------------- ------------------------------------------------------------------------------------------------------------------------
DATABASE_COMPATIBILITY VO
------------------------------------------------------------------------------------------------------------------------ --
0 SFRA 0 4096 0DISMOUNTED 0 0 0 0
0 0 0 0.0.0.0.0
0.0.0.0.0 N


2 DATA 512 4096 1048576 MOUNTED NORMAL 122880 121175 0 1705
304 60435 0 11.2.0.0.0
10.1.0.0.0 Y

如果没有自动mount起来,则手工mount改磁盘组

+ASM2@SYS> alter diskgroup sfra mount;

Diskgroup altered.

3、迁移SPFILE,OCR和VOTE文件至SFRA磁盘组

3.1、迁移SPFILE

查看当前asm的spfile位置

+ASM1@SYS> show parameter spfile


NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
spfile string +DATA/srcbdb-cluster/asmparame
terfile/registry.253.788224447


创建一个pfile作为spfile迁移的过渡文件

+ASM1@SYS> create pfile from spfile;

File created.

新建spfile文件并指定到过渡磁盘组
+ASM1@SYS> create spfile='+SFRA' from pfile='?/dbs/init+ASM1.ora';

File created.

+ASM1@SYS>

spfile已经在SFRA磁盘组中

[grid@srcbdb2 ~]$ asmcmd
ASMCMD> cd +SFRA/srcbdb-cluster/ASMPARAMETERFILE
ASMCMD> ls
REGISTRY.253.788224447

在另一节点上执行同样的操作迁移spfile。
<think>嗯,用户遇到了ORA-00205错误,当执行ALTER DATABASE MOUNT命令时。我需要先理解这个错误的原因。根据引用[3],ORA-39181错误提到数据库在导出时需要处于open状态,而如果处于mount等状态可能有问题,但这里的情况是mount命令本身出错。ORA-00205通常与控制文件有关,可能是指控制文件无法找到或损坏。 用户提供的引用[4]提到在RAC环境中,数据文件没有正确添加到ASM磁盘组导致节点访问问题。可能控制文件的路径配置错误,尤其是在RAC环境下,控制文件可能存放在ASM中,如果路径不正确或权限有问题,就会导致无法挂载数据库。 首先,应该检查控制文件的状态和路径是否正确。Oracle实例启动时需要读取控制文件,如果控制文件损坏、丢失或路径错误,就会报ORA-00205。需要查看alert日志,确认具体的错误信息,比如控制文件的具体路径是否存在问题。 另外,控制文件可能在SPFILE中有配置,需要检查SPFILE中的control_files参数是否正确指向了ASM磁盘组的位置,而不是本地路径。在RAC环境中,使用本地路径会导致其他节点无法访问,必须使用共享存储如ASM。 还有可能是权限问题,ASM磁盘组的权限是否正确设置,确保Oracle用户有权限访问这些文件。或者存储层的问题,比如ASM实例未启动,或者磁盘组未正确挂载。 可能的解决步骤包括:检查alert日志获取详细信息,验证control_files参数,确保所有节点都能访问控制文件,修复或恢复控制文件,必要时从备份中恢复。 另外,需要确认数据库是否处于nomount状态,因为mount阶段需要控制文件,而startup nomount只启动实例,不加载控制文件。如果控制文件有问题,nomount可能成功,但mount会失败。 总结来说,ORA-00205主要与控制文件有关,需要从路径、权限、状态和完整性几个方面排查。特别是在RAC环境下,共享存储的正确配置至关重要。</think>### ORA-00205错误分析与解决方法 **ORA-00205错误**表示Oracle数据库在尝试执行`ALTER DATABASE MOUNT`命令时无法找到或识别控制文件。以下是逐步排查和解决方法: --- #### 1. 检查控制文件状态 控制文件是数据库启动的关键元数据文件,记录了数据库物理结构信息。错误常见原因包括: - 控制文件路径配置错误 - 控制文件损坏或丢失 - 存储权限问题(尤其在RAC环境中) **操作步骤:** 1. **查看`alert.log`日志** 通过数据库服务器的`alert_<SID>.log`文件定位具体错误细节: ```bash tail -f $ORACLE_BASE/diag/rdbms/<DB_NAME>/<SID>/trace/alert_<SID>.log ``` 日志中可能显示类似: ``` ORA-00205: error in identifying control file, check alert log for more info ``` 2. **验证控制文件路径** 检查`SPFILE`或`PFILE`中的`control_files`参数配置: ```sql SHOW PARAMETER control_files; ``` 确保路径指向**共享存储(如ASM磁盘组)**而非本地路径[^4]。 **错误示例**:`control_files='/u01/oradata/control01.ctl'`(本地路径) **正确示例**:`control_files='+DATA_DG/control01.ctl'`(ASM路径) --- #### 2. RAC环境特殊检查 在Oracle RAC中,控制文件必须存储在**共享存储(如ASM)**中,否则其他节点无法访问: 1. 确认ASM磁盘组状态: ```sql SELECT name, state FROM v$asm_diskgroup; ``` 确保`DATA_DG`等磁盘组状态为`MOUNTED`。 2. 检查控制文件权限: ```bash asmcmd ls -l +DATA_DG/<DB_NAME>/CONTROLFILE ``` 确认Oracle用户(如`oracle:dba`)有读写权限。 --- #### 3. 恢复控制文件 如果控制文件损坏或丢失,需从备份恢复: 1. **使用RMAN恢复** 若配置了自动备份: ```sql RMAN> STARTUP NOMOUNT; RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; RMAN> ALTER DATABASE MOUNT; ``` 2. **手动重建控制文件** 若无备份,需通过`CREATE CONTROLFILE`命令重建(需提前准备好脚本)。 --- #### 4. 其他可能原因 - **NLS_LANG设置冲突**:若环境变量`NLS_LANG`与数据库字符集不匹配,可能导致元数据解析错误[^3]。 - **存储层故障**:检查ASM实例状态及存储网络连通性。 --- ### 总结步骤 1. 通过`alert.log`定位具体错误。 2. 检查`control_files`参数指向共享存储。 3. 验证ASM磁盘组状态和权限。 4. 恢复或重建控制文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值