Oracle11G Rman垮平台恢复 Windows for Linux】

前言:

  近期做了一个Rman的垮平台恢复,数据库从Windows server 2008平台 恢复到 Linux Red hat 5.4平台,数据量大约在1.4T左右,恢复时间大约为20小时。

  下面的文章是我的恢复步骤,这个实验做完后其实并不是太成功,虽然最后成功OPEN数据库,但是日志内还是会有一些ORA-600的报错,现在我也正在排除这些报错,我写这篇文章的目的是希望给那些第一次做垮平台恢复的朋友开拓一些思路,有一个方向,至于那些比较细微的问题还需要各位根据自己所掌握的知识慢慢处理,祝大家好运。

  

  摘要:

  数据库版本:11.0.2.0.1

  操作系统:Windoors(源OS) for Linux(目标OS)

  恢复工具:Rman

  数据量:1.4T

  前期准备:

  1:做恢复之前,首先我们要查看数据库自带的试图,来判断一下两平台如果传输备份数据是否需要转换字符,我是从Windoors(64bit)恢复到Linux(64bit),很显然它们都属于little字节,所以不需要转换。

  SQL> select * from v$transportable_platform order by platform_id;

  PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

  ----------- ----------------------------------- --------------

  1 Solaris[tm] OE (32-bit) Big

  2 Solaris[tm] OE (64-bit) Big

  3 HP-UX (64-bit) Big

  4 HP-UX IA (64-bit) Big

  5 HP Tru64 UNIX Little

  6 AIX-Based Systems (64-bit) Big

  7 Microsoft Windows IA (32-bit) Little

  8 Microsoft Windows IA (64-bit) Little

  9 IBM zSeries Based Linux Big

  10 Linux IA (32-bit) Little

  11 Linux IA (64-bit) Little

  12 Microsoft Windows x86 64-bit Little

  13 Linux x86 64-bit Little

  15 HP Open VMS Little

  16 Apple Mac OS Big

  17 Solaris Operating System (x86) Little

  18 IBM Power Based Linux Big

  19 HP IA Open VMS Little

  20 Solaris Operating System (x86-64) Little

  21 Apple Mac OS (x86-64) Little

  2:我在做恢复的前一晚做了一个rman0级备份(OPEN状态下),备份包括(所有的数据文件,控制文件,参数文件,归档日志),以下是备份脚本。

  run

  {

  allocate channel c1 device type disk;

  allocate channel c2 device type disk;

  allocate channel c3 device type disk;

  allocate channel c4 device type disk;

  allocate channel c5 device type disk;

  backup incremental level=0 database format 'e:\rmanbackup\data_%T_%s_%p';

  backup archivelog all format 'e:\rmanbackup\log_%T_%s_%p' delete all input;

  backup current controlfile format 'e:\rmanbackup\ctl_%T_%s_%p';

  backup spfile format 'e:\rmanbackup\spfile_%T_%s_%p';

  release channel c1;

  release channel c2;

  release channel c3;

  release channel c4;

  release channel c5;

  }

  3:将备份级拷贝到目标服务器(Linux)

  4:在目标服务器(Linux)只安装数据库软件(11.0.2.0.1)

  恢复开始

  1:首先连接rman

  [oracle@R21-CORE-DL380-03 ~]$ rman target /

  2:启动到nomount,虽然我们的dbs目录下没有任何的参数文件,但是数据库依然可以启动到nomoun阶段

  RMAN> startup nomount

  startup failed: ORA-01078: failure in processing system parameters

  LRM-00109: could not open parameter file '/opt/oracle/app/dbs/initccxe.ora'

  starting Oracle instance without parameter file for retrieval of spfile

  Oracle instance started

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  3:设置源数据库DBID,目的是可以使备份文件被识别。

  RMAN> set DBID=

  4:将spfile在备份级内恢复到dbs目录下

  RMAN> restore spfile to '/opt/app/oracle/dbs/spfileccxe.ora' from '/var/tools/test/SPFILE__189_1';

  5:连接到sqlplus

  [oracle@R21-CORE-DL380-03 ~]$ sqlplus / as sysdba

  6:生成纯文本参数文件

  SQL> create pfile from spfile;

  7:到dbs目录下修改纯文本参数文件,将红色字体标注的文件夹创建,并修改路径。

  [oracle@R21-CORE-DL380-03 ~]$ vim initccxe.ora

  ccxe.__db_cache_size=

  ccxe.__java_pool_size=

  ccxe.__large_pool_size=

  ccxe.__oracle_base='/opt/app'#ORACLE_BASE set from environment

  ccxe.__pga_aggregate_target=

  ccxe.__sga_target=

  ccxe.__shared_io_pool_size=0

  ccxe.__shared_pool_size=

  ccxe.__streams_pool_size=

  *.audit_file_dest='/opt/app/admin/CCXE/adump'

  *.audit_trail='db'

  *.compatible='11.2.0.0.0'

  *.control_files='/opt/app/oradata/CCXE/control01.c tl','/opt/app/flash_recovery_area/CCXE/control02.ct l'

  *.db_block_size=8192

  *.db_domain=''

  *.db_name='CCXE'

  *.db_recovery_file_dest='/opt/app/flash_recovery_a rea'

  *.db_recovery_file_dest_size=

  *.diagnostic_dest='/opt/app'

  *.dispatchers='(PROTOCOL=TCP) (SERVICE=CCXEXDB)'

  *.log_archive_dest_1='location=/opt/app/archive_lo g'

  *.log_archive_max_processes=10

  *.memory_max_target=

  *.memory_target=

  *.nls_language='SIMPLIFIED CHINESE'

  *.nls_territory='CHINA'

  *.open_cursors=300

  *.pga_aggregate_target=

  *.processes=150

  *.remote_login_passwordfile='EXCLUSIVE'

  *.sga_max_size=

  *.sga_target=

  *.streams_pool_size=

  *.undo_tablespace='UNDOTBS1'

  [oracle@R21-CORE-DL380-03 app]$ mkdir -p admin/CCXE/adump

  [oracle@R21-CORE-DL380-03 app]$ mkdir -p oradata/CCXE/

  [oracle@R21-CORE-DL380-03 app]$ mkdir -p flash_recovery_area/CCXE/

  8:使用新的参数文件重启数据库到nomount状态。

  SQL> startup force nomount pfile=/opt/app/oracle/dbs/initCCXE.ora

  ORACLE instance started.

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  9:根据参数文件内的路径将控制文件恢复到指定的目录,并把数据库启动到mount状态。

  RMAN> restore controlfile to '/opt/oracle/oradata/CCXE/control01.ctl' from '/var/tools/test/CTL__191_1'

  RMAN> restore controlfile to '/opt/app/flash_recovery_area/CCXE/control02.ctl' from '/var/tools/test/CTL__191_1'

  SQL> alter database mount;

  Database altered.

  10:将备份级的路径记录到控制文件内

  RMAN> catalog start with '/var/tools/test';

  Starting implicit crosscheck backup at 05-JUL-11

  using target database control file instead of recovery catalog

  allocated channel: ORA_DISK_1

  channel ORA_DISK_1: SID=114 device type=DISK

  Crosschecked 21 objects

  Finished implicit crosscheck backup at 05-JUL-11

  Starting implicit crosscheck copy at 05-JUL-11

  using channel ORA_DISK_1

  Finished implicit crosscheck copy at 05-JUL-11

  searching for all files in the recovery area

  cataloging files...

  no files cataloged

  searching for all files that match the pattern /var/tools/test

  List of Files Unknown to the Database

  =====================================

  File Name: /var/tools/test/CTL__187_1

  File Name: /var/tools/test/DATA__176_1

  File Name: /var/tools/test/DATA__177_1

  File Name: /var/tools/test/DATA__178_1

  File Name: /var/tools/test/DATA__179_1

  File Name: /var/tools/test/DATA__180_1

  File Name: /var/tools/test/DATA__181_1

  File Name: /var/tools/test/DATA__182_1

  File Name: /var/tools/test/DATA__183_1

  File Name: /var/tools/test/SPFILE__189_1

  Do you really want to catalog the above files (enter YES or NO)? yes

  cataloging files...

  cataloging done

  List of Cataloged Files

  =======================

  File Name: /var/tools/test/CTL__187_1

  File Name: /var/tools/test/DATA__176_1

  File Name: /var/tools/test/DATA__177_1

  File Name: /var/tools/test/DATA__178_1

  File Name: /var/tools/test/DATA__179_1

  File Name: /var/tools/test/DATA__180_1

  File Name: /var/tools/test/DATA__181_1

  File Name: /var/tools/test/DATA__182_1

  File Name: /var/tools/test/DATA__183_1

  File Name: /var/tools/test/SPFILE__189_1

  11:我们可以查看一下备份级是否已经记录到当前的控制文件内(/var/tools/test/DATA__176_1)

  RMAN> list backup;

  using target database control file instead of recovery catalog

  List of Backup Sets

  ===================

  BS Key Type LV Size Device Type Elapsed Time Completion Time

  ------- ---- -- ---------- ----------- ------------ ---------------

  178 Full 12.20M DISK 00:00:00 05-JUL-11

  BP Key: 186 Status: AVAILABLE Compressed: NO Tag: TAGT0

  Piece Name: /var/tools/test/CTL__187_1

  Control File Included: Ckp SCN: Ckp time: 05-JUL-11 BS Key Type LV Size Device Type Elapsed Time Completion Time

  ------- ---- -- ---------- ----------- ------------ ---------------

  179 Full 161.05G DISK 00:00:00 04-JUL-11

  BP Key: 187 Status: AVAILABLE Compressed: NO Tag: TAGT

  Piece Name: /var/tools/test/DATA__176_1

  List of Datafiles in backup set 179

  File LV Type Ckp SCN Ckp Time Name

  ---- -- ---- ---------- --------- ----

  6 Full 04-JUL-11 D:\ORACLEDATA\JYDB02.DBF

  8 Full 04-JUL-11 D:\ORACLEDATA\JYDB04.DBF

  16 Full 04-JUL-11 D:\ORACLEDATA\JYDB012.DBF

  17 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER01.DBF

  26 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER08.DBF

  29 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER10.DBF

  44 Full 04-JUL-11 D:\ORACLEDATA\JYDB19.DBF

  53 Full 04-JUL-11 D:\ORACLEDATA\JYDB21.DBF BS Key Type LV Size Device Type Elapsed Time Completion Time

  ------- ---- -- ---------- ----------- ------------ ---------------

  180 Full 128.38G DISK 00:00:00 04-JUL-11

  BP Key: 188 Status: AVAILABLE Compressed: NO Tag: TAGT

  Piece Name: /var/tools/test/DATA__177_1

  List of Datafiles in backup set 180

  File LV Type Ckp SCN Ckp Time Name

  ---- -- ---- ---------- --------- ----

  3 Full 04-JUL-11 D:\APP\ADMINISTRATOR\ORADATA\CCXE\UNDOTBS01.DBF

  11 Full 04-JUL-11 D:\ORACLEDATA\JYDB07.DBF

  28 Full 04-JUL-11 D:\ORACLEDATA\JYDB015.DBF

  30 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER11.DBF

  36 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER17.DBF

  47 Full 04-JUL-11 D:\ORACLEDATA\JYDB21

  55 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER23.DBF

  57 Full 04-JUL-11 D:\ORACLEDATA\SCHEDULE01.DBF BS Key Type LV Size Device Type Elapsed Time Completion Time

  ------- ---- -- ---------- ----------- ------------ ---------------

  181 Full 123.15G DISK 00:00:00 04-JUL-11

  BP Key: 189 Status: AVAILABLE Compressed: NO Tag: TAGT

  Piece Name: /var/tools/test/DATA__178_1

  List of Datafiles in backup set 181

  File LV Type Ckp SCN Ckp Time Name

  ---- -- ---- ---------- --------- ----

  14 Full 04-JUL-11 D:\ORACLEDATA\JYDB010.DBF

  32 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER13.DBF

  35 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER16.DBF

  42 Full 04-JUL-11 D:\ORACLEDATA\JYDB18.DBF

  45 Full 04-JUL-11 D:\ORACLEDATA\JYETL01.DBF

  50 Full 04-JUL-11 D:\ORACLEDATA\TRANUSER22

  56 Full 04-JUL-11 D:\ORACLEDATA\CCX01.DBF

  60 Full 04-JUL-11 E:\ORACLEDATA\TRANIDX01.DBF

  12:虽然备份级已经被记录到了当前的控制文件内,但是数据文件的路径依旧显示的是Windows下的路径。

  SQL> select name from v$datafile;

  NAME

  -------------------------------------------------- ------------------------------

  D:\APP\ADMINISTRATOR\ORADATA\CCXE\SYSTEM01.DBF

  D:\APP\ADMINISTRATOR\ORADATA\CCXE\SYSAUX01.DBF

  D:\APP\ADMINISTRATOR\ORADATA\CCXE\UNDOTBS01.DBF

  D:\APP\ADMINISTRATOR\ORADATA\CCXE\USERS01.DBF

  D:\ORACLEDATA\JYDB01.DBF

  D:\ORACLEDATA\JYDB02.DBF

  D:\ORACLEDATA\JYDB03.DBF

  D:\ORACLEDATA\JYDB04.DBF

  D:\ORACLEDATA\JYDB05.DBF

  D:\ORACLEDATA\JYDB06.DBF

  D:\ORACLEDATA\JYDB07.DBF

  13:连接到Rman,将数据文件的新路径刻录到控制文件内,并恢复数据库。

  run {

  allocate channel c1 type disk;

  allocate channel c2 type disk;

  allocate channel c3 type disk;

  allocate channel c4 type disk;

  allocate channel c5 type disk;

  SET NEWNAME FOR DATAFILE 1 TO '/opt/oracle/oradata/CCXE/SYSTEM01.DBF';

  SET NEWNAME FOR DATAFILE 2 TO '/opt/oracle/oradata/CCXE/SYSAUX01.DBF';

  SET NEWNAME FOR DATAFILE 3 TO '/opt/oracle/oradata/CCXE/UNDOTBS01.DBF';

  SET NEWNAME FOR DATAFILE 4 TO '/opt/oracle/oradata/CCXE/USERS01.DBF';

  SET NEWNAME FOR DATAFILE 5 TO '/opt/oracle/oradata/CCXE/JYDB01.DBF';

  SET NEWNAME FOR DATAFILE 6 TO '/opt/oracle/oradata/CCXE/JYDB02.DBF';

  SET NEWNAME FOR DATAFILE 7 TO '/opt/oracle/oradata/CCXE/JYDB03.DBF';

  SET NEWNAME FOR DATAFILE 8 TO '/opt/oracle/oradata/CCXE/JYDB04.DBF';

  SET NEWNAME FOR DATAFILE 9 TO '/opt/oracle/oradata/CCXE/JYDB05.DBF';

  SET NEWNAME FOR DATAFILE 10 TO '/opt/oracle/oradata/CCXE/JYDB06.DBF';

  SET NEWNAME FOR DATAFILE 11 TO '/opt/oracle/oradata/CCXE/JYDB07.DBF';

  SET NEWNAME FOR DATAFILE 12 TO '/opt/oracle/oradata/CCXE/JYDB08.DBF';

  SET NEWNAME FOR DATAFILE 13 TO '/opt/oracle/oradata/CCXE/JYDB09.DBF';

  SET NEWNAME FOR DATAFILE 14 TO '/opt/oracle/oradata/CCXE/JYDB010.DBF';

  SET NEWNAME FOR DATAFILE 15 TO '/opt/oracle/oradata/CCXE/JYDB011.DBF';

  SET NEWNAME FOR DATAFILE 16 TO '/opt/oracle/oradata/CCXE/JYDB012.DBF';

  SET NEWNAME FOR DATAFILE 17 TO '/opt/oracle/oradata/CCXE/TRANUSER01.DBF';

  SET NEWNAME FOR DATAFILE 18 TO '/opt/oracle/oradata/CCXE/JYDB013.DBF';

  SET NEWNAME FOR DATAFILE 19 TO '/opt/oracle/oradata/CCXE/TRANUSER02.DBF';

  SET NEWNAME FOR DATAFILE 20 TO '/opt/oracle/oradata/CCXE/TRANUSER03.DBF';

  SET NEWNAME FOR DATAFILE 21 TO '/opt/oracle/oradata/CCXE/TRANUSER04.DBF';

  SET NEWNAME FOR DATAFILE 22 TO '/opt/oracle/oradata/CCXE/JYDB014.DBF';

  SET NEWNAME FOR DATAFILE 23 TO '/opt/oracle/oradata/CCXE/TRANUSER05.DBF';

  SET NEWNAME FOR DATAFILE 24 TO '/opt/oracle/oradata/CCXE/TRANUSER06.DBF';

  SET NEWNAME FOR DATAFILE 25 TO '/opt/oracle/oradata/CCXE/TRANUSER07.DBF';

  SET NEWNAME FOR DATAFILE 26 TO '/opt/oracle/oradata/CCXE/TRANUSER08.DBF';

  SET NEWNAME FOR DATAFILE 27 TO '/opt/oracle/oradata/CCXE/TRANUSER09.DBF';

  SET NEWNAME FOR DATAFILE 28 TO '/opt/oracle/oradata/CCXE/JYDB015.DBF';

  SET NEWNAME FOR DATAFILE 29 TO '/opt/oracle/oradata/CCXE/TRANUSER10.DBF';

  SET NEWNAME FOR DATAFILE 30 TO '/opt/oracle/oradata/CCXE/TRANUSER11.DBF';

  SET NEWNAME FOR DATAFILE 31 TO '/opt/oracle/oradata/CCXE/TRANUSER12.DBF';

  SET NEWNAME FOR DATAFILE 32 TO '/opt/oracle/oradata/CCXE/TRANUSER13.DBF';

  SET NEWNAME FOR DATAFILE 33 TO '/opt/oracle/oradata/CCXE/TRANUSER14.DBF';

  SET NEWNAME FOR DATAFILE 34 TO '/opt/oracle/oradata/CCXE/TRANUSER15.DBF';

  SET NEWNAME FOR DATAFILE 35 TO '/opt/oracle/oradata/CCXE/TRANUSER16.DBF';

  SET NEWNAME FOR DATAFILE 36 TO '/opt/oracle/oradata/CCXE/TRANUSER17.DBF';

  SET NEWNAME FOR DATAFILE 37 TO '/opt/oracle/oradata/CCXE/TRANUSER18.DBF';

  SET NEWNAME FOR DATAFILE 38 TO '/opt/oracle/oradata/CCXE/TRANUSER19.DBF';

  SET NEWNAME FOR DATAFILE 39 TO '/opt/oracle/oradata/CCXE/TRANUSER20.DBF';

  SET NEWNAME FOR DATAFILE 40 TO '/opt/oracle/oradata/CCXE/JYDB16.DBF';

  SET NEWNAME FOR DATAFILE 41 TO '/opt/oracle/oradata/CCXE/JYDB17.DBF';

  SET NEWNAME FOR DATAFILE 42 TO '/opt/oracle/oradata/CCXE/JYDB18.DBF';

  SET NEWNAME FOR DATAFILE 43 TO '/opt/oracle/oradata/CCXE/JYDB20.DBF';

  SET NEWNAME FOR DATAFILE 44 TO '/opt/oracle/oradata/CCXE/JYDB19.DBF';

  SET NEWNAME FOR DATAFILE 45 TO '/opt/oracle/oradata/CCXE/JYETL01.DBF';

  SET NEWNAME FOR DATAFILE 46 TO '/opt/oracle/oradata/CCXE/UNDOTBS02.DBF';

  SET NEWNAME FOR DATAFILE 47 TO '/opt/oracle/oradata/CCXE/JYDB21';

  SET NEWNAME FOR DATAFILE 48 TO '/opt/oracle/oradata/CCXE/TRANUSER21';

  SET NEWNAME FOR DATAFILE 49 TO '/opt/oracle/oradata/CCXE/JYDB22';

  SET NEWNAME FOR DATAFILE 50 TO '/opt/oracle/oradata/CCXE/TRANUSER22';

  SET NEWNAME FOR DATAFILE 51 TO '/opt/oracle/oradata/CCXE/JYDB23';

  SET NEWNAME FOR DATAFILE 52 TO '/opt/oracle/oradata/CCXE/JYDB24.DBF';

  SET NEWNAME FOR DATAFILE 53 TO '/opt/oracle/oradata/CCXE/JYDB21.DBF';

  SET NEWNAME FOR DATAFILE 54 TO '/opt/oracle/oradata/CCXE/JYDB22.DBF';

  SET NEWNAME FOR DATAFILE 55 TO '/opt/oracle/oradata/CCXE/TRANUSER23.DBF';

  SET NEWNAME FOR DATAFILE 56 TO '/opt/oracle/oradata/CCXE/CCX01.DBF';

  SET NEWNAME FOR DATAFILE 57 TO '/opt/oracle/oradata/CCXE/SCHEDULE01.DBF';

  SET NEWNAME FOR DATAFILE 58 TO '/opt/oracle/oradata/CCXE/TRANUSER24.DBF';

  SET NEWNAME FOR DATAFILE 59 TO '/opt/oracle/oradata/CCXE/TRANUSER25.DBF';

  SET NEWNAME FOR DATAFILE 60 TO '/opt/oracle/oradata/CCXE/TRANIDX01.DBF';

  SET NEWNAME FOR DATAFILE 61 TO '/opt/oracle/oradata/CCXE/TRANIDX02.DBF';

  restore database;

  switch datafile all;

  release channel c1;

  release channel c2;

  release channel c3;

  release channel c4;

  release channel c5;

  }

  未完待续

  这个实验先写到这里,因为到这步后就是RECOVER DATABASE 和 ALTER DATABASE OPEN RESETLOGS 的步骤,也是出错最多的两个步骤,我现在正在整理排错的文档,我不希望马马虎虎的结束这篇文章,等整理好文档后,我会继续把这个"残缺"的文章补全,以上的恢复步骤如有其他问题,希望得到各位朋友的指点与批评。

本文章出自Oracle 金牌WDP CUUG,更多Oracle认证培训请浏览CUUG官网


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值