Oracle 10g RAC 数据存储更换

来源:这里教程网 时间:2026-03-03 16:25:36 作者:

    环境说明 ... 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;

 

打开数据库

查询数据文件及控制文件的scnselect name ,CHECKPOINT_CHANGE#   from v$datafileselect name ,CHECKPOINT_CHANGE#   from v$datafile_header;   三个节点正常打开数据库  归档路径检查。

检查

a. 参数文件、控制文件、数据库文件、临时文件等是否位于正确位置。  b.sqlplus / as sysasmdismount 旧的磁盘组 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 -aDatabase unique name: orclDatabase name: orclOracle home: /oracle/app/product/11.2.0/db_1Oracle user: oracleSpfile: +NDATA/orcl/spfileorcl.oraDomain:Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: orclDatabase instances: orcl1,orcl2Disk Groups: DATAMount point paths:Services:Type: RACDatabase is enabledDatabase 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. 重启集群,集群方法开启数据库。

      

相关推荐