RMAN COPY实现ORACLE数据库存储迁移的方案

利用rman copy的方法实现存储上裸设备数据文件的迁移
背景:有时为了应用的需要,不得不把一些裸设备数据文件迁移到新的存储上或者更快的存储上来满足应用的要求。
下面就是实验来测试控制文件,数据文件,临时数据文件,redo文件迁移到新的存储方法

原库存放环境
[oracle@single ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 5月 6 02:56:14 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw2
/dev/raw/raw3

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw7
/dev/raw/raw11
/dev/raw/raw10
/dev/raw/raw9

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw8

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/dev/raw/raw4
/dev/raw/raw5


1.建好和原来裸设备一样大小的lv,建议比原来lv大一些 配制好权限 属性为oracle:dba
 1.1原来存储的控制文件     新存储的控制文件           
   /dev/raw/raw2            /dev/raw/raw22
   /dev/raw/raw3            /dev/raw/raw3

 1.2原来存储的数据文件     新存储的数据文件
   /dev/raw/raw7            /dev/raw/raw27
   /dev/raw/raw11           /dev/raw/raw31
   /dev/raw/raw10           /dev/raw/raw30
   /dev/raw/raw9            /dev/raw/raw29

 1.3原来存储的日志文件    新存储的日志文件
   /dev/raw/raw4            /dev/raw/raw24            
   /dev/raw/raw5            /dev/raw/raw25

 1.4原来存储的临时文件    新存储的临时文件
   /dev/raw/raw8            /dev/raw/raw28

2. 迁移数据文件到新的存储上

2.1 启动数据库到mount状态
SQL> startup mount
ORACLE instance started.

Total System Global Area  192937984 bytes
Fixed Size                  1260840 bytes
Variable Size              67109592 bytes
Database Buffers          121634816 bytes
Redo Buffers                2932736 bytes
Database mounted.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

2.2 用rman target /方式进入
[oracle@single ~]$ rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on 星期三 5月 6 03:24:27 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1213870770, not open)

RMAN> copy datafile '/dev/raw/raw7' to '/dev/raw/raw27';

Starting backup at 06-5月 -09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=/dev/raw/raw7
output filename=/dev/raw/raw27 tag=TAG20090506T032607 recid=1 stamp=686114794
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35
Finished backup at 06-5月 -09

RMAN> copy datafile '/dev/raw/raw9' to '/dev/raw/raw29';

Starting backup at 06-5月 -09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00004 name=/dev/raw/raw9
output filename=/dev/raw/raw29 tag=TAG20090506T032716 recid=2 stamp=686114837
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:02
Finished backup at 06-5月 -09

RMAN> copy datafile '/dev/raw/raw10' to '/dev/raw/raw30';

Starting backup at 06-5月 -09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00003 name=/dev/raw/raw10
output filename=/dev/raw/raw30 tag=TAG20090506T032746 recid=3 stamp=686114875
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:16
Finished backup at 06-5月 -09

RMAN> copy datafile '/dev/raw/raw11' to '/dev/raw/raw31';

Starting backup at 06-5月 -09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00002 name=/dev/raw/raw11
output filename=/dev/raw/raw31 tag=TAG20090506T032822 recid=4 stamp=686114915
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
Finished backup at 06-5月 -09

RMAN>

2.3 进入sqlplus,更改文件名写入到控制文件中

[oracle@single ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 5月 6 03:29:28 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> alter database rename file '/dev/raw/raw7' to '/dev/raw/raw27';

Database altered.

SQL>  alter database rename file '/dev/raw/raw9' to '/dev/raw/raw29';

Database altered.

SQL> alter database rename file '/dev/raw/raw10' to '/dev/raw/raw30';

Database altered.

SQL> alter database rename file '/dev/raw/raw11' to '/dev/raw/raw31';

Database altered.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw27
/dev/raw/raw31
/dev/raw/raw30
/dev/raw/raw29

SQL> alter database open;

Database altered.

SQL>

迁移数据文件到新的存储上成功

3.迁移控制文件到新的存储上

3.1.备份控制文件
startup mount
RMAN> backup current controlfile format '/home/oracle/crontrol.bak';

Starting backup at 06-5月 -09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
channel ORA_DISK_1: starting piece 1 at 06-5月 -09
channel ORA_DISK_1: finished piece 1 at 06-5月 -09
piece handle=/home/oracle/crontrol.bak tag=TAG20090506T033405 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
Finished backup at 06-5月 -09


3.2.关闭库修改控制文件参数文件
sqlplus "/as sysdba"
shutdown immediate
create pfile from spfile;
[oracle@single dbs]$ vi initorcl.ora

###########################################
control_files=("/dev/raw/raw22", "/dev/raw/raw23")
指向新的参数文件lv,并且保存

create spfile from pfile;
QL> startup nomount;
ORACLE instance started.

Total System Global Area  192937984 bytes
Fixed Size                  1260840 bytes
Variable Size              67109592 bytes
Database Buffers          121634816 bytes
Redo Buffers                2932736 bytes
SQL> show parameter cont

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time        integer
7
control_files                        string
/dev/raw/raw22, /dev/raw/raw23
global_context_pool_size             string

3.3恢复控制文件到新的存储上,并且mount和用resetlogs方式打开数据库
[oracle@single dbs]$ rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on 星期三 5月 6 03:38:47 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: orcl (not mounted)

RMAN> restore controlfile from '/home/oracle/crontrol.bak';

Starting restore at 06-5月 -09
using channel ORA_DISK_1

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
output filename=/dev/raw/raw22
output filename=/dev/raw/raw23
Finished restore at 06-5月 -09

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

RMAN> alter database open resetlogs;


database opened

[oracle@single dbs]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 5月 6 03:42:02 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw22
/dev/raw/raw23

可以看到控制文件迁移到新的存储上已经成功

4.迁移redo文件到新的存储上


SQL>alter database add logfile '/dev/raw/raw24' size 50m;

Database altered.

SQL>alter database add logfile '/dev/raw/raw25' size 50m;

Database altered.
QL> alter database drop logfile group 1;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter database drop logfile group 2;

Database altered.

 

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/dev/raw/raw24
/dev/raw/raw25

SQL>

可以看到redo已经迁移到新的存储上

 


5.迁移临时数据文件


SQL> create TEMPORARY TABLESPACE temp1 tempfile '/oradata/temp01.dbf' size 50m;

Tablespace created.

alter database default temporary tablespace TEMP1;
 

drop TABLESPACE TEMP;

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
  '/dev/raw/raw28' SIZE 500M AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 1M
BLOCKSIZE 8K;


SQL> alter database default temporary tablespace TEMP;

Database altered.

SQL> drop tablespace temp1;

Tablespace dropped.

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/dev/raw/raw28

SQL>

可以看到临时数据文件已经迁移到新的存储上


RMAN COPY实现ORACLE数据库存储迁移的方案


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7199859/viewspace-594455/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7199859/viewspace-594455/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值