ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (恢复-关于控制文件(1))

oracle实验记录 (恢复-关于控制文件(1))

原创 Linux操作系统 作者:fufuh2o 时间:2009-08-24 13:59:02 0 删除 编辑

实验记录与controlfile有关的恢复(1)  陆续实验2,3........

SQL> select * from v$version
  2  ;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
下一个存档日志序列   3
当前日志序列           3


 backupscript.txt
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF d:\backup\USERS01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF d:\backup\SYSAUX01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF d:\backup\UNDOTBS01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF d:\backup\SYSTEM01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF d:\backup\EXAMPLE01.DBF


restoredbf.txt
host copy  d:\backup\USERS01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
host copy  d:\backup\SYSAUX01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
host copy  d:\backup\UNDOTBS01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
host copy  d:\backup\SYSTEM01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
host copy  d:\backup\EXAMPLE01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

 


backupctl.txt
host copy      E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL  d:\backup\CONTROL01.CTL
host copy       E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL d:\backup\CONTROL02.CTL
 host copy      E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL d:\backup\CONTROL03.CTL

restore.txt
host copy    d:\backup\CONTROL01.CTL  E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
host copy  d:\backup\CONTROL02.CTL     E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
 host copy   d:\backup\CONTROL03.CTL    E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL


开始基础备份
SQL> alter database begin backup;

数据库已更改。

SQL> @d:\backupscript.txt
SP2-0310: 无法打开文件 "d:\backupscript.txt"
SQL> @d:\backup\backupscript.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。


SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> @d:\backup\backupctl.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。


情况一 备份controlfile后 ADD TABLESPACE
SQL> startup                 
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
SQL> create tablespace test datafile 'd:\test.dbf' size 20m;

表空间已创建。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> @d:\restore\restorectl.txt~~~~~~~  还原备份的 控制文件
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

 

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             184552324 bytes
Database Buffers          419430400 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0

\ORADATA\ORCL\SYSTEM01.DBF'~**********************验证失败
ORA-01207: 文件比控制文件更新 - 旧的控制文件

 

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
            580885
            580885~~~~~~~~~~~~~~来自与control
            580885
            580885
            580885

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
            581427~~~~~~~~~来自于datafile 可以看出 controlfile 与datafile不同步SCN 不一样
            581427
            581427
            581427
            581427

SQL> alter session set events 'immediate trace name file_hdrs level 10';

会话已更改。

 

SQL> alter session set events 'immediate trace name controlf level 8';

会话已更改。
dump controlf
***************************************************************************
DATA FILE

RECORDS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~controlfile中

关于datafile记录
***************************************************************************
 (size = 428, compat size = 428, section max = 100, section in-use = 5,
  last-recid= 10, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 11, numrecs = 100)
DATA FILE #1:
  (name #7) E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1                    
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:55 scn: 0x0000.0008dd15 08/24/2009 10:48:40~~~~~~~~~~CNT 55                

    Control Seq=468=0x1d4,
 Stop scn: 0x0000.0008dd15 08/24/2009 10:48:40
 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22

 

 


dump file header中信息
~~~~~~~~~~~~~~~~~~
 DATA FILE #1:
  (name #7) E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00~~~~~~~~~~~~~~~~~~~~~~~~~~~这部分来

自contrilfile
 Checkpoint cnt:55 scn: 0x0000.0008dd15 08/24/2009 10:48:40~~~~~~~~CNT 55
 Stop scn: 0x0000.0008dd15 08/24/2009 10:48:40
 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22
 thread:0 rba:(0x0.0.0)
~~~~~~~~~~~~~~~~~~~~~~~~~~

FILE HEADER:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这部分来自datafile header
 Compatibility Vsn = 169869568=0xa200100
 Db ID=1223510333=0x48ed493d, Db Name='ORCL'
 Activation ID=0=0x0
 Control Seq=478=0x1de, File size=61440=0xf000                      Control

Seq=478=0x1de,
 File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1
Creation   at   scn: 0x0000.00000009 08/30/2005 13:50:22
Backup taken at scn: 0x0000.0008dae5 08/24/2009 10:46:37 thread:1
 reset logs count:0x2977fdbf scn: 0x0000.0008297b reset logs terminal rcv data:0x0 scn:

0x0000.00000000
 prev reset logs count:0x21d66184 scn: 0x0000.00000001 prev reset logs terminal rcv

data:0x0 scn: 0x0000.00000000
 recovered at 08/24/2009 10:13:08
 status:0x2000 root dba:0x00400179 chkpt cnt: 57 ctl cnt:56~~~~~~~~~~~~~~~~~~~~~~~~CNT 57

oracle判断 chkpt cnt: 57 >  Checkpoint cnt:55 所以 为old controlfile


SQL> recover database using backup controlfile;~~~恢复的时候(由于 新库 还没有归档所以使用指

定file name)
ORA-00283: 恢复会话因错误而取消
ORA-01111: 数据文件 6 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1

\DATABASE\UNNAMED00006'~~~~~~~~~~~~~~~~~~会出现这种问题
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01111: 数据文件 6 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006'


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006********************因为备份的ctl中没有

新tablesapce 的信息 现在应用redo会出现这种错误

已选择6行。
SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~来自

datafile 现在没有TEST.DBF的信息
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


已选择6行。


SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
TEST~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`有test tablespace

已选择7行。

SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1

\DATABASE\UNNAMED0000~~~~~~~~~~~~~~~~rename 就可以(test.dbf与其它datafile是同步的)
6' to 'd:\test.dbf';

数据库已更改。

SQL> recover database using backup controlfile;
ORA-00279: 更改 581141 (在 08/24/2009 10:51:21 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 581141 (用于线程 1) 在序列 #3 中


指定日志: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo02.log
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;

数据库已更改。

SQL> create table t1 (a int) tablespace test;

表已创建。

SQL> insert into t1 values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF

已选择6行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF

已选择6行。
SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------~~~~~~~~~~~~resetlogs open后 redo sequence重置为0
         1          1          0
         1          2          1
         1          3          0

情况二

备份controlfile后 ADD TABLESPACE 然后rename到新位置

还是用最早的controlfile备份(使用resetlogs前 备份controlfile )

SQL> insert into t1 values(2);

已创建 1 行。

SQL> insert into t1 values(3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         A
----------
         1
         2
         3

SQL> col name format a50
SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE# NAME
---------- ---------- --------------------------------------------------
         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_2_5942NCVR_.ARC

         1          3 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_3_5942NGV9_.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_1_5942NJ1D_.ARC

SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 UNUSED
         2 CURRENT
         3 UNUSED

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> @d:\restore\restorectl.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。


SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             188746628 bytes
Database Buffers          415236096 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01190: 控制文件或数据文件 1 来自最后一个 RESETLOGS 之前~~~~~~~~~~~~~~~~~~~~~~~~~oracle

判断出 来自resetlog之前
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'


SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         3 INACTIVE~~~~~~~~~~~~~~~~~~~~~~可以看到备份控制文件 与当前logfile信息 不一样
         2 CURRENT

SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------
         1          1          2
         1          3          1~~~~~~~~~~~~~~~~~可以看到备份控制文件 与当前logfile信息 不

一样
         1          2          3
SQL> select thread#,sequence#,name from v$archived_log;

未选定行   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没有归档记录

 

SQL> recover database using backup controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'

SQL> alter database backup controlfile to trace;~~~~~~~~~来重建下控制文件

数据库已更改。


CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG ~`noresetlog 将用current

redo log信息
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
  'D:\TEST.DBF'    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~加上test.dbf信息    

                                                
CHARACTER SET ZHS16GBK
;

SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------
         1          1          0
         1          3          0
         1          2          1~~~~~~~~~~~~~与redo中一样

SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 UNUSED
         3 UNUSED
         2 CURRENT

SQL> col name format a50
SQL> select thread#,sequence#,name from v$archived_log;~~~~~~~~~~~没有archive log的信息

未选定行


SQL> alter database open;~~~~~~~~~OPEN 就可以

数据库已更改。

SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE# NAME
---------- ---------- --------------------------------------------------
         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_1_5946V0DN_.ARC

 


情况三 备份控制后删除tablespace
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> @d:\backup\backupctl.txt~~~~~~~~~~~~~~`备份下控制文件
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> @d:\backup\backupscript.txt~~~~~~~~~~~~备份tablespacce
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

startup


SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
TEST                           D:\TEST.DBF
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
                               TA\ORCL\UNDOTBS01.DBF

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF


已选择6行。


SQL>  drop tablespace test including contents and datafiles;

表空间已删除。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
SQL> @d:\restore\restorectl.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             197135236 bytes
Database Buffers          406847488 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
ORA-01207: 文件比控制文件更新 - 旧的控制文件


SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE#
---------- ----------
NAME
--------------------------------------------------------------------------------
         1          1
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
1_5946V0DN_.ARC

 

SQL> recover database using backup controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-01110: 数据文件 6: 'D:\TEST.DBF'
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'D:\TEST.DBF'


看下alert.log
Mon Aug 24 13:11:05 2009
Media Recovery failed with error 1110
ORA-283 signalled during: ALTER DATABASE RECOVER  database using backup controlfile  ...
Mon Aug 24 13:12:04 2009
ALTER DATABASE RECOVER  database 
Mon Aug 24 13:12:04 2009
Media Recovery Start
Mon Aug 24 13:12:04 2009
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_102980.trc:
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: 'D:\TEST.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


已选择6行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~来自控制文件备份时候有

TEST.DBF 而删除表空间时候 实际删除了test.dbf所以 日志无法应用

已选择6行。
SQL> alter database create datafile 'd:\test.dbf';
alter database create datafile 'd:\test.dbf'
*
第 1 行出现错误:
ORA-01178: 文件 6 在最后一个 CREATE CONTROLFILE 之前创建, 无法重新创建~~~~~~~~不允许创建
ORA-01110: 数据文件 6: 'D:\TEST.DBF'

 

SQL> alter database datafile 6 offline;~~~~~~~~~~将其offline  这样oracle 不会读取

数据库已更改。

SQL> recover database using backup controlfile;
ORA-00279: 更改 585198 (在 08/24/2009 12:47:26 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 585198 (用于线程 1) 在序列 #2 中


指定日志: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo01.log~~~~~~~~~~~~~~~~~~~~~~应用日志 指定的(这个

日志中 有drop tablespace的记录(DDL修改数据字典还是会被记录))
已应用的日志。
完成介质恢复。
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~控制文件中已经

没有 数据文件的信息

SQL> alter database open resetlogs;

数据库已更改。

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE

已选择6行。

 

如果drop tablespace时候 未带including contents and datafileS 就简单多了
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\UNDOTBS01.DBF

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF

TEST                           D:\TEST.DBF

已选择6行。
SQL> shutdown immediate;


SQL> @d:\backup\backupctl.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             201329540 bytes
Database Buffers          402653184 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。


SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 UNUSED
         3 UNUSED

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     587928
SQL> select thread#,sequence#,name,first_change# from v$archived_log;

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        581428
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5946V0DN
                      _.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        534907
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5942NJ1D
                      _.ARC

         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH        567754

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_2_5942NCVR
                      _.ARC

         1          3 E:\ORACLE\PRODUCT\10.2.0\FLASH        573647
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_3_5942NGV9
                      _.ARC

         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH        583431
                      _RECOVERY_AREA\ORCL\ARCHIVELOG

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
                      \2009_08_24\O1_MF_1_2_5949GZST
                      _.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        581428
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5949H0JK
                      _.ARC


已选择6行。
SQL> drop tablespace test including contents;

表空间已删除。

SQL> @d:\restore\restorectl.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             205523844 bytes
Database Buffers          398458880 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
ORA-01207: 文件比控制文件更新 - 旧的控制文件

SQL> recover database using backup controlfile;
ORA-00279: 更改 587693 (在 08/24/2009 13:32:15 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
1_%U_.ARC
ORA-00280: 更改 587693 (用于线程 1) 在序列 #1 中


指定日志: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo01.log
已应用的日志。
完成介质恢复。

SQL> alter database open resetlogs;

数据库已更改。

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\UNDOTBS01.DBF

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF

 

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

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    426857