9i完全备份不包含最新控制文件导致
RMAN-06023的解决方案[@more@]
<%}%>
现在我们在来看一下9i中同样的情况
(1)进行全库的备份
RMAN> run{
2> allocate channel C1 device type disk;
3> backup full database format 'E:%U.dbf' include current controlfile;
4> sql 'alter system archive log current';
5> release channel C1;
6> }
?
正在使用目标数据库控制文件替代恢复目录
分配的通道: C1
通道 C1: sid=16 devtype=DISK
?
启动 backup 于 05-4月 -07
通道 C1: 正在启动 full 数据文件备份集
通道 C1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT9.2.0ORADATATEST9ISYSTEM01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IUNDOTBS01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IEXAMPLE01.DBF
输入数据文件 fno=00010 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IXDB01.DBF
输入数据文件 fno=00006 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IINDX01.DBF
输入数据文件 fno=00009 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IUSERS01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT9.2.0ORADATATEST9ICWMLITE01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IDRSYS01.DBF
输入数据文件 fno=00007 name=D:ORACLEPRODUCT9.2.0ORADATATEST9IODM01.DBF
输入数据文件 fno=00008 name=D:ORACLEPRODUCT9.2.0ORADATATEST9ITOOLS01.DBF
通道 C1: 正在启动段 1 于 05-4月 -07
通道 C1: 已完成段 1 于 05-4月 -07
段
handle=E:1IEDNTH_1_1.DBF comment=NONE
通道 C1: 备份集已完成, 经过时间:00:01:27
完成 backup 于 05-4月 -07
?
sql 语句: alter system archive log current
?
释放的通道: C1
这里我们可以看到
9i
和
10g
在
include current controlfile
执行方面的不同,
10g
中控制文件和数据文件放在不同的备份集中,而
9i
中是放在同一个备份集中的,从而增加了恢复的难度。
(2)
模拟删除掉所有的数据文件和控制文件
(3)
从控制文件的备份中恢复控制文件
RMAN> restore controlfile from 'E:1IEDNTH_1_1.DBF';
?
启动 restore 于 05-4月 -07
?
正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:ORACLEPRODUCT9.2.0ORADATATEST9ICONTROL01.CTL
输出文件名=D:ORACLEPRODUCT9.2.0ORADATATEST9ICONTROL02.CTL
输出文件名=D:ORACLEPRODUCT9.2.0ORADATATEST9ICONTROL03.CTL
完成 restore 于 05-4月 -07
(4)mount,restore,recover
以及
resetlogs
RMAN> alter database mount;
?
数据库已加载
RMAN> restore database;
?
启动 restore 于 05-4月 -07
?
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/05/2007 15:26:21
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 10 found to restore
RMAN-06023: no backup or copy of datafile 9 found to restore
RMAN-06023: no backup or copy of datafile 8 found to restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore
现在我们看到
9i
和
10g
在这一点上的最大的不同,在
9i
中备份的控制文件是不包含本次备份的信息的。而
10g
是包含的因此可以轻松恢复。
9i
中需要用到
dbms_backup_restore
包。
sys@TEST9I> column name format a55
sys@TEST9I> select file#,name from v$datafile;
?
???? FILE# NAME
---------- -------------------------------------------------------
???????? 1 D:ORACLEPRODUCT9.2.0ORADATATEST9ISYSTEM01.DBF
???????? 2 D:ORACLEPRODUCT9.2.0ORADATATEST9IUNDOTBS01.DBF
???????? 3 D:ORACLEPRODUCT9.2.0ORADATATEST9ICWMLITE01.DBF
???????? 4 D:ORACLEPRODUCT9.2.0ORADATATEST9IDRSYS01.DBF
???????? 5 D:ORACLEPRODUCT9.2.0ORADATATEST9IEXAMPLE01.DBF
???????? 6 D:ORACLEPRODUCT9.2.0ORADATATEST9IINDX01.DBF
???????? 7 D:ORACLEPRODUCT9.2.0ORADATATEST9IODM01.DBF
???????? 8 D:ORACLEPRODUCT9.2.0ORADATATEST9ITOOLS01.DBF
???????? 9 D:ORACLEPRODUCT9.2.0ORADATATEST9IUSERS01.DBF
??????? 10 D:ORACLEPRODUCT9.2.0ORADATATEST9IXDB01.DBF
?
sys@TEST9I> DECLARE
? 2? devtype varchar2(256);
? 3? done boolean;
4? BEGIN
--
分配
channel
5? devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'C1');
--
开始恢复
datafile
6? sys.dbms_backup_restore.restoreSetDatafile;
--
指明
datafile
的
file#
和
name(
在
v$datafile
中可以查到
)
? 7? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9ISYSTEM01.DBF');
? 8 ?sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IUNDOTBS01.DBF');
? 9 ?sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9ICWMLITE01.DBF');
?10? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IDRSYS01.DBF');
?11? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>05,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IEXAMPLE01.DBF');
?12? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IINDX01.DBF');
?13? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>07,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IODM01.DBF');
?14? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>08,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9ITOOLS01.DBF');
?15? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>09,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IUSERS01.DBF');
?16? sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>10,toname=>'D:ORACLEPRODUCT9.2.0ORADATA
TEST9IXDB01.DBF');
--
指明从那个备份集恢复
?17 ?sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:1IEDNTH_1_1.DBF', params=>nu
ll);
--
释放
channel
?18? sys.dbms_backup_restore.deviceDeallocate;
?19? END;
?20? /
?
PL/SQL 过程已成功完成。
?
--手动指明需要的归档
--红色的是输入的部分
sys@TEST9I> Recover database using backup controlfile until cancel;
ORA-00279: 更改 194912 (在 04/05/2007 15:05:21 生成) 对于线程 1 是必需的
?
指定日志: {=suggested | filename | AUTO | CANCEL}
D:oracleproduct9.2.0oradatatest9iarchive1_1.DBF
ORA-00279: 更改 195153 (在 04/05/2007 15:06:48 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:ORACLEPRODUCT9.2.0ORADATATEST9IARCHIVE1_2.DBF
ORA-00280: 更改 195153 对于线程 1 是按序列 # 2 进行的
ORA-00278: 此恢复不再需要日志文件 'D:oracleproduct9.2.0oradatatest9iarchive1_1.DBF'
?
指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
?
sys@TEST9I> alter database open resetlogs;
?
数据库已更改。
RMAN中include current conrtrolfile在9i和10g的不同(1)
在itpub上看到一个关于数据文件和控制文件完全丢失的帖子,自己做了一点实验过程如下
(原帖http://www.itpub.net/showthread.php?s=&threadid=244345&perpage=10&pagenumber=1)
首先我们看一下
10g
的情况
(1)
进行全库的备份
?
RMAN> run{
2> allocate channel C1 device type disk;
3> backup full database tag 'FULLBACKUP' format 'E:FULL_%U.dbf' include current controlfile;
4> sql 'alter system archive log current';
5> release channel C1;
6> }
?
分配的通道: C1
通道 C1: sid=143 devtype=DISK
?
启动 backup 于 05-4月 -07
通道 C1: 启动全部数据文件备份集
通道 C1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF
通道 C1: 正在启动段 1 于 05-4月 -07
通道 C1: 已完成段 1 于 05-4月 -07
段句柄=E:FULL_04IED8O1_1_1.DBF 标记=FULLBACKUP 注释=NONE
通道 C1: 备份集已完成, 经过时间:00:00:54
通道 C1: 启动全部数据文件备份集
通道 C1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
通道 C1: 正在启动段 1 于 05-4月 -07
通道 C1: 已完成段 1 于 05-4月 -07
段句柄=E:FULL_05IED8PN_1_1.DBF 标记=FULLBACKUP 注释=NONE
通道 C1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 05-4月 -07
?
sql 语句: alter system archive log current
?
释放的通道: C1
?
(2)
模拟删除掉所有的数据文件和控制文件,此时
startup
肯定会报错的
?
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
?
F:fileTurningSQLnewuse>sqlplus sys/oracle@test as sysdba
?
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 4月 5 10:51:20 2007
?
Copyright (c) 1982, 2006, Oracle.? All Rights Reserved.
?
已连接到空闲例程。
?
idle> startup
ORACLE 例程已经启动。
?
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1289508 bytes
Variable Size?????????? ??104858332 bytes
Database Buffers?????????? 58720256 bytes
Redo Buffers??????????????? 2904064 bytes
ORA-00205: error in identifying controlfile, check alert log for more info
?
(3)
从控制文件的备份中恢复控制文件
?
可以用
restore controlfile from '
路径文件名
';
如果启动了自动备份也可以使用
restore controlfile from autobackup;
?
RMAN> connect target sys/oracle@test
?
连接到目标数据库: TEST (未装载)
使用目标数据库控制文件替代恢复目录
?
RMAN> restore controlfile from 'E:FULL_05IED8PN_1_1.DBF';
?
启动 restore 于 05-4月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
?
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:06
输出文件名=D:ORACLEPRODUCT10.2.0ORADATATESTCONTROL01.CTL
输出文件名=D:ORACLEPRODUCT10.2.0ORADATATESTCONTROL02.CTL
输出文件名=D:ORACLEPRODUCT10.2.0ORADATATESTCONTROL03.CTL
完成 restore 于 05-4月 -07
?
(4)mount,restore,recover
以及
resetlogs
?
RMAN> alter database mount;
?
数据库已装载
释放的通道: ORA_DISK_1
?
此时最好重新登录一下
rman,
我在这里遇到错误
,
重新登录问题解决
,
不知道是什么问题
?
?
RMAN> restore database;
?
启动 restore 于 05-4月 -07
启动 implicit crosscheck backup 于 05-4月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
已交叉检验的 3 对象
完成 implicit crosscheck backup
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1016600/,如需转载,请注明出处,否则将追究法律责任。
请登录后发表评论
登录
全部评论
<%=items[i].createtime%>
<%=items[i].content%>
<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%}%> <%if(items[i].items.total > 5) { %>
<%}%>
<%=items[i].items.items[j].createtime%>
<%=items[i].items.items[j].username%> 回复 <%=items[i].items.items[j].tousername%>: <%=items[i].items.items[j].content%>
还有<%=items[i].items.total-5%>条评论
) data-count=1 data-flag=true>点击查看
<%}%>
转载于:http://blog.itpub.net/82387/viewspace-1016600/