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

转自:https://blog.csdn.net/wanbin6470398/article/details/78654645

一、需求背景
客户数据库存储空间接近存满,需购置一台新的存储,进行数据迁移,客户允许少量停机时间。

二、实施方法讨论
利用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

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

3.3.4.2 查询数据文件信息
 SQL> select ''''||file_name||'''' from dba_data_files; 

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;

3.3.4.9 以open resetlogs方式打开数据库
SQL> alter database open resetlogs;

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

3.3.4.12 以集群方式启动数据库
$ srvctl stop database -d orcl
$ srvctl start database -d orcl

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  -----是NEWOCR还是CRSDG,待验证
$ crsctl delete resource ora.DATADG.dg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值