首页 > 数据库 > Oracle > Oracle 10g RAC 数据存储更换
目前数据库为10gRAC 环境(10.2.0.4) ,操作系统为 ,采用ASM 磁盘组,需要对存储进行迁移,计划迁移采用oracle rman 迁移方案,确保迁移安全可控。本次迁移涉及ocr,vote 盘及DATA 磁盘组的数据迁移
环境如下:
操作系统:
HP
数据库:
10.2.0.4
数据文件存储方式:
ASM
数据量: 131GB
Data 盘大小: 800000MB
Data 盘:
|
NAME |
PATH |
MODE_ST STATE |
|
DGAM_0000 |
/dev/vgora/rlvasm1 |
ONLINE NORMAL |
|
DGAM_0001 |
/dev/vgora/rlvasm2 |
ONLINE NORMAL |
|
DGAM_0002 |
/dev/vgora/rlvasm3 |
ONLINE NORMAL |
|
DGAM_0003 |
/dev/vgora/rlvasm4 |
ONLINE NORMAL |
Ocr 盘:
[u@h /oracle/product/10.2.0/crs/bin]$ ./ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 1048300
Used space (kbytes) : 6476
Available space (kbytes) : 1041824
ID : 1756826852
Device/File Name : /dev/vgora/rlvocr1
Device/File integrity check succeeded
Device/File Name : /dev/vgora/rlvocr2
Device/File integrity check succeeded
Cluster registry integrity check succeeded
Vote 盘:
[u@h /oracle/product/10.2.0/crs/bin]$ ./crsctl query css votedisk
0. 0 /dev/vgora/rlvvot1
1. 0 /dev/vgora/rlvvot2
2. 0 /dev/vgora/rlvvot3
整体迁移流程:
不停业务准备:
|
步骤 |
流程计划 |
时间估算 |
|
1 |
操作系统扫描新磁盘 |
已完成 |
|
2 |
创建新NDATA 磁盘组 |
(不停机做) |
停业务做:
|
步骤 |
流程计划 |
时间估算 | |
|
1 |
数据库全备 |
50 分钟(业务停止) | |
|
2 |
数据文件迁移 |
90 分钟 (业务不停止) | |
|
3 |
REDO 日志切换到新存储NDATA 中 |
30 分钟(业务停止) | |
|
4 |
迁移OCR ,VOTE 盘 |
50 分钟 (业务停止) | |
|
5 |
重启三节点集群,确保OCR 及VOTE 切换正常 |
20 分钟 (业务停止) | |
|
6 |
迁移参数文件 |
20 分钟 (业务停止) | |
|
7 |
迁移控制文件 |
20 分钟 (业务停止) | |
|
8 |
rename 控制文件中数据文件路径 |
15 分钟 (业务停止) | |
|
9 |
重建TEMP 表空间 |
15 分钟 (业务停止) | |
|
10 |
打开数据库 |
30 分钟 (业务停止) | |
|
|
|
|
|
总结时间:
总计花费业务停机时间 340 分钟
挂载新磁盘
创建新磁盘组考虑磁盘较多,创建采用asmca 图形交互界面完成,创建新磁盘过程中需要调整ASM 磁盘组的版本参数,创建包括由5 张1G 磁盘组成的OCR 及VOTE 磁盘及若干数据盘组成的NDATA 磁盘组。
run
{
allocate channel c1 type disk;
sql 'alter system archive log current';
backup as backupset database format '/orabak/backup1126/rmanfull_%d_%T_%s_%p.bak' include current controlfile;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup format '/orabak/backup1126/rmanarch_full%T%U' archivelog all;
backup spfile format '/orabak/backup1126/spfile_%d_%T_%s_%p.bak';
backup current controlfile format '/orabak/backup1126/control_%d_%T_%s_%p.bak';
release channel c1;
}
获取rman备份脚本:
产生脚本文件,考虑到在不影响生产的情况下,采用一个进程处理,不开启并行拷贝:
redo 通过增减替换添加至新的磁盘组中
SQL> select GROUP#,THREAD#,BYTES,STATUS from v$log;
GROUP# THREAD# BYTES STATUS
---------- ---------- ---------- ----------------
1 1 52428800 ACTIVE
2 1 52428800 CURRENT
3 2 52428800 ACTIVE
4 2 52428800 CURRENT
5 3 52428800 CURRENT
6 3 52428800 ACTIVE
7 1 52428800 ACTIVE
8 2 52428800 ACTIVE
9 3 52428800 ACTIVE
常用命令:
alter database add logfile thread 2 group 14 ('+ndata') size 50m;
alter database drop logfile group 1;
alter system archive log current;
alter system checkpoint;
备份控制文件
backup current controlfile format '/tmp/control.bak';
1)
确保
OCR
有最近的备份
A
、查看
OCR
的健康状态
ocrcheck
ocrconfig -showbackup
B
、如果没有,手工备份一下
ocrconfig -export /home/oracle/ocrbak.ocr -s online
C
、使用
OCR
备份还原
ocrconfig -import /home/oracle/ocrbak.ocr
D
、查看
OCR
的健康状态
ocrcheck
2)
添加新的
OCR
盘
该步骤会使用
rhdiskpower5
覆盖原有镜像
rhdisk8
ocrconfig -replace ocrmirror /dev/rhdiskpower5
ocrcheck
3)
移除原有
OCR
盘
该步骤会移除
rhdisk4
,并且
rhdiskpower5
成为
OCR
盘
ocrconfig -replace ocr
ocrcheck
4)
添加新的镜像
OCR
盘
该步骤会使
rhdiskpower6
盘成为
ocrmirror
ocrconfig -replace ocrmirror /dev/rhdiskpower6
ocrcheck
注:移除
OCR
镜像盘,用不到该命令
ocrconfig -replace ocrmirror
当添加新的
vote
盘、或者替换时,
vote
盘的内容自动从备份恢复
添加
vote
盘时,必须以
root
用户停止整个集群
1)
备份
vote
盘
(
备份一份即可,无需全部备份
)
dd if=/dev/rhdisk22 of=/home/oracle/votebak6.vote
dd if=/dev/rhdisk23 of=/home/oracle/votebak7.vote
dd if=/dev/rhdisk24 of=/home/oracle/votebak8.vote
2)
停止集群
crsctl stop crs
注:所有节点都执行
3)
添加
vote
盘
crsctl add css votedisk /dev/rhdiskpower0 -force
# crsctl add css votedisk /dev/rhdiskpower0 -force
Now formatting voting disk: /dev/rhdiskpower0
successful addition of votedisk /dev/rhdiskpower0.
4)
移除原
vote
盘
crsctl delete css votedisk /dev/rhdisk22 -force
5)
启动集群
crsctl start crs
所有节点都执行
6)
验证当前
vote
盘路径
crsctl query css votedisk
select name, path, mode_status, state from v$asm_disk order by name;
7)
检查集群资源状态
crs_stat –t
创建数据库pfile文件
create pfile='/tmp/initorcl.ora' from spfile;
通过创建的pfile 启动数据库至nomount 状态
create spfile='+NDATA/orcl/spfileorcl.ora' from pfile='/tmp/initorcl.ora';
修改三节点 $ORACLE_HOME/dbs 下 initorcl.ora 文件,指向磁盘组中的参数文件位置
重新启动至nomount 状态 (startup nomount)
(首先查看数据库的配置信息
srvctl config database -d orcl -a
通过srvctl 修改spfile 的位置
srvctl modify database -d orcl -p ‘+ndata/orcl/spfileorcl.ora’
重启实例是nomount状态:
修改参数文件中控制文件的路径:
alter system set control_files='+NDATA/orcl/control01.ctl' scope=spfile sid='*';
Restore 控制文件:
rman:
restore controlfile to '+NDATA/orcl/control01.ctl' from '+DATA/ASM/CONTROLFILE/control01.ctl.286.968939085';
启动数据库至mount状态
select 'alter database rename file '||''''||name||''''||' to '||''''||'+NDATA/ORCL/DATAFILE/'||substr(name,instr(name,'/',-1)+1)||''';' from v$datafile;
获取以上脚本运行结果,rename 数据文件
alter database rename file '+DATA/orcl/datafile/system.259.967068683' to '+NDATA/orcl/datafile/SYSTEM.bdf';
alter database rename file '+DATA/orcl/datafile/sysaux.260.967068697' to '+NDATA/orcl/datafile/sysaux.bdf';
alter database rename file '+DATA/orcl/datafile/undotbs1.261.967068711' to '+NDATA/orcl/datafile/undotbs1.bdf';
alter database rename file '+DATA/orcl/datafile/undotbs2.263.967068729' to '+NDATA/orcl/datafile/undotbs2.bdf';
alter database rename file '+DATA/orcl/datafile/users.264.967068735' to '+NDATA/orcl/datafile/users.bdf';
s elect 'alter database rename file '||''''||name||''''||' to '||''''||'+data/orcl/datafile/'||substr(name,instr(name,'/',-1)+1)||''''||';' from v$tempfile;
查询数据文件及控制文件的scn
select name ,CHECKPOINT_CHANGE# from v$datafile
select name ,CHECKPOINT_CHANGE# from v$datafile_header;
三个节点正常打开数据库
归档路径检查。
a.
参数文件、控制文件、数据库文件、临时文件等是否位于正确位置。
b.
sqlplus / as sysasm
dismount 旧的磁盘组
alter diskgroup ocrvt dismount; ( 三个节点)
alter diskgroup data dismount; (三个节点)
show parameter diskgroup; 修改此参数
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups string NDATA
c.
[oracle@rac2 ~]$ srvctl modify database -d orcl -a "ndata"
[oracle@rac2 ~]$ srvctl config database -d orcl -a
Database unique name: orcl
Database name: orcl
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +NDATA/orcl/spfileorcl.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: orcl
Database instances: orcl1,orcl2
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Database is enabled
Database is administrator managed
修改权限 root:root
防止机器重启,自动拉起
d. 重启数据库和集群验证。
常用命令:
select name,state,type from v$asm_diskgroup;
select group_number,disk_number,state,name,path from v$asm_disk;
1. 修改三节点$ORACLE_HOME/dbs 下initorcl.ora 文件,指向原磁盘组中的参数文件位置
2. 启动数据库到nomount 状态
通过srvctl 修改spfile 的位置
srvctl modify database -d orcl -p ‘+data/orcl/spfileorcl.ora’
3. 还原参数文件中控制文件的路径:
alter system set control_files='+DATA/orcl/control01.ctl' scope=spfile sid='*';
4. 将数据库mount 起来,重建temp 表空间,检查数据文件位置,确认无误后,开启数据库。
5. 还原redo 文件
6. dismount 新建磁盘组,并更改其权限,避免它重新挂上来
7. 在线还原ocr 盘
8. 停库,停集群还原vote 盘
9. 重启集群,集群方法开启数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69993859/viewspace-2755782/ ,如需转载,请注明出处,否则将追究法律责任。