ITPub博客

首页 > 数据库 > 数据库开发技术 > 用备份的控制文件来恢复新建数据文件一例

用备份的控制文件来恢复新建数据文件一例

原创 数据库开发技术 作者:outdo 时间:2007-01-09 16:49:22 0 删除 编辑

在pub上看到过类似问题,讲的是在备份后,新建数据文件。然后模拟丢失数据文件与控制文件。利用备份的控制文件恢复新数据文件。于是跟着做了以下测试。
http://www.itpub.net/showthread.php?s=&threadid=326938&perpage=10&pagenumber=1

[@more@]

--先做一次包括控制文件的全备份。
16:07:49 SQL> startup
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
16:09:04 SQL> select name from V$datafile;

NAME
----------------------------------------
C:ORACLEORADATALABSYSTEM01.DBF
C:ORACLEORADATALABUNDOTBS01.DBF
C:ORACLEORADATALABDRSYS01.DBF
C:ORACLEORADATALABEXAMPLE01.DBF
C:ORACLEORADATALABINDX01.DBF
C:ORACLEORADATALABXDB01.DBF
C:ORACLEORADATALABEDU_DATA.DBF

已选择7行。

16:09:17 SQL> get back
1 alter tablespace SYSTEM begin backup;
2 alter tablespace UNDOTBS1 begin backup;
3 alter tablespace DRSYS begin backup;
4 alter tablespace EXAMPLE begin backup;
5 alter tablespace INDX begin backup;
6 alter tablespace XDB begin backup;
7 alter tablespace EDU_DATA begin backup;
8 host copy /y C:oracleoradataLAB*.dbf D:oraclebackup
9 alter tablespace SYSTEM end backup;
10 alter tablespace UNDOTBS1 end backup;
11 alter tablespace DRSYS end backup;
12 alter tablespace EXAMPLE end backup;
13 alter tablespace INDX end backup;
14 alter tablespace XDB end backup;
15* alter tablespace EDU_DATA end backup;
16:09:29 SQL> archive log list;
数据库日志模式 存档模式
自动存档 禁用
存档终点 C:oracleoradataarchive1
最早的概要日志序列 0
下一个存档日志序列 1
当前日志序列 1
16:09:47 SQL> archive log start;
已处理的语句
16:09:59 SQL> alter system set log_archive_start=true scope=spfile;

系统已更改。

16:10:35 SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 C:oracleoradataarchive1
最早的概要日志序列 0
下一个存档日志序列 1
当前日志序列 1
16:10:42 SQL> @back

表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。

C:oracleoradataLABDRSYS01.DBF
C:oracleoradataLABEDU_DATA.DBF
C:oracleoradataLABEXAMPLE01.DBF
C:oracleoradataLABINDX01.DBF
C:oracleoradataLABOUTDO.DBF
C:oracleoradataLABSYSTEM01.DBF
C:oracleoradataLABTEMP01.DBF
C:oracleoradataLABUNDOTBS01.DBF
C:oracleoradataLABXDB01.DBF
已复制 9 个文件。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。


表空间已更改。

16:14:47 SQL> alter database backup controlfile to trace;

数据库已更改。

16:15:17 SQL> create tablespace outdo datafile 'C:oracleoradataLABOUTDO.DBF' SIZE 1M;
create tablespace outdo datafile 'C:oracleoradataLABOUTDO.DBF' SIZE 1M
*
ERROR 位于第 1 行:
ORA-01119: 创建数据库文件 'C:oracleoradataLABOUTDO.DBF' 时出错
ORA-27038: skgfrcre: 文件存在
OSD-04010: 指定了 选项, 但文件已经存在


16:16:44 SQL> create tablespace outdo datafile 'C:oracleoradataLABOUTDO.DBF' SIZE 1M;

表空间已创建。

16:16:59 SQL> CREATE TABLE TT TABLESPACE OUTDO AS SELECT NAME FROM V$DATAFILE;

表已创建。

16:17:27 SQL> SELECT * FROM V$LOG;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 0 104857600 1 YES UNUSED 0
2 1 0 104857600 1 YES UNUSED 0
3 1 1 104857600 1 NO CURRENT 670449113 09-1月 -07

16:17:44 SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

16:18:03 SQL> SELECT * FROM V$LOG;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 2 104857600 1 NO CURRENT 670452453 09-1月 -07
2 1 0 104857600 1 YES UNUSED 0
3 1 1 104857600 1 YES ACTIVE 670449113 09-1月 -07

16:18:12 SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

--此时删除所有当前控制文件与数据文件。
16:18:59 SQL> STARTUP
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00205: ?????????????????????


16:25:50 SQL> SHUTDOWN
ORA-01507: ??????


ORACLE 例程已经关闭。

--从备份的trace中重建控制文件
16:26:00 SQL> STARTUP NOMOUNT
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
16:26:20 SQL> CREATE CONTROLFILE REUSE DATABASE "LAB" NORESETLOGS ARCHIVELOG
16:26:20 2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
16:26:20 3 MAXLOGFILES 50
16:26:20 4 MAXLOGMEMBERS 5
16:26:20 5 MAXDATAFILES 100
16:26:20 6 MAXINSTANCES 1
16:26:20 7 MAXLOGHISTORY 226
16:26:20 8 LOGFILE
16:26:20 9 GROUP 1 'C:ORACLEORADATALABREDO01.LOG' SIZE 100M,
16:26:20 10 GROUP 2 'C:ORACLEORADATALABREDO02.LOG' SIZE 100M,
16:26:20 11 GROUP 3 'C:ORACLEORADATALABREDO03.LOG' SIZE 100M
16:26:20 12 -- STANDBY LOGFILE
16:26:20 13 DATAFILE
16:26:20 14 'C:ORACLEORADATALABSYSTEM01.DBF',
16:26:20 15 'C:ORACLEORADATALABUNDOTBS01.DBF',
16:26:20 16 'C:ORACLEORADATALABDRSYS01.DBF',
16:26:20 17 'C:ORACLEORADATALABEXAMPLE01.DBF',
16:26:20 18 'C:ORACLEORADATALABINDX01.DBF',
16:26:20 19 'C:ORACLEORADATALABXDB01.DBF',
16:26:20 20 'C:ORACLEORADATALABEDU_DATA.DBF'
16:26:20 21 CHARACTER SET ZHS16GBK
16:26:20 22 ;

控制文件已创建

16:26:22 SQL> RECOVER DATABASE;
ORA-00283: ??????????
ORA-01244: ????????????????????
ORA-01110: ???? 3: 'C:ORACLEORADATALABOUTDO.DBF'

--找到控制文件没有的数据文件。然后用如下语句将起识别。


16:27:40 SQL> alter database create datafile 3 as 'C:ORACLEORADATALABOUTDO.DBF';

数据库已更改。

16:27:51 SQL> RECOVER DATABASE;
完成介质恢复。
16:28:12 SQL> ALTER DATABASE OPEN;

数据库已更改。

16:28:27 SQL> SELECT * FROM TT;

NAME
----------------------------------------
C:ORACLEORADATALABSYSTEM01.DBF
C:ORACLEORADATALABUNDOTBS01.DBF
C:ORACLEORADATALABOUTDO.DBF
C:ORACLEORADATALABDRSYS01.DBF
C:ORACLEORADATALABEXAMPLE01.DBF
C:ORACLEORADATALABINDX01.DBF
C:ORACLEORADATALABXDB01.DBF
C:ORACLEORADATALABEDU_DATA.DBF

已选择8行。

16:28:33 SQL> SELECT NAME FROM V$LOGFILE;
SELECT NAME FROM V$LOGFILE
*
ERROR 位于第 1 行:
ORA-00904: "NAME": ??????


16:29:18 SQL> SELECT NAME FROM V$DATAFILE;

NAME
----------------------------------------
C:ORACLEORADATALABSYSTEM01.DBF
C:ORACLEORADATALABUNDOTBS01.DBF
C:ORACLEORADATALABOUTDO.DBF
C:ORACLEORADATALABDRSYS01.DBF
C:ORACLEORADATALABEXAMPLE01.DBF
C:ORACLEORADATALABINDX01.DBF
C:ORACLEORADATALABXDB01.DBF
C:ORACLEORADATALABEDU_DATA.DBF

已选择8行。

16:29:59 SQL> ARCHIVE LOG LIST;
数据库日志模式 存档模式
自动存档 启用
存档终点 C:oracleoradataarchive1
最早的概要日志序列 1
下一个存档日志序列 3
当前日志序列 3

至此,该恢复结束。

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

上一篇: SG之恢复目录
请登录后发表评论 登录
全部评论

注册时间:2009-03-10

  • 博文量
    30
  • 访问量
    775686