ITPub博客

首页 > 数据库 > Oracle > Oracle 10g RAC 数据存储更换

Oracle 10g RAC 数据存储更换

原创 Oracle 作者:ZQqzz 时间:2021-02-03 15:24:14 0 删除 编辑

 

 

 

环境说明 ... 4

迁移流程 ... 5

1. 前期准备 ... 6

二. 现场步骤(停业务): ... 6

2.1 全库备份 ... 6

2.2 copy 数据文件至新磁盘组 ... 6

2.3  REDO 切换至新磁盘组 ... 7

2.4 迁移OCR 磁盘组 ... 7

2.5 迁移vote 磁盘组 ... 8

2.6 迁移参数文件 ... 9

2.7 迁移控制文件 ... 10

2.8 rename 数据文件 ... 10

2.9 重建TEMP 文件 ... 10

2.10 打开数据库 ... 11

2.11 检查 ... 11

三. 回退措施 ... 12

 


 

一 说明

  环境说明

目前数据库为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 分钟


 

 

1. 前期准备

挂载新磁盘

创建新磁盘组考虑磁盘较多,创建采用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备份脚本:

select 'copy datafile '||''''||file_name||''''||' to '||''''||'+NDATA/rac/datafile/'||substr(file_name,instr(file_name,'/',-1)+1)||''';' from dba_data_files;

 

产生脚本文件,考虑到在不影响生产的情况下,采用一个进程处理,不开启并行拷贝:

 

 

 

 

 

切换至新磁盘组

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';

迁移OCR 磁盘组

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 盘的内容自动从备份恢复
添加 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';

 

重建TEMP 文件

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
数据库DBA

注册时间:2021-01-25

  • 博文量
    13
  • 访问量
    19146