有NEWTS表空间的备份,这一点是相同的。区别在 备份的控制文件里 没有NEWTS表空间的记录。
换句话说,备份控制文件时,没有NEWTS表空间。 NEWTS表空间时之后创建的。创建过后,该表空间有单独做备份。
之后, 该表空间被 drop tablespace。 现在想用不完全恢复找回该表空间。
点击(此处)折叠或打开
-
sys@BJDB>select tablespace_name from dba_tablespaces; -- 备份前,没有NEWTS表空间
-
-
TABLESPACE_NAME
-
------------------------------
-
SYSTEM
-
SYSAUX
-
TEMPTS1
-
TS_ASSM
- SMALL_UNDO
-
-
sys@BJDB>@/home/oracle/scripts/hot_backup.sql -- 备份脚本备份所以的数据文件 和 控制文件(注意 这时没有NETS表空间)
点击(此处)折叠或打开
-
sys@BJDB>create tablespace newts datafile \'/oradata/BJDB/newts01.dbf\' size 50M; -- 创建NEWTS表空间
-
-
Tablespace created.
-
-
sys@BJDB>create table scott.tab_newts -- NEWTS表空间下 创建一个测试表
-
2 tablespace newts
- 3 as select * from scott.dept;
点击(此处)折叠或打开
-
sys@BJDB>alter tablespace newts begin backup;
-
-
Tablespace altered.
-
-
sys@BJDB>! cp /oradata/BJDB/newts01.dbf /u02/backup/BJDB/hot/
-
-
sys@BJDB>alter tablespace newts end backup;
-
- Tablespace altered.
点击(此处)折叠或打开
- sys@BJDB>select current_scn from v$database; -- drop tablespace 前的一个SCN号,通常需要做日志挖掘来获取
-
-
CURRENT_SCN
-
-----------
-
8488121
-
-
sys@BJDB>drop tablespace newts including contents and datafiles; -- 删除NEWTS表空间 连同数据文件
-
- Tablespace dropped
- sys@BJDB>select * from scott.tab_newts; -- 该表空间下的测试表已经不存在了
- select * from scott.tab_newts
- *
- ERROR at line 1:
-
ORA-00942: table or view does not exist
处理:
1, 先把实例启动到 nomount状态。
2,转储备份的控制文件,然后 加载数据库
点击(此处)折叠或打开
-
[oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/control.backup /oradata/BJDB/control01.ctl
-
[oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/control.backup /oradata/BJDB/control02.ctl
-
-
sys@BJDB>alter database mount;
-
-
Database altered.
-
-
sys@BJDB>select name from v$tablespace; -- 注意 用来备份的控制文件还是无法识别到 NEWTS表空间。因为备份控制文件时,NEWTS不存在
-
-
NAME
-
--------------------------------------------------
-
SYSTEM
-
SYSAUX
-
TS_ASSM
-
SMALL_UNDO
-
TEMPTS1
-
-
sys@BJDB>select name from v$datafile; -- 相应的数据文件 /oradata/BJDB/newts01.dbf 也不存在
-
-
NAME
-
--------------------------------------------------
-
/oradata/BJDB/system01.dbf
-
/oradata/BJDB/sysaux01.dbf
-
/oradata/BJDB/ts_assm01.dbf
- /oradata/BJDB/small_undo01.dbf
点击(此处)折叠或打开
-
sys@BJDB>recover database until change 8488121 using backup controlfile; -- 8488121是drop tablespace前的一个scn 这用了备份控制文件
-
ORA-00279: change 8487645 generated at 07/06/2014 22:33:56 needed for thread 1
-
ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_4_852244426.dbf
-
ORA-00280: change 8487645 for thread 1 is in sequence #4
-
-
-
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
-
auto
-
ORA-00283: recovery session canceled due to errors
-
ORA-01244: unnamed datafile(s) added to control file by media recovery
-
ORA-01110: data file 3: \'/oradata/BJDB/newts01.dbf\' -- 恢复的过程中出错,找不到 数据文件 /oradata/BJDB/newts01.dbf
-
-
- ORA-01112: media recovery not started
查看一下
点击(此处)折叠或打开
-
sys@BJDB>select name from v$tablespace; -- 恢复的过程中 NEWTS表空间被识别出来了
-
-
NAME
-
----------------------------------------------------------
-
SYSTEM
-
SYSAUX
-
NEWTS
-
TS_ASSM
-
SMALL_UNDO
-
TEMPTS1
-
-
6 rows selected.
-
-
sys@BJDB>select name from v$datafile;
-
-
NAME
-
----------------------------------------------------------
-
/oradata/BJDB/system01.dbf
-
/oradata/BJDB/sysaux01.dbf
-
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00003 -- NEWTS的数据文件未被识别
-
/oradata/BJDB/ts_assm01.dbf
- /oradata/BJDB/small_undo01.dbf
3, 转储所有的数据文件。包括 NEWTS下的数据文件
点击(此处)折叠或打开
-
[oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/*.dbf /oradata/BJDB/
-
[oracle@Redhat55 hot]$ ls /oradata/BJDB/newts01.dbf
- /oradata/BJDB/newts01.dbf
4, 把当前控制文件(注:这里的控制文件是 步骤2 转储的 备份控制文件)导出到trace文件
点击(此处)折叠或打开
-
sys@BJDB>alter database backup controlfile to trace;
-
-
Database altered.
-
-
sys@BJDB>select value from v$diag_info where name = \'Default Trace File\';
-
-
VALUE
-
--------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/proddb/Beijing/trace/Beijing_ora_28350.trc -- 包含重建控制文件语句的 trace 文件名
点击(此处)折叠或打开
-
STARTUP NOMOUNT
-
CREATE CONTROLFILE REUSE DATABASE \"BJDB\" NORESETLOGS FORCE LOGGING ARCHIVELOG
-
MAXLOGFILES 21
-
MAXLOGMEMBERS 5
-
MAXDATAFILES 100
-
MAXINSTANCES 1
-
MAXLOGHISTORY 584
-
LOGFILE
-
GROUP 1 \'/oradata/BJDB/redo01a.log\' SIZE 100M BLOCKSIZE 512,
-
GROUP 2 \'/oradata/BJDB/redo02a.log\' SIZE 100M BLOCKSIZE 512,
-
GROUP 3 \'/oradata/BJDB/redo03a.log\' SIZE 100M BLOCKSIZE 512,
-
GROUP 4 \'/oradata/BJDB/redo04.log\' SIZE 100M BLOCKSIZE 512
-
-- STANDBY LOGFILE
-
DATAFILE
-
\'/oradata/BJDB/system01.dbf\',
-
\'/oradata/BJDB/sysaux01.dbf\',
-
\'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00003\', -- 注意:重建控制文件时,把这个数据文件名改成 /oradata/BJDB/newts01.dbf
-
\'/oradata/BJDB/ts_assm01.dbf\',
-
\'/oradata/BJDB/small_undo01.dbf\'
-
CHARACTER SET ZHS16GBK
-
;
- ALTER TABLESPACE TEMPTS1 ADD TEMPFILE \'/oradata/BJDB/temp01.dbf\' REUSE; -- 重建控制文件,临时文件要重新添加
5, 重建控制文件
点击(此处)折叠或打开
-
sys@BJDB>startup nomount force;
-
ORACLE instance started.
-
-
Total System Global Area 1068937216 bytes
-
Fixed Size 2235208 bytes
-
Variable Size 662701240 bytes
-
Database Buffers 398458880 bytes
-
Redo Buffers 5541888 bytes
-
CREATE CONTROLFILE REUSE DATABASE \"BJDB\" NORESETLOGS FORCE LOGGING ARCHIVELOG
-
MAXLOGFILES 21
-
3 MAXLOGMEMBERS 5
-
4 MAXDATAFILES 100
-
5 MAXINSTANCES 1
-
6 MAXLOGHISTORY 584
-
7 LOGFILE
-
8 GROUP 1 \'/oradata/BJDB/redo01a.log\' SIZE 100M BLOCKSIZE 512,
-
9 GROUP 2 \'/oradata/BJDB/redo02a.log\' SIZE 100M BLOCKSIZE 512,
-
10 GROUP 3 \'/oradata/BJDB/redo03a.log\' SIZE 100M BLOCKSIZE 512,
-
11 GROUP 4 \'/oradata/BJDB/redo04.log\' SIZE 100M BLOCKSIZE 512
-
12 -- STANDBY LOGFILE
-
13 DATAFILE
-
14 \'/oradata/BJDB/system01.dbf\',
-
15 \'/oradata/BJDB/sysaux01.dbf\',
-
16 \'/oradata/BJDB/newts01.dbf\', -- 这里把数据文件名改过来了,原来显示 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00003
-
17 \'/oradata/BJDB/ts_assm01.dbf\',
-
18 \'/oradata/BJDB/small_undo01.dbf\'
-
19 CHARACTER SET ZHS16GBK
-
20 ;
-
-
Control file created.
-
-
sys@BJDB>select name from v$datafile;
-
-
NAME
-
----------------------------------------------------------
-
/oradata/BJDB/system01.dbf
-
/oradata/BJDB/sysaux01.dbf
-
/oradata/BJDB/newts01.dbf -- 数据文件名 被改回来了
-
/oradata/BJDB/ts_assm01.dbf
- /oradata/BJDB/small_undo01.dbf
6,再做不完全恢复。对比 步骤3 这里不报错了 : ORA-01110: data file 3: '/oradata/BJDB/newts01.dbf'
点击(此处)折叠或打开
-
sys@BJDB>recover database until change 8488121 using backup controlfile;
-
ORA-00279: change 8487592 generated at 07/06/2014 22:35:24 needed for thread 1
-
ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_4_852244426.dbf
-
ORA-00280: change 8487592 for thread 1 is in sequence #4
-
-
-
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
-
auto
-
ORA-00279: change 8488114 generated at 07/06/2014 22:42:23 needed for thread 1
-
ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_5_852244426.dbf
-
ORA-00280: change 8488114 for thread 1 is in sequence #5
-
ORA-00278: log file \'/u02/backup/BJDB/disk1/1_4_852244426.dbf\' no longer needed for this recovery
-
-
-
ORA-00279: change 8488118 generated at 07/06/2014 22:42:29 needed for thread 1
-
ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_6_852244426.dbf
-
ORA-00280: change 8488118 for thread 1 is in sequence #6
-
ORA-00278: log file \'/u02/backup/BJDB/disk1/1_5_852244426.dbf\' no longer needed for this recovery
-
-
-
Log applied.
- Media recovery complete.
点击(此处)折叠或打开
-
sys@BJDB>alter database open resetlogs;
-
- Database altered.
-
sys@BJDB>ALTER TABLESPACE TEMPTS1 ADD TEMPFILE '/oradata/BJDB/temp01.dbf' REUSE; -- 重建控制文件后,临时文件需要重新添加
-
Tablespace altered.
8, 验证恢复效果
点击(此处)折叠或打开
-
sys@BJDB>select tablespace_name from dba_tablespaces;
-
-
TABLESPACE_NAME
-
------------------------------
-
SYSTEM
-
SYSAUX
-
TEMPTS1
-
TS_ASSM
-
SMALL_UNDO
-
NEWTS -- NEWTS被找回
-
-
6 rows selected.
-
-
sys@BJDB>select file_name from dba_data_files;
-
-
FILE_NAME
-
----------------------------------------------------------------------------------------------------------------------------------------------------------------
-
/oradata/BJDB/small_undo01.dbf
-
/oradata/BJDB/ts_assm01.dbf
-
/oradata/BJDB/newts01.dbf -- NEWTS的数据文件
-
/oradata/BJDB/sysaux01.dbf
-
/oradata/BJDB/system01.dbf
-
-
sys@BJDB>select * from scott.tab_newts; -- NEWTS表空间下的表被找回
-
-
DEPTNO DNAME LOC
-
---------- -------------- -------------
-
10 ACCOUNTING NEW YORK
-
20 RESEARCH DALLAS
-
30 SALES CHICAGO
- 40 OPERATIONS BOSTON