在归档模式下,恢复一个被offline drop的datafile的方法

参考自:

HOW TO RECOVER OFFLINE DROPPED DATAFILE IN ARCHIVELOG MODE (文档 ID 286355.1)

如下的实验基于oracle 11.2.0.4 linux x86-64bit完成

[[email protected] u02]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Feb 15 20:33:17 2015
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/arch
Oldest online log sequence     126
Next log sequence to archive   128
Current log sequence           128
SQL> select file_id from dba_data_files;

   FILE_ID
----------
         4
         3
         2
         1
         5
         6
         7
         8
         9
        10
        11

11 rows selected.

SQL> select name from v$dbfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/test/users01.dbf
/u01/app/oracle/oradata/test/undotbs01.dbf
/u01/app/oracle/oradata/test/sysaux01.dbf
/u01/app/oracle/oradata/test/system01.dbf
/u01/app/oracle/oradata/test/ten01.dbf
/u01/app/oracle/oradata/test/tb_test_01.dbf
/u01/app/oracle/oradata/test/ts1.dbf
/u01/app/oracle/oradata/test/ts2.dbf
/u01/app/oracle/oradata/test/test01.dbf
/u01/app/oracle/oradata/test/test_uni_sz_2m_01.dbf
/u01/app/oracle/oradata/test/test_uni_sz_1m_01.dbf

11 rows selected.

SQL> set lines 290
SQL> col file_name format a60
SQL> select FILE_NAME,file_Id from v$dbfile;

FILE_NAME                                                       FILE_ID
------------------------------------------------------------ ----------
/u01/app/oracle/oradata/test/users01.dbf                              4
/u01/app/oracle/oradata/test/undotbs01.dbf                            3
/u01/app/oracle/oradata/test/sysaux01.dbf                             2
/u01/app/oracle/oradata/test/system01.dbf                             1
/u01/app/oracle/oradata/test/ten01.dbf                                5
/u01/app/oracle/oradata/test/tb_test_01.dbf                           6
/u01/app/oracle/oradata/test/ts1.dbf                                  7
/u01/app/oracle/oradata/test/ts2.dbf                                  8
/u01/app/oracle/oradata/test/test01.dbf                               9
/u01/app/oracle/oradata/test/test_uni_sz_2m_01.dbf                   10
/u01/app/oracle/oradata/test/test_uni_sz_1m_01.dbf                   11

11 rows selected.

SQL> alter database datafile 9 offline drop;

Database altered.

SQL> select file#, status from v$datafile where file#='9';

     FILE# STATUS
---------- -------
         9 RECOVER

SQL> select file#, status from v$datafile_header where file#='9';

     FILE# STATUS
---------- -------
         9 OFFLINE

SQL> alter system switch logfile ;

System altered.

SQL> /

System altered.

SQL> /
/
/

System altered.

SQL>
System altered.

SQL> 

System altered.

SQL> SQL>
SQL>
SQL> /

System altered.

SQL>
SQL>
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/arch
Oldest online log sequence     132
Next log sequence to archive   134
Current log sequence           134
SQL> recover datafile 9;
ORA-00279: change 3155176 generated at 02/15/2015 20:34:05 needed for thread 1
ORA-00289: suggestion : /u02/arch/1_128_807882551.dbf
ORA-00280: change 3155176 for thread 1 is in sequence #128

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto --------------->敲入auto
Log applied.
Media recovery complete.
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        133   52428800        512          1 YES INACTIVE               3155684 15-FEB-15      3155687 15-FEB-15
         2          1        134   52428800        512          1 NO  CURRENT                3155687 15-FEB-15   2.8147E+14
         3          1        132   52428800        512          1 YES INACTIVE               3155681 15-FEB-15      3155684 15-FEB-15

SQL> select file#,status from v$datafile where file#=9;

     FILE# STATUS
---------- -------
         9 OFFLINE

SQL> select file#,status from v$datafile_header where file#=9;

     FILE# STATUS
---------- -------
         9 OFFLINE

SQL> alter database datafile 9 online;

Database altered.

SQL> select file#,status from v$datafile where file#=9;

     FILE# STATUS
---------- -------
         9 ONLINE

SQL>

知识点:

1.The only case in which the offline dropped datafile can not be online is

when you have added to many datafiles in the database after offline drop

2.在非归档模式下,为了让一个datafile 变成offline,必须带drop关键字。

drop关键字不会把datafile从database 中 remove掉。

To do that, you must drop the tablespace in which the datafile resides. Until you

do so, the datafile remains in the data dictionary with the status RECOVER or OFFLINE.

若是database处于归档模式,Oracle会忽略掉drop 关键字.

时间: 2024-08-01 22:43:03

在归档模式下,恢复一个被offline drop的datafile的方法的相关文章

归档模式下恢复没有备份的数据文件

测试环境 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE    11.

Oracle在归档模式下恢复

=============== 数据库的完全恢复 =============== 在归档模式下数据库完全恢复时,数据库所经过的状态如下: 1.利用备份修复(Restores)损坏或丢失的数据文件,即将备份的文件复制到数据库中原来的位置 2. 将从备份到系统崩溃这段时间所提交的数据由归档日志文件和重做日志文件中还原成数据文件所需要的数据块,这也叫前滚(Roll Forward) 3. 此时数据块中包含了所有提交的数据,也可能包含没提交的数据 4. 系统利用还原数据块回滚未提交的数据,这也叫回滚或者

利用 BBED 恢复非归档模式下 OFFLINE 数据文件

今天来模拟一个非归档模式下恢复OFFLINE数据文件的场景,主要有2种情况: 一种是在线日志没有被覆盖,另一种是在线日志被覆盖. 第一种情况比较简单,数据库自身就能处理,而第二种情况稍显复杂,但也并不难,下面开始整个实验过程: 一.在线日志没有被覆盖的场景 --切换数据库到非归档模式 SQL> archive log list Database log mode       Archive Mode Automatic archival       Enabled Archive destina

测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程

测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程 最近系统出现问题,由于数据库产生的日志量太大无法开启归档模式,导致offline的数据文件无法online! 数据库在启动的时候不检查offline的数据文件! 下面进行测试 数据库版本 SQL> select * from v$version; BANNER ------------------------------------------------------------

在归档模式下删除非系统文件的恢复

众所周知,我们的核心生产数据库通常都是在归档模式下执行的,更不用说还配置DG环境的了.开启归档,并保证全部归档不丢失,就能保证我们对数据库所做的不论什么改动不会丢失,归档日志可谓是恢复的根本,假设丢失归档,那么即使RMAN功能再强大,也无法对丢失的数据进行恢复.所以我们通常配置的RMAN策略就是全备+归档+控制文件自己主动备份.这里的归档不是指数据库创建以来生成的归档(那量也太大了),而是当进行RMAN非一致性备份时新产生的那部分归档日志,用来保证数据库能够前推到一致性状态,这样才干顺利open

oracle非归档模式下的冷备份和恢复

查看归档的相关信息 SQL> archive log list数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     72当前日志序列           74 备份中常用的术语解释: 冷备份(脱机备份): 数据库处于关闭状态下所做的物理拷贝.数据库处于非归档模式下只能使用这种方法备份. 数据库全备份:备份所有数据文件和控制文件,在全备份时,数据库可以处在

在非归档模式下不能更改表空间为备份模式

Oracle表空间设置为备份模式后,便可以联机对表空间下数据文件进行文件系统级别的copy备份操作,因为期间对表空间的修改都记录到数据库的重做日志文件中. 由此想到数据库如果是非归档模式,那么这个表空间备份模式的时间必须不能超过联机日志被覆盖的时间,才能保证数据的修改不会丢失. 那么Oracle对这种情况是如何择决的呢? 实验表明:Oracle是干脆不让你在非归档模式下开启表空间的备份模式. 报错如下: ORA-01123: cannot start online backup; media r

Unity3D Development模式下的一个小问题

今天客户提交了一个反馈,说测试版本的应用在按下电源键的时候屏幕变黑,然后重新按下电源键启动的时候发现没有出现屏幕锁屏的情况,直接回到应用界面. 我这边看了一下,发现如果装了360之类的手机助手就没这个问题,而没装的话就会出现这个问题.看来不是系统级别的问题,而是应用级别的问题,百思不得其解,貌似之前的几个应用也没有出现这个问题. 想了一下,瞎猫碰耗子,想了一下,试了一下这个 之前的问题解决了,看来估计是Development模式下对其的权限有些放大吧.

oracle 归档模式下删除current日志不完全恢复

归档模式 [email protected]> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch Oldest online log sequence 5 Next log sequence to archive 7 Current log sequence 7