Oracle 11G RAC For ASM 利用RMAN COPY进行存储迁移

Oracle 11G RAC For ASM 利用RMAN COPY进行存储迁移

DB-Engineer 2017-11-28 15:58:13  2960  收藏 4
分类专栏: Oracle-运维 文章标签: oracle 11g 存储 迁移 asm rman-copy
版权

Oracle-运维
专栏收录该内容
10 篇文章0 订阅
订阅专栏
转载请注明出处

一、需求背景
客户数据库存储空间接近存满,需购置一台新的存储,进行数据迁移,客户允许少量停机时间。
1
二、实施方法讨论
利用ASM rebalance 进行迁移
可以实现0宕机进行迁移,过程简单,但迁移时间周期太长。

利用rman copy进行迁移
需要少量停机时间,迁移时间短,过程复杂。

结合客户的需求,最终采用的是rman copy进行存储迁移。

三、实施项目步骤
添加新ASM磁盘
备份
数据迁移
删除原存储
3.1 添加新ASM盘
3.1.1 查询原ASM磁盘信息
运行以下sql命令

SET PAGES 1000
SET LINES 1000
COL PATH FOR A30
SELECT A.GROUP_NUMBER,
       B.NAME ASM_NAME,
       A.NAME DISK_NAME,
       A.FAILGROUP,
       A.PATH,
       B.TYPE,
       A.TOTAL_MB,
       A.FREE_MB
  FROM V$ASM_DISK A, V$ASM_DISKGROUP B
 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER;

3.1.2 划分磁盘
存储工程师安照需求划分存储,并采用多路径软件。

略 

3.1.3 绑定ASM 盘
根据不同的操作系统,使用不同的方法进行绑定。

绑定过程略

3.2 备份
备份包括ocr、votedisk
1
3.2.1 备份ocr与votedisk
 # ocrconfig -manualbackup    --手工备份 (需root用户)

 # ocrconfig -showbackup      --查看备份

 # ocrconfig -restore <filename>  --恢复ocr

11G 中只需只需上面的命令,就能同时备份ocr与vote

3.3 数据迁移
3.3.1 创建ASM Diskgroup
利用asmca命令创建以下diskgroup:
ocrdg                                        --存放ocr与vote
newdata                                      --存放数据文件

3.3.2 迁移ocr,vote
添加ocr信息至ocrdg上(root用户)
# ocrconfig -add  +OCRDG

检查ocr
# ocrcheck 

查看votedisk信息(grid用户)
$ crsctl query css votedisk

迁移votedisk(grid用户)
$ crsctl replace votedisk +OCRDG

3.3.3 创建asm实例spfile至ocrdg上
SQL> create pfile='/home/grid/asmspfile.ora' from spfile;
SQL> create spfile='+OCRDG' from pfile='/home/grid/asmspfile.ora';

3.3.4 迁移数据库文件至新磁盘上
3.3.4.1 创建数据库spfile至newdata上
SQL> create pfile='/home/oracle/orcl_pfile.ora' from spfile='+DATADG/orcl/spfileorcl.ora';
SQL> create spfile='+NEWDATA' from pfile='/home/oracle/orcl_pfile.ora';
1
2
3.3.4.2 查询数据文件信息
 SQL> select ''''||file_name||'''' from dba_data_files; 
1
3.3.4.3 利用rman copy备份数据库
$ vi rman_copy.sh


----------


export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
rman target / nocatalog log=/tmp/rman_copy.log<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
copy 
datafile '+DATADG/orcl/datafile/system.259.874699969'   to '+NEWDATA',
datafile '+DATADG/orcl/datafile/sysaux.260.874699995'   to '+NEWDATA',
datafile '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+NEWDATA',
datafile '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+NEWDATA',
datafile '+DATADG/orcl/datafile/users.264.874700049'    to '+NEWDATA';
}
EOF

rman target / nocatalog log=/tmp/rman_copy.log append <<EOF 
copy current controlfile to '+NEWDATA';
EOF

--赋予执行权限
$ chmod +x rman_copy.sh     

3.3.4.4 拷贝控制文件,并确认控制文件新的存放位置
ASMCD> cd +newdata/orcl/CONTROLFILE
ASMCMD> ls 
Backup.261.960651757
ASMCMD> cp Backup.261.960651757 control01.dbf
ASMCMD> cp Backup.261.960651757 control02.dbf
3.3.4.5 修改spfile参数
#control_files:
SQL> alter system set control_files='+newdata/orcl/CONTROLFILE/control01.dbf','+newdata/orcl/CONTROLFILE/control02.dbf' scope=spfile;

#db_create_file_dest
SQL> alter system set db_create_file_dest='+NEWDATA' SCOPE=SPFILE;

#archive:
SQL> alter system set log_archive_dest_1='LOCATION=+NEWDATA'

3.3.4.6 利用集群命令,更改数据库状态(oracle用户)
停止数据库
$ srvctl stop database -d orcl

启动至mount状态
$ srvctl start database -d orcl -o mount

SQL> show parameter control_files

3.3.4.7 rename数据库
数据文件
SQL> alter database rename file '+DATADG/orcl/datafile/sysaux.260.874699995' to '+newdata/orcl/datafile/SYSAUX.258.960651703';
SQL> alter database rename file '+DATADG/orcl/datafile/system.259.874699969' to '+newdata/orcl/datafile/SYSTEM.256.960651621';
SQL> alter database rename file '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+newdata/orcl/datafile/UNDOTBS1.257.960651621';
SQL> alter database rename file '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+newdata/orcl/datafile/UNDOTBS2.259.960651707';
SQL> alter database rename file '+DATADG/orcl/datafile/users.264.874700049' to '+newdata/orcl/datafile/USERS.260.960651735';

temp文件
SQL> alter database rename file '+DATADG/orcl/tempfile/temp.262.874700019' to '+newdata';

3.3.4.8 recover 数据库
$ rman target /
RMAN> recover database;
1
2
3
3.3.4.9 以open resetlogs方式打开数据库
SQL> alter database open resetlogs;
1
3.3.4.10 修改redo日志
--增加redo日志组
alter database add logfile thread 1 group 5 '+Newdata' size 50m;
alter database add logfile thread 1 group 6 '+Newdata' size 50m;
alter database add logfile thread 2 group 7 '+Newdata' size 50m;
alter database add logfile thread 2 group 8 '+Newdata' size 50m;

--删除redo日志组
select GROUP#,status from v$log;

当status状态为inactive和unused状态时可以删除。

alter database drop logfile group 4;
alter database drop logfile group 2;
alter database drop logfile group 1;
alter database drop logfile group 3;

3.3.4.11 集群修改信息
$ srvctl modify database -d orcl -n orcl -p +NEWDATA/orcl/spfileorcl.ora

$ srvctl modify database -d orcl -n orcl -a NEWDATA
1
2
3
3.3.4.12 以集群方式启动数据库
$ srvctl stop database -d orcl
$ srvctl start database -d orcl
1
2
3
3.4 删除原存储
--删除原OCR,vote磁盘组
# ocrconfig -delete +CRSDG
# ocrcheck
确认信息
# crsctl query css votedisk

--dismount disk(每个节点)
$ sqlplus / as sysasm
SQL> ALTER DISKGROUP CRSDG DISMOUNT; 
SQL> alter diskgroup DATADG dismount;

--drop disk(任一节点执行)
$ sqlplus / as sysasm
SQL> drop diskgroup CRSDG force including contents;
SQL> drop diskgroup DATADG force including contents;

--delete resource(任一节点执行)
$ crsctl delete resource ora.NEWOCR.dg
$ crsctl delete resource ora.DATADG.dg
————————————————
版权声明:本文为CSDN博主「DB-Engineer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wanbin6470398/article/details/78654645

  

posted @ 2021-08-27 20:37  耀阳居士  阅读(14)  评论(0编辑  收藏  举报