丢失非系统非当前活动回滚段表空间中的一个数据文件

原创 2004年07月22日 11:09:00

*
*丢失非系统非当前活动回滚段表空间中的一个数据文件
首先是做一次热备(因为上次已经做了不完全恢复resetlogs)
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
  
E:/>sqlplus internal
  
SQL*Plus: Release 8.1.7.0.0 - Production on 星期一 10月 21 08:05:20 2002
  
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
  
连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
  
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            d:/BACKUPDB/archive
最早的概要信息日志序列     0
下一个存档日志序列   1
当前日志序列           1
SQL> @e:/backupdb/other/aa
  
TO_CHAR(SYSDATE,'''YY
---------------------
'2002-10-21 08:10:22'
  
SQL>
SQL> @e:/backupdb/other/backup_ts.sql
SQL> --set termout off;
SQL> set echo off head off feedback off pagesize 0;
21-10月-02
  
BEGINING ARCHIVE LOG NUMBER IS :
数据库日志模式            存档模式
自动存档             启用
存档终点            d:/BACKUPDB/archive
最早的概要信息日志序列     0
下一个存档日志序列   1
当前日志序列           1
  
Begin Backup Tablespace SYSTEM.'D:/BACKUPDB/SYSTEM01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace RBS.'D:/BACKUPDB/RBS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace USERS.'D:/BACKUPDB/USERS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace TEMP.'D:/BACKUPDB/TEMP01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace TOOLS.'D:/BACKUPDB/TOOLS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace INDX.'D:/BACKUPDB/INDX01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup CONTROLFILE 'D:/BACKUPDB/CONTROL01.CTL'  ...
Successed End Backup The CONTROLFILE .
  
Begin Backup CONTROLFILE To Trace  ...
Successed End Backup The CONTROLFILE .
  
Before Switch Log, The Current Log is:
数据库日志模式            存档模式
自动存档             启用
存档终点            d:/BACKUPDB/archive
最早的概要信息日志序列     0
下一个存档日志序列   1
当前日志序列           1
  
Begin Backup Switch Current Log  ...
Successed End Switch Log .
  
After Switch Log, The Ending Archive Log Number Is :
数据库日志模式            存档模式
自动存档             启用
存档终点            d:/BACKUPDB/archive
最早的概要信息日志序列     1
下一个存档日志序列   2
当前日志序列           2
  
21-10月-02
  
SQL> --set termout on;
SQL>
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:54'
  
已选择 1 行。
  
SQL>
  
数据准备工作1
从下面的情况看,因为改变了数据库的结构,所以,首先需要一个热备或者冷备才能进行恢复。如果已经备份,可以找回数据insert into test2 values(2);,因为2是几经commit;的,3是没有commit的,所以能找会到2。3则会丢失。
  
SQL> alter tablespace system add datafile 'D:/BACKUPDB/SYSTEM02.DBF' size 10M;
  
表空间已更改。
  
SQL> alter tablespace users add datafile 'D:/BACKUPDB/USERS02.DBF' size 10M;
  
表空间已更改。
  
SQL>
SQL> create tablespace test datafile  'D:/BACKUPDB/test01.dbf' size 10M;
  
表空间已创建。
  
SQL>
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            d:/BACKUPDB/archive
最早的概要信息日志序列     1
下一个存档日志序列   2
当前日志序列           2
SQL> alter user lunar quota 10m on test;
  
用户已更改。
  
SQL>
SQL>  create table test2(a number) tablespace test;
  
表已创建。
  
SQL> insert into test2 values(1);
  
已创建 1 行。
  
SQL> commit;
  
提交完成。
SQL> alter system switch logfile;
  
系统已更改。
  
SQL>
SQL> conn lunar/lunar
Connected.
SQL> select * from tab;
  
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TEST1                          TABLE
TEST2                          TABLE
TESTBACKUP3                    TABLE
  
SQL> insert into test2 values(2);
  
1 row created.
  
SQL> commit;
  
Commit complete.
  
SQL> insert into test2 values(3);
  
1 row created.
  
以上改动后需要作一次热备或者冷备,否则数据文件丢失后不能恢复(增加表空间,数据文件都要备份数据库)
SQL> conn internal
Connected.
SQL> @e:/backupdb/other/aa
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:05'
  
1 row selected.
  
SQL> set  termout off
SQL>
SQL> @e:/backupdb/other/backup_ts.sql
SQL> --set termout off;
SQL> set echo off head off feedback off pagesize 0;
21-OCT-02
  
BEGINING ARCHIVE LOG NUMBER IS :
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            d:/BACKUPDB/archive
Oldest online log sequence     3
Next log sequence to archive   5
Current log sequence           5
  
Begin Backup Tablespace SYSTEM.'D:/BACKUPDB/SYSTEM01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace RBS.'D:/BACKUPDB/RBS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace USERS.'D:/BACKUPDB/USERS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace TEMP.'D:/BACKUPDB/TEMP01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace TOOLS.'D:/BACKUPDB/TOOLS01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace INDX.'D:/BACKUPDB/INDX01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace SYSTEM.'D:/BACKUPDB/SYSTEM02.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace USERS.'D:/BACKUPDB/USERS02.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup Tablespace TEST.'D:/BACKUPDB/TEST01.DBF'  ...
已复制         1 个文件。
  
Successed End Backup This File .
  
Begin Backup CONTROLFILE 'D:/BACKUPDB/CONTROL01.CTL'  ...
Successed End Backup The CONTROLFILE .
  
Begin Backup CONTROLFILE To Trace  ...
Successed End Backup The CONTROLFILE .
  
Before Switch Log, The Current Log is:
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            d:/BACKUPDB/archive
Oldest online log sequence     3
Next log sequence to archive   5
Current log sequence           5
  
Begin Backup Switch Current Log  ...
Successed End Switch Log .
  
After Switch Log, The Ending Archive Log Number Is :
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            d:/BACKUPDB/archive
Oldest online log sequence     4
Next log sequence to archive   6
Current log sequence           6
  
21-OCT-02
  
SQL> --set termout on;
SQL>
SQL> select to_char(sysdate,'''yyyy-mm-dd hh:mm:ss''') from dual;
'2002-10-21 08:10:31'
  
1 row selected.
  
SQL>
  
数据准备工作2
可以找回数据insert into test2 values(4);,因为4是几经commit;的,5是没有commit的,所以能找会到2。3则会丢失。
SQL> conn lunar/lunar
Connected.
SQL>  insert into test2 values(4);
  
1 row created.
  
SQL> commit;
  
Commit complete.
  
SQL>  insert into test2 values(5);
  
1 row created.
  
SQL>
  
Shutdow abort,然后删除test01.dbf,模拟数据文件丢失
SQL> conn internal
Connected.
SQL>  shutdown abort
ORACLE instance shut down.
SQL>
  
删除test01.dbf,把备份的数据文件test01.dbf拷贝过来
Mount数据库
SQL> startup mount;
ORACLE instance started.
Total System Global Area   25856028 bytes
Fixed Size                    75804 bytes
Variable Size               8925184 bytes
Database Buffers           16777216 bytes
Redo Buffers                  77824 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: 'D:/BACKUPDB/TEST01.DBF'
  
SQL>
在打开数据库的时候,提示'D:/BACKUPDB/TEST01.DBF'需要介质恢复,因为他和其他的文件时间点不一致。
  
恢复数据文件(把最近的热备的文件拷贝过来)
SQL> recover datafile  'D:/BACKUPDB/TEST01.DBF';
Media recovery complete.
  
打开数据库
SQL> alter database open;
  
Database altered.
  
SQL>
验证恢复结果:完全恢复
SQL> conn lunar/lunar
Connected.
SQL> select * from test2;
          1
          2
          3
          4
          5
  
5 rows selected.
  
SQL>
  
说明:
[$#376]  首先是做一次热备(因为上次已经做了不完全恢复resetlogs)   
[$#376]  以上改动后需要作一次热备或者冷备,否则数据文件丢失后不能恢复(增加表空间,数据文件都要备份数据库)   
  
1.  Shutdow abort,然后删除test01.dbf,模拟数据文件丢失   
2.  删除test01.dbf,把备份的数据文件test01.dbf拷贝过来   
3.  Mount数据库   
4.  恢复数据文件(把最近的热备的文件拷贝过来)   
5.  打开数据库  

 

http://www.cnoug.org/viewthread.php?tid=95&highlight=%2Blunar

 

如何将一个文件分割成多个小文件

如何将一个文件分割成多个小文件作者:徐景周下载实例代码(http://www.csdn.net/cnshare/soft/6/6235.shtm) 你也许会遇到到这样一个问题?当你有一个较大的软件,而...
  • jz_x
  • jz_x
  • 2002-01-11 17:37:00
  • 1206

ORA-01552 非系统表空间不能使用系统回滚段处理

ORA-01552: cannot use system rollback segment for...错误解决      故障现象:      今天本要做数据库的不完全恢复,但是在准备环境的...
  • wuweilong
  • wuweilong
  • 2012-07-10 14:23:08
  • 1363

\Oracle 表空间与数据文件

  • 2012年01月06日 20:14
  • 186KB
  • 下载

oracle撤销表空间和回滚段

/* 撤销表空间 */ 通过使用撤销技术,能够为Oracle数据库提供以下功能: * 使用ROLLBACK语句撤销事务 * 进行数据库恢复 * 提供数据的读一致性 Oracle强烈建议DBA...
  • dream361
  • dream361
  • 2016-10-16 11:27:59
  • 1750

ORA-01552 :非系统表空间 'xxxx'不能使用系统回退段

ORA-01552 :非系统表空间‘XXXX’不能使用系统回退段 故障分析: UNDO表空间数据文件受损,导致执行更新操作失败。 故障解决: 创建的新的undo表空间,置为 默...
  • rlhua
  • rlhua
  • 2014-08-26 15:59:10
  • 3349

非归档模式下,数据文件误删除解决

如题
  • Galdys
  • Galdys
  • 2010-07-08 16:06:00
  • 688

RMAN之非归档日志模式下的数据文件恢复

RMAN之非归档日志模式下的数据文件恢复: 导致一个或多个数据文件受损的介质失败要求使用还原和恢复例程:必须还原数据文件的备份,然后对其 应用归档重做日志,使其与数据库的其余部分同步。有各种选项可...
  • woqiang68
  • woqiang68
  • 2013-08-05 13:21:21
  • 954

oracle 创建表空间、回滚段、用户、表的详细语法

  • 2011年01月26日 13:56
  • 28KB
  • 下载

创建非标准表空间的方法

oracle创建表空间相关的参数为bd_block_size 默认的大小即标准的大小,我们如果不指定具体的大小,所创建的表空间的数据块即可db_block_size 所指定的大小进创建的。如下例:cr...
  • warden2010
  • warden2010
  • 2010-01-09 14:30:00
  • 1384

oracle数据文件被删除没备份恢复

说明:数据库开规档,没备份,数据文件被删除的恢复 条件:     1.数据库开启归档     2.创建数据文件之后的所有归档日志都在     3.数据文件或表空间没有备份,数据文件异常丢失 步...
  • zhengwei125
  • zhengwei125
  • 2016-02-24 16:26:16
  • 1229
收藏助手
不良信息举报
您举报文章:丢失非系统非当前活动回滚段表空间中的一个数据文件
举报原因:
原因补充:

(最多只允许输入30个字)