实验记录与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 中
指定日志: {
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 中
指定日志: {
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 中
指定日志: {
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博客 ” ,链接:https://blog.itpub.net/12020513/viewspace-613080/ ,如需转载,请注明出处,否则将追究法律责任。