迁移ASM故障磁盘组数据库到新磁盘组

由于原有磁盘组使用的是NORMAL冗余方式。剩余的空间只有3G。数据库空间为200G。ASM磁盘组空间不足以存放数据库。而且新增的磁盘只有一块300G的盘。为避免磁盘REBALANCE出现异常。因此将300G的磁盘做成EXTERNAL冗余方式,并采用RMAN COPY的方式,将数据库迁移到新的磁盘组。迁移成功后,在将原有的3块150G的磁盘删除。并创建一个新的EXTERNAL磁盘组备用。

1  ASM识别磁盘

1.1停集群环境

原有环境中使用了多路径,裸设备映射,ASMLIB配置。ASM添加磁盘时需要进行多路径和裸设备信息配置,为安全起见,停数据库和集群环境后进行操作。

[[email protected]~]$ crs_stat –t

[[email protected]~]$ srvctl stop database -d bhspdb

[[email protected] ~]#crsctl stop crs

1.2操作系统识别磁盘

由于该系统的磁盘路径较多,因此识别出的磁盘设备也比较多。但是原有的磁盘都做了分区操作。因此不包含分区信息的磁盘。就是新添加的磁盘。

[[email protected] ~]#ls -la /dev/sd* | grep -v ‘[0-9]$‘

1.3配置磁盘多路径(所有节点)

新增磁盘的WWID信息,可以通过/scsi_id –gus /block/sdnew 或 ls -la /dev/disk/by-id 中获取。

[[email protected] ~]#scsi_id -gus /block/sdf

[[email protected] ~]#ls -la /dev/disk/by-id

新增红色部分内容。

[[email protected] ~]# vi /etc/multipath.conf

multipaths {

……

multipath{

wwid    36001438005deda610000600001040000

alias   asmdisk4

}

}

1.4重启多路径服务(所有节点)

[[email protected] ~]#service multipathd restart

1.5检测多路径设备状态(所有节点)

确保新增的磁盘asmdisk4配置可以查询到。

[[email protected] ~]#multipath -ll

asmdisk4(36001438005deda610000600000f80000) dm-0 HP,HSV400

[size=300G][features=1queue_if_no_path][hwhandler=0][rw]

\_round-robin 0 [prio=200][active]

\_ 0:0:3:3 sdaa 65:160 [active][ready]

\_ 1:0:1:3 sdaq 66:160 [active][ready]

\_ 1:0:3:3 sdbg 67:160 [active][ready]

\_ 0:0:1:3 sdk 8:160  [active][ready]

\_round-robin 0 [prio=40][enabled]

\_ 1:0:0:3 sdai 66:32  [active][ready]

\_ 1:0:2:3 sday 67:32  [active][ready]

\_ 0:0:0:3 sdc 8:32   [active][ready]

\_ 0:0:2:3 sds 65:32  [active][ready]

1.6格式化多路径设备

格式化设备的目的是和原有的磁盘设备保持一致。SD设备格式化以后,会有一个分区信息,用于区分新挂载的普通sd磁盘。

单个节点执行格式化操作:

[[email protected] ~]#ls -la /dev/mapper/*

[[email protected] ~]#kpartx /dev/mapper/asmdisk4

其他节点进行分区设备发现操作:

[[email protected] ~]#partprobe

1.7裸设备绑定(所有节点)

编辑裸设备配置文件,添加新磁盘配置。

1.7.1配置裸设备绑定文件

[[email protected] ~]#vi /etc/sysconfig/rawdevices

/dev/raw/raw9    /dev/mapper/asmdisk4p1

1.7.2重启裸设备服务

[[email protected] ~]#service rawdevices restart

1.7.3修改裸设备权限

[[email protected] ~]#chown oracle:oinstall /dev/raw/raw9

[[email protected] ~]#chmod 644 /dev/raw/raw9

1.7.4修改系统启动文件

添加新增设备的权限和属组修改脚本。

[[email protected] ~]#vi /etc/rc.local

/bin/chownoracle:oinstall /dev/raw/raw9

/bin/chmod644 /dev/raw/raw9

1.7.5检测新增裸设备

保障裸设备的属组为oracle:oinstall,权限为644。

[[email protected] ~]#ls -la /dev/raw/raw*

2  创建新磁盘组

2.1检查磁盘状态信息

[[email protected] ~]$kfod a=‘/dev/asm*‘ d=all o=all s=true

2.2创建ASM磁盘组

[[email protected] ~]$ export ORACLE_SID=+ASM1

[[email protected] ~]$ sqlplus / as sysdba

SQL> CREATE DISKGROUP CRMDGNEWEXTERNAL REDUNDANCY DISK ‘/dev/asm-data3‘;

2.3其他节点挂载磁盘组

[[email protected]~]$ sqlplus / as sysdba

SQL> alter diskgroup CRMDGNEW mount;

2.4检测磁盘组信息

[[email protected]~]$ asmcmd lsdg

[[email protected]~]$ asmcmd lsdg

3  迁移数据库到新磁盘组

3.1启动单实例到NOMOUNT

SQL> startup nomount;

SQL> create pfile=‘/home/oracle/crmdb.pfile‘ from spfile;

3.1.1调整参数文件修改控制文件到新磁盘组

SQL> set linesize 120;

SQL> show parameter control;

SQL> alter system setcontrol_files=‘+CRMDGNEW/crmdb/controlfile/control01.ctl‘ scope=spfile;

3.1.2重启实例到NOMOUNT状态

SQL> startup force nomount;

3.2恢复控制文件

[[email protected]~]$ rman target /

RMAN> RESTORE CONTROLFILE FROM ‘+CRMDG/crmdb/controlfile//Current.256.901636495‘;

3.3拷贝数据库

MOUNT数据库实例,进行数据库拷贝操作。

RMAN> ALTER DATABASE MOUNT;

RMAN>

RUN

{

ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev2 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev3 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev4 DEVICE TYPE DISK;

BACKUP AS COPY DATABASE FORMAT ‘+CRMDGNEW‘;

}

3.4切换数据库到拷贝

RMAN> SWITCH DATABASE TO COPY;

3.5打开数据库

SQL> alter database open;

3.6打开其他实例并检查

该操作在数据库的其他实例进行。

SQL> STARTUP

SQL> SELECT INST_ID, STATUS FROM GV$INSTANCE;

3.7创建临时表空间到新磁盘组

RMAN> REPORT SCHEMA;

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE ‘+CRMDGNEW‘ SIZE 1G;

SQL> ALTER TABLESPACE TEMP DROP TEMPFILE‘+CRMDG/crmdb/tempfile/temp.262.901636511‘;

3.8创建重做日志到新磁盘组

3.8.1查询当前日志组信息

SQL> SET LINESIZE 120;

SQL> COL MEMBER FOR A80;

SELECT DISTINCT ‘ALTERDATABASE DROP LOGFILE GROUP ‘||GROUP#||‘;‘ FROM V$LOGFILE;

3.8.2添加新日志组

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 5 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 6 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 7 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 8 (‘+CRMDGNEW‘) SIZE 100M;

3.8.3删除旧日志组

在删除旧日志组之前,进行多次日志切换,保证旧日志组状态均为INACTIVE。

SQL> SET LINESIZE 120;

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

SQL> ALTER SYSTEM CHECKPOINT GLOBAL;

SQL> SELECT * FROM V$LOG ORDER BY 1;

下列脚本由查询日志脚本生成:

ALTER DATABASE DROPLOGFILE GROUP 1;

ALTER DATABASE DROPLOGFILE GROUP 2;

ALTER DATABASE DROPLOGFILE GROUP 3;

ALTER DATABASE DROPLOGFILE GROUP 4;

3.8.4添加原有日志组

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 1 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 2 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 3 (‘+CRMDGNEW‘) SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 4 (‘+CRMDGNEW‘) SIZE 100M;

3.9修改参数文件

3.9.1备份SPFILE文件

SQL> show parameter spfile;

SQL> create pfile=‘/home/oracle/crmdb.pfile‘ from spfile;

3.9.2生成新SPFILE文件

createspfile=‘+CRMDGNEW/spfilecrmdb.ora‘ from pfile=‘/home/oracle/crmdb.pfile‘;

3.9.3修改dbs目录下的PFILE文件

[[email protected]~]$ cd $ORACLE_HOME/dbs

[[email protected]]$ vi initcrmdb1.ora

SPFILE=‘+CRMDGNEW/spfilecrmdb.ora‘

3.9.4重启数据库验证

SQL> shutdown immediate;

SQL> startup;

4  删除故障磁盘

以下操作需要在ASM实例环境下进行。

4.1DISMOUNT旧磁盘组

将其他实例的CRMDG磁盘组DISMOUNT。

SQL> alter diskgroup CRMDG dismount;

4.2删除磁盘组下的文件

ASMCMD> cd CRMDG

ASMCMD> rm -r ./crmdb

4.3删除旧磁盘组

SQL> DROP DISKGROUP CRMDG;

4.4检查磁盘状态

[[email protected] ~]$kfod a=‘/dev/asm*‘ d=all o=all s=true

时间: 2024-08-01 10:40:47

迁移ASM故障磁盘组数据库到新磁盘组的相关文章

SQL Server数据库镜像基于可用性组故障转移

SQL Server数据库镜像基于可用性组故障转移 微软从SQL Server 2005开始引入数据库镜像,很快成为一个流行的故障转移解决方案.数据库镜像的一个大的问题是故障转移是基于数据库级别的,因此,如果某个数据库故障,镜像只会针对这个数据库切换,但是,其他数据库都仍然在主服务器上.缺点是越来越多的应用程序是基于多个数据库来构建,所以,如果某一个数据库故障转移而其他数据库仍然在主服务器上,那应用程序将无法工作.当这种情况发生的时候,我如何知晓?并执行该应用程序调用的所有数据库一起故障转移呢?

【翻译自mos文章】使用asm来部署 超大数据库(10TB到PB 范围)--针对oracle 10G

使用asm来部署 超大数据库(10TB到PB 范围) 參考原文: Deployment of very large databases (10TB to PB range) with Automatic Storage Management (ASM) (Doc ID 368055.1) 范围: 本文适用于在全部平台上的asm配置.包含使用rac 和单实例 环境. 本文适用于超大数据库的创建.而且该数据库会增长到超过10TB级别. 挑战: asm 元数据存储 解决方式: au(分配单元) 是as

疑难杂症--为数据库主文件所在磁盘保留一定量磁盘空间

因为服务器磁盘剩余空间不足的问题,同事准备为数据库新增数据文件并放置到其他磁盘下,新文件放置在PRIMARY文件组下,结果发现报错: 消息1105,级别17,状态2 无法为数据库 'XXX' 中的对象 'sys.sysfiles1'.'sysfiles1' 分配空间, 因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象. 将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 检查数据库发现: 1. PRIMARY文件组下有自动增长的文件(nd

数据库文件和文件组

数据库文件和文件组 SQL Server 2014 其他版本 <?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/1999/xhtml" NS = "http://www.w3.org/1999/xhtml" />每个 SQL Server 数据库至少具有两个操作系统文件:一个数据文件和一个日志文件. 数据文件包含数据和对象,例如表.索引.存储过程和视图. 日志文件包含恢复数据库中的所有事务所需的信

数据库 chapter 13 数据库技术新发展

第十三章 数据库技术新发展 数据模型是数据库系统的核心和基础. 按照数据模型的发展,数据库技术可相应地分为三个发展阶段: 第一代的网状.层次数据库系统 第二代的关系数据库系统 第三代数据库系统为核心的数据库大家族 第一代的网状.层次数据库系统的特点: 支持三级模式的体系结构 用存取路径来表示数据之间的联系 独立的数据定义语言 导航的数据操纵语言 关系数据库包括以下三部分: 数据结构 关系操作 数据完整性(包括实体完整性.参照完整性以及与应用有关的完整性) 第三代数据库特点: 第三代数据库系统应支

如何在CentOS 7中添加新磁盘而不用重启系统

导读 对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一.因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重启您的生产服务器.关于扩充和增加新的磁盘到 Linux 系统,我们会提及多种方法和多种可行性,可按您所需选择最适用的一种. 1. 在虚拟机客户端扩充磁盘空间: 在为 Linux 系统增加磁盘卷之前,您首先需要添加一块新的物理磁盘,或在 VMware vShere.VMware 工作站以及你使用的其它

CentOS 7中添加新磁盘而不用重启系统

对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一,尤其是VMware系列的虚拟机. 扩展空间而无需重启虚拟机: 现在运行如下命令,通过重新扫描 SCSI (注:Small Computer System Interface 小型计算机系统接口)总线并添加 SCSI 设备,系统就可以扩展操作系统的物理卷磁盘空间,而且不需要重启虚拟机. # ls /sys/class/scsi_host/ # echo "- - -" > /sys/class/scsi_ho

Centos 7 添加新磁盘

对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一.因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重启您的生产服务器.关于扩充和增加新的磁盘到 Linux 系统,我们会提及多种方法和多种可行性,可按您所需选择最适用的一种. 1. 在虚拟机客户端扩充磁盘空间: 在为 Linux 系统增加磁盘卷之前,您首先需要添加一块新的物理磁盘,或在 VMware vShere.VMware 工作站以及你使用的其它虚拟环

创建磁盘分区,创建逻辑卷组。

1.1 查看新增磁盘fdisk -l 1.2 首先从空的硬盘sdb上创建一个分区sdb1. 为接下来做LVM做准备.[[email protected]_11_3_centos ~]# fdisk /dev/vdb 1.3 为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存 1.4 创建逻辑卷将新创建的一个分区/dev/vdb1转化成物理卷,主要是添加LVM属性信息并划分PE存储单元. 1.5 创建