--RMAN数据库异机迁移步骤
----------------------------2013/09/28
测试环境:AIX+ora11g
 
一. source数据库准备。
 
1.获取数据文件编号和路径
 
SQL> select file_id,file_name from dba_data_files order by file_id;
 
   FILE_ID FILE_NAME
---------- ------------------------------------------------------------
         1 /u01/app/oracle/oradata/august/august/system01.dbf
         2 /u01/app/oracle/oradata/august/august/sysaux01.dbf
         3 /u01/app/oracle/oradata/august/august/undotbs01.dbf
         4 /u01/app/oracle/oradata/august/august/users01.dbf
 
 
2.获取临时文件编号和路径
 
SQL> select file#, name from v$tempfile;
 
     FILE# NAME
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/august/august/temp01.dbf
 
 
2.获取在线日志文件组和路径
 
SQL> select group#,member from v$logfile;
 
    GROUP# MEMBER
---------- ------------------------------------------------------------
         3 /u01/app/oracle/oradata/august/august/redo03.log
         2 /u01/app/oracle/oradata/august/august/redo02.log
         1 /u01/app/oracle/oradata/august/august/redo01.log
 
 
二. source数据库备份。
 
1. rman备份脚本
 
run {
Allocate channel rman_1 type disk;
Allocate channel rman_2 type disk;
Allocate channel rman_2 type disk;
 
sql ‘alter system switch logfile’;
backup database format ‘/~dir/df_%T_%U.dbf’;                --备份数据文件
backup current controlfile format ‘/~dir/cf_%T_%U.ctf’;     --备份控制文件
backup spfile format ‘/~dir/sp_%T_%U.sp’;                   --备份参数文件
sql ‘alter system archive log current’;                 --归档备份期间日志,手动添加到备份集中。
 
release channel rman_1;
release channel rman_2;
release channel rman_3;
 
}
 
备份归档日志到备份集中。
 
 
2. FTP传输备份介质到异机。
 
 
三. 目标数据库异机恢复。
 
1. 恢复参数文件
 
设置目标实例名环境变量,启动rman连接。
 
[Oracle@localhost ~]$ export ORACLE_SID=ors
[Oracle@localhost ~]$ rman target /
 
Recovery Manager: Release 11.2.0.1.0 - Production on Fri Sep 27 20:13:47 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database (not started)
 
启动到实例到nomount下。
 
RMAN> startup nomount;
 
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initors.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
 
Total System Global Area     159019008 bytes
 
Fixed Size                     1335192 bytes
Variable Size                 75497576 bytes
Database Buffers              79691776 bytes
Redo Buffers                   2494464 bytes
 
RMAN> quit
Recovery Manager complete.
 
[Oracle@localhost ~]$ rman target /
 
Recovery Manager: Release 11.2.0.1.0 - Production on Fri Sep 27 20:16:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DUMMY (not mounted)
 
RMAN>
可以看到这里没有参数文件,rman启动连接到了DUMMY实例。(AIX平台上会报错,不会自动连接到DUMMY实例
 
 
à*如果没能自行连接到DUMMY实例,可以按照如下方式恢复参数文件。
 
1).如果整个数据库环境没有其他实例,则先不设置ORACLE_SID启动空实例。
export ORACLE_SID=      --或者直接不写
rman target /
startup nomount;            --将启动dummy实例到nomount
 
2). 如果环境中有其他实例,则先连接到其他实例的rman。
export ORACLE_SID=cospndb;
rman target /
           
 
 
à连接到可用的rman后,恢复spfilepfile
 
SPFILE
RMAN> restore spfile from ‘传输过来的参数文件备份片路径和文件名’;
 
PFILE
RMAN> restore spfile to pfile ‘目标pfile的存储路径和文件名’ from ‘传输过来的参数文件备份片路径和文件名’;
 
*建议先恢复参数文件PFILE,因为要做出修改,等一切都修改完成后,再由PFILE创建SPFILE
SQL> create spfile from pfile;
 
 
2. 修改参数文件中,对应的目录信息,并根据参数文件信息,创建系统中没有的目录,注意目录权限(oracle)。
 
3. 有了修改好的参数文件,我们可以将rman退出DUMMY实例或者别的实例,启动链接到欲恢复的实例。
 
export ORACLE_SID=ors;
rman target /       --将连接到此实例
 
à利用参数文件打开实例到nomount模式。
 
RMAN> startup force nomount pfile=‘上一个步骤恢复回来并修改的参数文件路径和文件名;

重要:根据修改好的pfile创建新的spfile。 RMAN> create spfile from pfile;
原因:下次重启oracle的时候,oracle优先用spfile打开数据库,如果spfile还是旧的话,那么就会报错,打不开数据库。
 
4. 恢复控制文件
 
RMAN> restore contorlfile from ‘传输过来的控制文件备份片路径和文件名        --恢复控制文件到参数文件指定目录
 
 
5. 由控制文件,将数据库打开到mount模式。
 
RMAN> alter database mount;
 
 
6. 恢复数据库数据文件。
 
根据实际环境设置新的数据文件恢复目录,这里要使用我们之前准备的source数据库文件结构信息。
 
RMAN>  run {
set newname for datafile  1 to  "/u01/oradata/system01.dbf";
set newname for datafile  2 to  "/u01/oradata/sysaux01.dbf";
set newname for datafile  3 to  "/u01/oradata/undotbs01.dbf";
set newname for datafile  4 to  "/u01/oradata/users01.dbf";
restore database;
switch datafile all;
}
 
switch datafile all的说明:
-------------------------------------------------------------------
对于nocatalog 模式下,rman备份的信息是保存在控制文件里的,包括文件的路径信息。 这里的switch datafile all的作用,就是更新控制文
件里的信息。
-------------------------------------------------------------------
 
7. 数据库介质恢复
 
SQL> recover database using backup controlfile until cancel;
 
--指定归档日志目录
--cancel
完成介质恢复
 
注意:完成介质恢复后就可以打开数据库了alter database open resetlogs;
需要说明的就是:open resetlogs 之后,自动在原来默认的路径创建了temp 表空间和online redo 日志文件。
为了方便起见,我建议先在controlfile中进行这些目录的更改。
 
8. 更改temp表空间目录
SQL> alter database rename file '/u01/app/oracle/oradata/august/august/temp01.dbf' to '/u01/oradata/temp01.dbf';
Database altered.
 
9. online redo log的处理
 
方案1: 在alter database open resetlogs之前更改contorlfile中的路径情况。
 
SQL> alter database rename file '/dir_old/redo01.log' ,'/dir_old/redo02.log','/dir_old/orcl/redo03.log' to '/dir_new/redo01.rdo','/dir_new/redo02.rdo','/dir_new/redo03.rdo' ;
 
 
----修改完临时文件和在线redo日志文件后,就可以打开数据库了。< SQL> alter database open resetlogs; >
 
方案2:采用DAVE的,打开数据库后再修改。
 
SQL> alter database open resetlog;
 
SQL> select group#,bytes/1024/1024||'M',status from v$log;
    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         1 50M                                       INACTIVE
         2 50M                                       CURRENT
         3 50M                                       UNUSED
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- ---------------------------------------------------------------------
         3 /u01/app/oracle/oradata/dave/redo03.log
         2 /u01/app/oracle/oradata/dave/redo02.log
         1 /u01/app/oracle/oradata/dave/redo01.log
 
oracle 至少有2redo log 所以我们可以将已经完成归档的redo drop掉, 重新创建。
 
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database add logfile group 3 ('/u01/oradata/redo03.log') size 50m;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL>  select group#,bytes/1024/1024||'M',status from v$log;
 
    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         1 50M                                       INACTIVE
         2 50M                                       ACTIVE
         3 50M                                       CURRENT
 
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database add logfile group 1 ('/u01/oradata/redo01.log') size 50m;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database add logfile group 2 ('/u01/oradata/redo02.log') size 50m;
Database altered.
 
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- ---------------------------------------------------------------------
         3 /u01/oradata/redo03.log
         2 /u01/oradata/redo02.log
         1 /u01/oradata/redo01.log
 
(2)处理temp 临时表空间
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/dave/temp01.dbf
 
--表空间offline
SQL> alter database tempfile '/u01/app/oracle/oradata/dave/temp01.dbf' offline;
Database altered.
 
--在OS 级别移动temp 的数据文件
SQL> !mv /u01/app/oracle/oradata/dave/temp01.dbf /u01/oradata/temp01.dbf
 
--修改控制文件中temp文件的信息
SQL> alter database rename file '/u01/app/oracle/oradata/dave/temp01.dbf' to '/u01/oradata/temp01.dbf';
Database altered.
 
--temp 表空间online
SQL> alter database tempfile '/u01/oradata/temp01.dbf' online;
Database altered.
 
--验证
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/oradata/temp01.dbf
 
 
 
 
 
--------------------------------------------
异常问题解答
--------------------------------------------
 
1. 如果没有更改online redo log目录的情况下打开了数据库,但是数据库在新环境中有没有这个目录,导致不能创建online redo log,oracle将当做日志损坏处理,导致数据库无法打开。
 
解决办法:
 
修改controlfile中的online redo log路径。
SQL> alter database rename file '/dir_old/redo01.log' ,'/dir_old/redo02.log','/dir_old/orcl/redo03.log' to '/dir_new/redo01.rdo','/dir_new/redo02.rdo','/dir_new/redo03.rdo' ;
 
 
重建在线日志,对于不是current redo的日志文件,用clear命令清除。
SQL> alter database clear logfile group m;
SQL> alter database clear logfile group n;
 
如果是当前current redo日志组文件,由于我们是恢复的数据库,很显然当前日志组并没有未决的事务信息,使用命令
SQL> alter database clear unarchived logfile group x;
来重建。
 
 
接着就可以打开数据库
 
alter database open resetlogs;
 
 
2. AIX磁盘不足,扩容。
 
使用命令 # chfs -a size=+78G /oracle/BWP/oraarch
意思是给/oracle/BWP/oraarch增加78G的空间(注意G是大写)
 
3. 如果在没有更改temp file目录的情况下打开了数据库(alter database open resetlogs),但是在旧的目录上又没能成功创建temp file。 此时,更改database到mount下。修改controlfile中的tempfile信息。 SQL> alter database rename file '/orasvr/oradata/rsdp/dat/ors/temp01.dbf' to '/orasvr/oradata/cmb/dat/ors/temp01.dbf'; 然后重新打开数据库即可。 这里应用的oracle 10g后的新特性,tempfile会自动重建。
 
4. 如果ORACLE运行中报错ORA-25153:Temporary tablespace is empty. 解决办法就是:添加tempfile,原有的tempfile可能损坏或丢失,在dba_temp_file中查不到此tempfile,但是对应路径我们又能看到此文件,我们可以简单的重新添加。 SQL> alter tablespace temp add tempfile 'D:\APP\HUJIE\ORADATA\AUGUST\TEMP01.DBF';

RMAN数据库异机迁移步骤的更多相关文章

  1. RMAN数据库异机迁移

    本文讲述如何用rman将一个库迁移到另一个服务器上. 服务器A:linux es4 + oracle9204 (源)服务器B:linux es4 + oracle9204 (目标) 一.创建目录 为了 ...

  2. 基于RMAN的异机数据库克隆(rman duplicate)

    对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rman d ...

  3. 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

    Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...

  4. Oracle数据库异机升级

    环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...

  5. 利用rman进行异机还原(目录相同)

    利用rman进行异机还原(目录相同) 源始库:192.168.201.2 目标库:192.168.201.3 --192.168.201.2 --rman [oracle@db01 ~]$ rman ...

  6. openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录

    openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主 ...

  7. 使用rman备份异机恢复数据库

    一.RMAN备份源库注意点: 最好保留rman备份日志 $rman target / log=backup.log RMAN>run { allocate channel t1 type dis ...

  8. RMAN异机恢复步骤及故障处理

    一.測试机安装OS+Oracle Software.包含配置oracle用户.组和环境变量(略) 二.開始异机恢复 1. 复制源库最新备份集.初始化參数.password文件到測试机 [oracle@ ...

  9. Hyper-V安装Oracle Linux6_4 Oracle db 12c并使用rman做异机恢复

    本文记录在Windows Server 2012 R2上安装Oracle Enterprise Linux 6.4以及使用RMAN进行进行异机恢复的过程. Windows服务器增加Hyper-V功能 ...

随机推荐

  1. wpf 绑定失效的原因及解决方案

    有时候,您会发现在程序开始时还能正常运行的绑定失效了.就个人经验而言,绑定的失效主要分为两种情况:对于One-way绑定而言,如果软件开发人员绕过绑定直接更改了目标属性,那么绑定将会失效.而对于Two ...

  2. 【转】perl中尖括号运算符(<>)使用说明

    perl中尖括号运算符的用途分享,这里简单介绍下,方便需要的朋友 perl中<>运算符可以有如下的用途: 1)如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如<STDI ...

  3. Torry的困惑(基本型)

    #include<stdio.h> int main() { long long i,j; int n; //用于记录输入的要进行乘积的质数的个数 ; //用于记录前n个质数的乘积,并初始 ...

  4. FragmentActivity和Activity的具体区别在哪里

    fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是这个兼容包里面的,它提供了操作f ...

  5. easy ui 菜单和按钮(Menu and Button)

    http://www.zi-han.net/case/easyui/menu&button.html

  6. Hibernate从入门到精通(九)一对多双向关联映射

    上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映射,即在一的 ...

  7. codeblocks常用快捷键

    CodeBlocks常用操作快捷键编辑部分:Ctrl + A:全选Ctrl + C:复制Ctrl + X: 剪切Ctrl + V:粘贴Ctrl + Z:撤销Ctrl + S:保存Ctrl + Y / ...

  8. dnf脚本的研究

    [player number] 2 8  [pvp start area]0 0 0 00 0 0 00 0 0 0[dungeon]62[/dungeon][type] `[normal]`[gre ...

  9. 微软职位内部推荐-This Job is no longer available.

    微软近期Open的职位: 如果你想试试这个职位,请跟我联系,我是微软的员工,可以做内部推荐.发你的中英文简历到我的邮箱:Nicholas.lu.mail(at)gmail.com

  10. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...