首页 > Linux操作系统 > Linux操作系统 > 丢失数据文件其没有备份的恢复
论坛里有人问如果没有数据文件的备份但是有文件创建以来的所有归档,能否恢复这个数据文件。
http://www.itpub.net/thread-1268153-1-1.html
当时马上想起OCP教程里面有该部分内容的介绍,当时一个字一个字读OCP教程已经是几年前了,但还是做了如下实验:
C:\Documents and Settings\User>sqlplus "jcq0/jcq0@ora10"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 2月 8 13:43:06 2010
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
JCQ0> SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
JCQ01 TEST
C:\Documents and Settings\User>SET ORACLE_SID=ORA10
C:\Documents and Settings\User>SQLPLUS "/ AS SYSDBA"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 2月 8 13:47:21 2010
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
JCQ0> ARCHIVE LOG LIST
数据库日志模式 存档模式
自动存档 启用
存档终点 E:\data\oradata\10g\ora10\archive2\
最早的联机日志序列 404
下一个存档日志序列 406
当前日志序列 406
JCQ0> SELECT * FROM V$DBFILE;
FILE#
----------
NAME
--------------------------------------------------------------------------------
1
E:\DATA\ORADATA\10G\ORA10\SYSTEM01.DBF
2
E:\DATA\ORADATA\10G\ORA10\UNDOTBS01.DBF
3
E:\DATA\ORADATA\10G\ORA10\SYSAUX01.DBF
FILE#
----------
NAME
--------------------------------------------------------------------------------
4
E:\DATA\ORADATA\10G\ORA10\USERS01.DBF
6
E:\DATA\ORADATA\10G\ORA10\LOGMNRTS.DBF
5
E:\DATA\ORADATA\10G\ORA10\JCQ0.DBF
FILE#
----------
NAME
--------------------------------------------------------------------------------
7
E:\DATA\ORADATA\10G\ORA10\LOBTEST.DBF
已选择7行。
JCQ0> SELECT FILE_NAME,FILE_ID FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='TEST';
FILE_NAME
--------------------------------------------------------------------------------
FILE_ID
----------
E:\DATA\ORADATA\10G\ORA10\JCQ0.DBF
5
JCQ0> alter tablespace test offline immediate;
表空间已更改。
JCQ0> $move E:\DATA\ORADATA\10G\ORA10\JCQ0.DBF E:\DATA\ORADATA\10G\ORA10\JCQ0.DBF
.bak
另一个程序正在使用此文件,进程无法访问。
JCQ0> SELECT * FROM v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
5 OFFLINE OFFLINE
OFFLINE NORMAL 0
JCQ0> ALTER DATABASE create datafile 'E:\DATA\ORADATA\10G\ORA10\JCQ0.DBF'
2 as 'E:\DATA\ORADATA\10G\ORA10\JCQ011.DBF';
数据库已更改。
JCQ0> SELECT * FROM v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
5 OFFLINE OFFLINE
OFFLINE NORMAL 0
JCQ0> RECOVER TABLESPACE TEST;
ORA-00279: 更改 4947850 (在 02/05/2010 13:34:41 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\DATA\ORADATA\10G\ORA10\ARCHIVE\1_403_681756090.ARC
ORA-00280: 更改 4947850 (用于线程 1) 在序列 #403 中
指定日志: {
AUTO
已应用的日志。
完成介质恢复。
JCQ0> ALTER TABLESPACE TEST ONLINE;
表空间已更改。
JCQ0> CONN JCQ0/JCQ0@ORA10
已连接。
JCQ0> SELECT * FROM JCQ01;
ID
----------
0
1
2
3
4
5
6
7
8
9
10
ID
----------
11
12
13
已选择14行。
JCQ0>
只要有创建数据文件以来的所有归档日志就足以恢复。
发现如今愿意踏踏实实的读文档的人实在是越来越少,少之又少了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14130873/viewspace-627040/ ,如需转载,请注明出处,否则将追究法律责任。