首页 > 代码库 > rac存储替换
rac存储替换
2017-06-24
实验步骤:
一、将所有节点关机,生成与原共享盘大小相同的几块盘即可,挂到所有的节点上,磁盘为固定大小,状态为共享
二、将所有节点开机,编辑文件/etc/udev/rules.d/60-raw.rules,设置共享磁盘的权限,内容如下所示
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdg", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdh", RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add", KERNEL=="sdi", RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add", KERNEL=="sdj", RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add", KERNEL=="sdk", RUN+="/bin/raw /dev/raw/raw10 %N"
KERNEL=="raw1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw4", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw5", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw6", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw7", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw8", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw9", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="raw10", OWNER="grid", GROUP="asmadmin", MODE="0660"
所有节点加载文件,使编辑生效
[root@rac1 rules.d]# start_udev
Starting udev: [ OK ]
检查结果
[root@rac2 rules.d]# ls -l /dev/raw*
total 0
crw-rw---- 1 grid asmadmin 162, 1 Apr 6 15:18 raw1
crw-rw---- 1 grid asmadmin 162, 10 Apr 6 15:18 raw10
crw-rw---- 1 grid asmadmin 162, 2 Apr 6 15:18 raw2
crw-rw---- 1 grid asmadmin 162, 3 Apr 6 15:18 raw3
crw-rw---- 1 grid asmadmin 162, 4 Apr 6 15:18 raw4
crw-rw---- 1 grid asmadmin 162, 5 Apr 6 15:18 raw5
crw-rw---- 1 grid asmadmin 162, 6 Apr 6 15:18 raw6
crw-rw---- 1 grid asmadmin 162, 7 Apr 6 15:18 raw7
crw-rw---- 1 grid asmadmin 162, 8 Apr 6 15:18 raw8
crw-rw---- 1 grid asmadmin 162, 9 Apr 6 15:18 raw9
crw-rw---- 1 root disk 162, 0 Apr 6 15:18 rawctl
三、在任一节点使用grid用户运行asmca,使用图形界面将裸盘分组
分组策略:
数据盘使用DATA_NEW,冗余模式为external,一块盘大小为15G
归档盘使用ARCD_NEW,冗余模式为external,一块盘大小为4G
OCR、VOTE使用相同的磁盘组 OCR_NEW,冗余模式为normal,三块盘,每块大小1G
下图为将磁盘分组后的结果
四、替换OCR与VOTE盘
检查OCR的备份,使用grid用户的环境变量,以root身份查询
[root@rac1 rules.d]# su - grid
[grid@rac1 ~]$ su
Password:
[root@rac2 grid]# ocrconfig -showbackup
rac2 2017/04/05 13:56:48 /u01/11.2.0/grid/cdata/rac-cluster/backup00.ocr
rac2 2017/04/03 21:08:52 /u01/11.2.0/grid/cdata/rac-cluster/backup01.ocr
rac1 2017/04/01 19:01:38 /u01/11.2.0/grid/cdata/rac-cluster/backup02.ocr
rac2 2017/04/05 13:56:48 /u01/11.2.0/grid/cdata/rac-cluster/day.ocr
rac1 2017/03/31 13:16:38 /u01/11.2.0/grid/cdata/rac-cluster/week.ocr
检查当前ocr设置信息
[root@rac2 grid]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3472
Available space (kbytes) : 258648
ID : 343097207
Device/File Name : +OCR
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
当前使用的OCR为旧存储,现将其换成新的ORC_NEW
添加新的OCR_NEW,在添加新的磁盘的同时,OCR信息写入到新的磁盘中
[root@rac1 grid]# ocrconfig -add +OCR_NEW
检查添加结果
[root@rac1 grid]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3460
Available space (kbytes) : 258660
ID : 343097207
Device/File Name : +OCR
Device/File integrity check succeeded
Device/File Name : +OCR_NEW
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
删除原有的OCR磁盘组,并检查
[root@rac1 grid]# ocrconfig -delete +OCR
[root@rac1 grid]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3460
Available space (kbytes) : 258660
ID : 343097207
Device/File Name : +OCR_NEW
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
替换VOTE盘
检查VOTE信息
[grid@rac1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 2a722d08a6a34fe2bfbd8c8e15f9a3a4 (/dev/raw/raw1) [OCR]
2. ONLINE 79a3bd29995a4fd3bf50eeae98b33e95 (/dev/raw/raw2) [OCR]
3. ONLINE aa005c3d91254fb0bf49789a07bcbbe9 (/dev/raw/raw3) [OCR]
Located 3 voting disk(s).
替换VOTE
[grid@rac1 ~]$ crsctl replace votedisk +OCR_NEW
Successful addition of voting disk 3bcdec446c2a4f3ebf35a222d982f233.
Successful addition of voting disk 39c04a0f01d54fabbfa2bb0e956cb9c8.
Successful addition of voting disk 01ae7539f3644fbebf039a38f8bf28df.
Successful deletion of voting disk 2a722d08a6a34fe2bfbd8c8e15f9a3a4.
Successful deletion of voting disk 79a3bd29995a4fd3bf50eeae98b33e95.
Successful deletion of voting disk aa005c3d91254fb0bf49789a07bcbbe9.
Successfully replaced voting disk group with +OCR_NEW.
CRS-4266: Voting file(s) successfully replaced
五、数据盘移动规划,本次实验使用rman进行数据库的移动
1、全备数据库
RMAN> run{
allocate channel c1 device type disk;
backup database format ‘/backup/full_%d_%T_%s_%p.bak‘;
sql ‘alter system archive log current‘;
sql ‘alter system archive log current‘;
sql ‘alter system archive log current‘;
backup archivelog all format ‘/backup/arch_%d_%T_%s_%p.bak‘;
backup current controlfile format ‘/backup/ctl_%U‘;
release channel c1;
}
2、将spfile导出到pfile,修改参数
SQL> create pfile=‘/home/oracle/init.ora‘ from spfile;
将asm实例的spfile也导出到新ocr盘中,原理与数据库实例spfile相同,此处过程略
File created.
[oracle@rac1 ~]$ vim init.ora
修改其中控制文件位置
*.control_files=‘+DATA_NEW/rac/controlfile/ctl‘
根据提供的路径建立相应的目录
ASMCMD> pwd
+data_new/rac
ASMCMD> mkdir controlfile
ASMCMD> ls
PARAMETERFILE/
controlfile/
关闭实例,将参数从pfile导入到spfile
SQL> create spfile from pfile=‘/home/oracle/init.ora‘;
3、将本地新生成的spfile cp到新的共享磁盘组位置,修改本地init文件使其指向新的spfile位置
ASMCMD> pwd
+data_new/rac
ASMCMD> ls
controlfile/
ASMCMD> cp /u01/app/oracle/product/11.2.0/db_1/dbs/spfilerac1.ora spfilerac.ora
copying /u01/app/oracle/product/11.2.0/db_1/dbs/spfilerac1.ora -> +data_new/rac/spfilerac.ora
注意:在转移结束后,将本地存储的spfile删除,否则在数据库实例开启时,会优先使用本地spfile
修改init文件使其指向新参数文件位置
[oracle@rac1 dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@rac1 dbs]$ vim initrac1.ora
[oracle@rac1 dbs]$ cat initrac1.ora
SPFILE=‘+DATA_NEW/RAC/spfilerac.ora‘
4、启动数据库实例,并检查使用的参数文件
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1152450560 bytes
Fixed Size 2252584 bytes
Variable Size 1006633176 bytes
Database Buffers 134217728 bytes
Redo Buffers 9347072 bytes
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA_NEW/rac/spfilerac.ora
5、恢复控制文件
RMAN> restore controlfile from ‘/backup/ctl_0ts113s2_1_1‘;
6、将数据库启动到mount阶段,检查数据文件物理结构
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN> report schema;
RMAN-06139: WARNING: control file is not current for REPORT SCHEMA
Report of database schema for database with db_unique_name RAC
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 780 SYSTEM *** +DATADG/rac/datafile/system.272.938517081
2 640 SYSAUX *** +DATADG/rac/datafile/sysaux.277.938517083
3 25 UNDOTBS1 *** +DATADG/rac/datafile/undotbs1.282.940501517
4 5 USERS *** +DATADG/rac/datafile/users.281.938517083
5 346 EXAMPLE *** +DATADG/rac/datafile/example.283.938517211
6 25 UNDOTBS2 *** +DATADG/rac/datafile/undotbs2.276.938517477
7 10 FANGFANG *** +DATADG/rac/datafile/fangfang.dbg
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 36 TEMP 32767 +DATADG/rac/tempfile/temp.284.938517201
此时的控制文件文件记录的数据文件物理位置为旧存储,运行还原脚本,将还原路径指定到新的数据存储位置
注意:此处要求与原数据文件后缀号区分,且不同
7、运行还原数据库脚本,将数据文件还原到新的存储位置
run{
allocate channel c1 device type disk;
set newname for datafile 1 to ‘+DATA_NEW/rac/datafile/system.dbf‘;
set newname for datafile 2 to ‘+DATA_NEW/rac/datafile/sysaux.dbf‘;
set newname for datafile 3 to ‘+DATA_NEW/rac/datafile/undotbs1.dbf‘;
set newname for datafile 4 to ‘+DATA_NEW/rac/datafile/users.dbf‘;
set newname for datafile 5 to ‘+DATA_NEW/rac/datafile/undotbs2.dbf‘;
restore database;
switch datafile all;
release channel c1;
}
注意:在运行脚本前,确定目录的存在
恢复数据库
recover database
注意:在恢复完数据库后,打开数据库检查各个文件是否使用的新存储中文件
使用oracle用户将新数据库的信息,及新数据库实例文件的位置信息注册到srv控制器中
(1)删除数据库(仅删除注册信息)
srvctl remove database -d rac
-d为数据库唯一名
(2)增加数据库
srvctl add database -d rac -o /u01/app/oracle/product/11.2.0/db_1 -p +DATA_NEW/rac/spfilerac.ora
-d为数据库唯一名 -o为oracle家目录 -p为参数文件路径
(3)为所有节点添加数据库实例
srvctl add instance -d rac -i rac1 -n rac1
srvctl add instance -d rac -i rac2 -n rac2
-d为数据库唯一名 -i 为数据库实例名 -n为集群节点名
(4)使用srv管理器启动数据库(将数据库设置为自启动)
srvctl start database -d rac
8、将原redo数据切入归档,在新存储位置重建redo log
查看日志组状态
set linesize 150;
set pagesize 50;
column TYPE format a8;
column MEMBER format a60;
select lf.GROUP#,l.THREAD#,lf.TYPE,l.BYTES/1024/1024 MB,lf.MEMBER from v$logfile lf,v$log l where lf.GROUP#=l.GROUP#;
重建在线日志文件
SQL> alter database add logfile thread 1 group 5 ‘+DATA_NEW/rac/onlinelog/group_5_redo‘ size 50m;
Database altered.
SQL> alter database add logfile thread 1 group 6 ‘+DATA_NEW/rac/onlinelog/group_6_redo‘ size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 7 ‘+DATA_NEW/rac/onlinelog/group_7_redo‘ size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 8 ‘+DATA_NEW/rac/onlinelog/group_8_redo‘ size 50m;
Database altered.
查看当前日志状态
set linesize 150;
set pagesize 50;
column TYPE format a8;
column MEMBER format a60;
select lf.GROUP#,l.THREAD#,lf.TYPE,l.BYTES/1024/1024 MB,lf.MEMBER from v$logfile lf,v$log l where lf.GROUP#=l.GROUP#;
切换日志页将一节点至第五组,二节点切换至第七组,再次检查
SQL> alter system archive log current;
System altered.
SQL> /
System altered.
删除位于原存储的1、2、3、4组,在删除之前先清空redolog中的数据
SQL> alter database clear logfile group 1;
Database altered.
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database clear logfile group 3;
Database altered.
SQL> alter database clear logfile group 4;
Database altered.
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database drop logfile group 4;
Database altered.
再次查看
9、在新存储重新建立临时表空间
SQL> CREATE TEMPORARY TABLESPACE temp01 TEMPFILE ‘+DATA_NEW/rac/tempfile/temp001.dbf‘ SIZE 200m AUTOEXTEND ON NEXT 32m MAXSIZE 2048m EXTENT MANAGEMENT LOCAL;
Tablespace created.
将新的临时表空间设置为默认
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp01;
Database altered.
删除原存储的临时表空间,如果长时间删除失败,重新登陆sqlplus再次删除即可
SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
Tablespace dropped.
六、安全删除物理存储
1、删除原磁盘组
在grid用户下使用sqlplus / as sysasm登陆asm实例
在其他节点卸载旧磁盘组
SQL> alter diskgroup DATADG dismount;
Diskgroup altered.
SQL> alter diskgroup ARCHDG dismount;
Diskgroup altered.
SQL> alter diskgroup OCR dismount;
Diskgroup altered.
2、返回节点一,删除磁盘组
SQL> drop diskgroup DATADG including contents;
Diskgroup dropped.
SQL> drop diskgroup ARCHDG including contents;
Diskgroup dropped.
SQL> drop diskgroup OCR including contents;
Diskgroup dropped.
3、关闭节点,从所有节点移除物理盘(生产环境直接将旧存储拔下即可)
删除上述五块共享旧盘
4、开启节点,使用root用户检查当前操作系统识别的磁盘
[root@rac1 ~]# fdisk -l
Disk /dev/sda: 85.9 GB, 85899280384 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00013815
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 791 6144000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 791 10444 77535232 83 Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdf: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
仔细观察各盘的大小与名称的对应关系
编辑磁盘规则文件,按照上述查找结果生成正确的对应信息
1、如果直接使用的裸盘,执行start_udev加载并刷新对应信息即可
2、如果使用的asm磁盘,编辑/etc/udev/rules.d/99-oracle-asmdevices.rules文件,将其名称对应关系手工编辑为操作系统识别的对应关系
rac存储替换