将Oracle恢复到不同的目录
Dream
|
1#
Dream 发表于 2007-03-01 00:55
将Oracle恢复到不同的目录
C:\Documents and Settings\Administrator.XY>rman target/
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 2月 28 16:42:59 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到目标数据库: ORCL (DBID=1140649303) RMAN> backup database format 'd:\%s.bak'; 启动 backup 于 28-2月 -07 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=143 devtype=DISK 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF 输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF 输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 通道 ORA_DISK_1: 正在启动段 1 于 28-2月 -07 通道 ORA_DISK_1: 已完成段 1 于 28-2月 -07 段句柄=D:\67.BAK 标记=TAG20070228T164332 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:45 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 备份集中包括当前控制文件 在备份集中包含当前的 SPFILE 通道 ORA_DISK_1: 正在启动段 1 于 28-2月 -07 通道 ORA_DISK_1: 已完成段 1 于 28-2月 -07 段句柄=D:\68.BAK 标记=TAG20070228T164332 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05 完成 backup 于 28-2月 -07 RMAN> restore controlfile from 'd:\68.bak' 2> ; 启动 restore 于 28-2月 -07 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=156 devtype=DISK 通道 ORA_DISK_1: 正在复原控制文件 通道 ORA_DISK_1: 恢复完成, 用时: 00:00:05 输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL 输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL 输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 28-2月 -07 RMAN> alter database mount; 数据库已装载 释放的通道: ORA_DISK_1 RMAN> run{ 2> set newname for datafile 1 to 'd:\bak\system.dbf'; 3> set newname for datafile 2 to 'd:\bak\UNDOTBS01.dbf'; 4> set newname for datafile 3 to 'd:\bak\SYSAUX01.dbf'; 5> set newname for datafile 4 to 'd:\bak\USERS01.dbf'; 6> set newname for datafile 5 to 'd:\bak\EXAMPLE01.dbf'; 7> set newname for datafile 6 to 'd:\bak\TEST01.dbf'; 8> restore datafile 1,2,3,4,5,6; 9> switch datafile all; 10> } 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 启动 restore 于 28-2月 -07 启动 implicit crosscheck backup 于 28-2月 -07 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=156 devtype=DISK 已交叉检验的 3 对象 完成 implicit crosscheck backup 于 28-2月 -07 启动 implicit crosscheck copy 于 28-2月 -07 使用通道 ORA_DISK_1 已交叉检验的 9 对象 完成 implicit crosscheck copy 于 28-2月 -07 搜索恢复区域中的所有文件 正在编制文件目录... 没有为文件编制目录 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001恢复到D:\BAK\SYSTEM.DBF 正将数据文件00002恢复到D:\BAK\UNDOTBS01.DBF 正将数据文件00003恢复到D:\BAK\SYSAUX01.DBF 正将数据文件00004恢复到D:\BAK\USERS01.DBF 正将数据文件00005恢复到D:\BAK\EXAMPLE01.DBF 正将数据文件00006恢复到D:\BAK\TEST01.DBF 通道 ORA_DISK_1: 正在读取备份段 D:\67.BAK 通道 ORA_DISK_1: 已恢复备份段 1 段句柄 = D:\67.BAK 标记 = TAG20070228T164332 通道 ORA_DISK_1: 恢复完成, 用时: 00:01:42 完成 restore 于 28-2月 -07 数据文件 1 已转换成数据文件副本 输入数据文件副本 recid=38 stamp=615747058 文件名=D:\BAK\SYSTEM.DBF 数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=39 stamp=615747058 文件名=D:\BAK\UNDOTBS01.DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=40 stamp=615747058 文件名=D:\BAK\SYSAUX01.DBF 数据文件 4 已转换成数据文件副本 输入数据文件副本 recid=41 stamp=615747058 文件名=D:\BAK\USERS01.DBF 数据文件 5 已转换成数据文件副本 输入数据文件副本 recid=42 stamp=615747059 文件名=D:\BAK\EXAMPLE01.DBF 数据文件 6 已转换成数据文件副本 输入数据文件副本 recid=43 stamp=615747059 文件名=D:\BAK\TEST01.DBF RMAN> recover database; 启动 recover 于 28-2月 -07 使用通道 ORA_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 2 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LO G 存在于磁盘上 存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 线程 =1 序列 =2 介质恢复完成, 用时: 00:00:03 完成 recover 于 28-2月 -07 RMAN> alter database open; MAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: alter db 命令 (在 02/28/2007 16:53:09 上) 失败 ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 RMAN> alter database open resetlogs; 数据库已打开 下一步迁移控制文件和redo到新目录下 C:\Documents and Settings\Administrator.XY>sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 28 16:56:52 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> select group#,status from v$log; GROUP# STATUS ---------- ---------------- 1 UNUSED 2 CURRENT 3 UNUSED SQL> col group# for 9 SQL> col member for a60; SQL> select group#,member from v$logfile; GROUP# MEMBER ------ ------------------------------------------------------------ 3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG 2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG SQL> alter database drop logfile 'd:\oracle\product\10.2.0\oradata\orcl\redo01.l og'; 数据库已更改。 SQL> alter database add logfile 'd:\bak\redo01.log' size 50M; 数据库已更改。 SQL> alter database drop logfile 'd:\oracle\product\10.2.0\oradata\orcl\redo03.l og'; 数据库已更改。 SQL> alter database add logfile 'd:\bak\redo03.log' size 50M; 数据库已更改。 SQL> alter system switch logfile; 系统已更改。 SQL> alter database drop logfile 'd:\oracle\product\10.2.0\oradata\orcl\redo02.l og'; 数据库已更改。 SQL> alter database add logfile 'd:\bak\redo02.log' size 50M; 数据库已更改。 SQL> select group#,member from v$logfile; GROUP# MEMBER ------ ------------------------------------------------------------ 3 D:\BAK\REDO03.LOG 2 D:\BAK\REDO02.LOG 1 D:\BAK\REDO01.LOG SQL> 切换控制文件 将*.control_files='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL'#Restore Controlfile 修改为*.control_files='D:\BAK\CONTROL01.CTL','D:\BAK\CONTROL02.CTL','D:\BAK\CONTROL03.CTL'#Restore Controlfile SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> create spfile from pfile; 文件已创建。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1247900 bytes Variable Size 75498852 bytes Database Buffers 88080384 bytes Redo Buffers 2945024 bytes 数据库装载完毕。 数据库已经打开。 SQL> select name from v$controlfile; NAME ------------------------------------------- D:\BAK\CONTROL01.CTL D:\BAK\CONTROL02.CTL D:\BAK\CONTROL03.CTL SQL> select name from v$datafile; NAME ------------------------------------------- D:\BAK\SYSTEM.DBF D:\BAK\UNDOTBS01.DBF D:\BAK\SYSAUX01.DBF D:\BAK\USERS01.DBF D:\BAK\EXAMPLE01.DBF D:\BAK\TEST01.DBF 已选择6行。 SQL> 最后就是临时表空间了 SQL> alter database tempfile 'd:\oracle\product\10.2.0\oradata\orcl\temp01.dbf' offline; 数据库已更改。 SQL> $copy d:\oracle\product\10.2.0\oradata\orcl\temp01.dbf d:\bak\temp01.dbf; 已复制 1 个文件。 SQL> alter database rename 'd:\oracle\product\10.2.0\oradata\orcl\temp01.dbf' to 'd:\bak\temp01.dbf'; alter database rename 'd:\oracle\product\10.2.0\oradata\orcl\temp01.dbf' to 'd:\ bak\temp01.dbf' * 第 1 行出现错误: ORA-02231: ALTER DATABASE 选项缺失或无效 SQL> alter database rename file 'd:\oracle\product\10.2.0\oradata\orcl\temp01.db f' to 'd:\bak\temp01.dbf'; 数据库已更改。 SQL> alter database tempfile 'd:\bak\temp01.dbf' online; 数据库已更改。 SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- D:\BAK\TEMP01.DBF SQL> 至此就将数据文件,redo日志,控制文件,临时表空间都迁移到其它目录中了。 |