(一) 当使用一个控制文件的备份恢复,例如下面的附图。使用备份控制文件恢复位置

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVtb25zb24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

1) 创建測试表空间ts1及相关測试表(表空间为ts1)

SYS@ORCL>create tablespace ts1 datafile '/u01/app/oracle/oradata/ORCL/ts1.dbf' size 10m;

Tablespace created.

SYS@ORCL>create table scott.t(x int) tablespace ts1;

Table created.

SYS@ORCL>insert into scott.t select rownum from dual connect by rownum<=10;

10 rows created.

SYS@ORCL>commit;

Commit complete.

SYS@ORCL>

2) 通过RMAN备份ts1表空间和控制文件

RMAN> backup tablespace ts1 include current controlfile;

Starting backup at 17-JAN-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=141 devtype=DISK

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00006 name=/u01/app/oracle/oradata/ORCL/ts1.dbf

channel ORA_DISK_1: starting piece 1 at 17-JAN-13

channel ORA_DISK_1: finished piece 1 at 17-JAN-13

piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp tag=TAG20130117T101646 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including current control file in backupset

channel ORA_DISK_1: starting piece 1 at 17-JAN-13

channel ORA_DISK_1: finished piece 1 at 17-JAN-13

piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp tag=TAG20130117T101646 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

Finished backup at 17-JAN-13

RMAN>

3) 删除t表部分记录

SYS@ORCL>delete scott.t where x>=6;

5 rows deleted.

SYS@ORCL>commit;

Commit complete.

SYS@ORCL>

4) 切换几次日志。让上面的动作归档(对于測试来说,意义不是特别的大)

SYS@ORCL>alter system switch logfile;

System altered.

SYS@ORCL>/

System altered.

SYS@ORCL>/

System altered.

SYS@ORCL>/

System altered.

SYS@ORCL>

5) 在users表空间上创建t1表

SYS@ORCL>create table scott.t1(x int) tablespace users;

Table created.

SYS@ORCL>insert into scott.t1 select rownum from dual connect by rownum<=2;

2 rows created.

SYS@ORCL>commit;

Commit complete.

SYS@ORCL>

6) 将表ts1改动为仅仅读模式

SYS@ORCL>alter tablespace ts1 read only;

Tablespace altered.

SYS@ORCL>select tablespace_name,status from dba_tablespaces where tablespace_name='TS1';

TABLESPACE_NAME              STATUS

------------------------- ---------

TS1                            READ ONLY

SYS@ORCL>select file_id,file_name,status,online_status from dba_data_files where tablespace_name='TS1';

FILE_ID FILE_NAME                                            STATUS     ONLINE_

---------- --------------------------------------------- --------- -------

6 /u01/app/oracle/oradata/ORCL/ts1.dbf            AVAILABLE ONLINE

SYS@ORCL>

7) 删除ts1表空间数据文件和全部控制文件

SYS@ORCL>!rm /u01/app/oracle/oradata/ORCL/ts1.dbf

SYS@ORCL>!rm /u01/app/oracle/oradata/ORCL/*.ctl

8) 重新启动数据库到nomount状态

SYS@ORCL>shutdown abort;

ORACLE instance shut down.

SYS@ORCL>

SYS@ORCL>startup nomount;

ORACLE instance started.

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              96470608 bytes

Database Buffers          184549376 bytes

Redo Buffers                2973696 bytes

SYS@ORCL>

9) 通过RMAN备份的控制文件完毕控制文件的恢复,恢复完毕,数据库改动为mount

RMAN> restore controlfile from '/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp';

Starting restore at 17-JAN-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:05

output filename=/u01/app/oracle/oradata/ORCL/control01.ctl

output filename=/u01/app/oracle/oradata/ORCL/control02.ctl

output filename=/u01/app/oracle/oradata/ORCL/control03.ctl

Finished restore at 17-JAN-13

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

RMAN>

10) 恢复ts1表空间

RMAN> restore tablespace ts1;

Starting restore at 17-JAN-13

Starting implicit crosscheck backup at 17-JAN-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=157 devtype=DISK

Crosschecked 2 objects

Finished implicit crosscheck backup at 17-JAN-13

Starting implicit crosscheck copy at 17-JAN-13

using channel ORA_DISK_1

Finished implicit crosscheck copy at 17-JAN-13

searching for all files in the recovery area

cataloging files...

cataloging done

List of Cataloged Files

=======================

File Name: /u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00006 to /u01/app/oracle/oradata/ORCL/ts1.dbf

channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp tag=TAG20130117T101646

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 17-JAN-13

RMAN>

11) 表空间恢复完成。尝试open数据库

--当然。我们知道一定是无法open数据库的,由于控制文件恢复的是老版本号的

SYS@ORCL>!ls /u01/app/oracle/oradata/ORCL/ts1.dbf

/u01/app/oracle/oradata/ORCL/ts1.dbf

SYS@ORCL>alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

--提示resetlogs方式打开

SYS@ORCL>alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'

--提示须要恢复1号数据文件

SYS@ORCL>recover datafile 1;

ORA-00283: recovery session canceled due to errors

ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

--提示using BACKUP CONTROLFILE方式完毕恢复

SYS@ORCL>

12) using backup controlfile恢复数据库

注:假设要恢复到控制文件SCN以后的时间。这时候。就须要用using backup controlfile. 恢复就不会受“当前controlfile所纪录的SCN”的限制。

这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel)

SYS@ORCL>recover database using backup controlfile until cancel;

ORA-00279: change 493760 generated at 01/16/2013 17:10:46 needed for thread 1

ORA-00289: suggestion :

/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_01_16/o1_mf_1_7_%u_.arc

ORA-00280: change 493760 for thread 1 is in sequence #7

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

--此处回车则是利用下一个归档日志文件进行恢复。只是在这里也能够输入CANCEL,表示恢复到此结束,不再使用后面的归档日志文件

……

--在恢复的过程中又出现了例如以下警告

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'

SYS@ORCL>

13) 尝试再次resetlogs打开数据库

SYS@ORCL>alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'

SYS@ORCL>

14) 採用极端办法

注:此时仅仅能採取极端手段:隐含參数_allow_resetlogs_corruption强制启动数据库,设置此參数之后,在数据库Open过程中。Oracle会跳过某些一致性检查。从而使数据库可能跳过不一致状态,Open打开:

--查看隐藏參数_allow_resetlogs_corruption。默认值为false

SYS@ORCL>SELECT ksppstvl, ksppdesc

2    FROM x$ksppi x, x$ksppcv y

3   WHERE x.indx = y.indx

4    AND ksppinm = '_allow_resetlogs_corruption';

KSPPSTVL   KSPPDESC

---------- --------------------------------------------------

FALSE      allow resetlogs even if it will cause corruption

SYS@ORCL>

--将隐藏參数设置为true

SYS@ORCL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SYS@ORCL>

--因为是静态參数,重新启动数据库使其生效

SYS@ORCL>shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SYS@ORCL>

--数据库启动到mount状态

SYS@ORCL>startup mount;

ORACLE instance started.

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              83887696 bytes

Database Buffers          197132288 bytes

Redo Buffers                2973696 bytes

Database mounted.

SYS@ORCL>

15) 再次尝试open数据库。提示RESETLOGS方式open

SYS@ORCL>alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SYS@ORCL>

16) 数据库成功以resetlogs方式open

SYS@ORCL>alter database open resetlogs;

Database altered.

SYS@ORCL>

SYS@ORCL>select count(*) from scott.t;

COUNT(*)

----------

5

SYS@ORCL>select count(*) from scott.t1;

select count(*) from scott.t1

*

ERROR at line 1:

ORA-00942: table or view does not exist

SYS@ORCL>

17) 恢复參数,重新启动数据库

SYS@ORCL>alter system set "_allow_resetlogs_corruption"=false scope=spfile;

System altered.

SYS@ORCL>startup force;

ORACLE instance started.

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              88082000 bytes

Database Buffers          192937984 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SYS@ORCL>

5.1.1. 小结

假设在生产中使用了仅仅读表空间,那么切记,在改动为仅仅读以后,第一件事情就是备份的孩子,这将节省不必要的麻烦和损失。

版权声明:本文博主原创文章,博客,未经同意不得转载。

Oracle 阅读器-刚看完表空间回复的详细解释的更多相关文章

  1. [独孤九剑]Oracle知识点梳理(一)表空间、用户

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  2. Oracle 释放过度使用的Undo表空间

    故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: ...

  3. centos 安装oracle 11g r2(三)-----表空间创建

    centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...

  4. oracle 怎么查看用户对应的表空间

    oracle 怎么查看用户对应的表空间? 查询用户: 查看数据库里面所有用户,前提是你是有 dba 权限的帐号,如 sys,system: select * from dba_users; 查看你能管 ...

  5. 【Oracle】删除(释放)数据文件/表空间流程

    oracle删除(释放)数据文件/表空间流程 生产环境:数据库里空间不足,niptest 表空间251G,只使用了17G 再alter database datafile '...../niptest ...

  6. Oracle数据库-建库、建表空间,建用户

    Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database Configuration Assistan ...

  7. Oracle 高水位说明和释放表空间,加快表的查询速度

    高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...

  8. oracle 删除用户命令和部分表空间操作

    删除用户 drop user user_name cascade; 建立表空间 CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01. ...

  9. oracle 创建用户和imp指定表空间

    创建用户: 1,sqlplus sys/pwd as sysdba; 2, create user username identified by password; 3, grant dba,conn ...

随机推荐

  1. xcode5下一个ffmpeg静态库配置

    1.若要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端运行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2.xco ...

  2. MySQL如何修改root密码

    MySQL修改用户密码         因为长期不登录MySQL数据库,登录时经常忘记root权限密码.本文提供一个在数据库服务器上修改root密码的方法,本文撰写基础是在xp操作系统下进行. 第一步 ...

  3. select value from v$diag_info where name='Default Trace File';

    VALUE -------------------------------------------------------------------------------- /u01/diag/rdb ...

  4. dll导入导出资源文件查看工具 InspectExe

    InspectExe lets you explore and diagnose problems with Win32 applications. It is integrated directly ...

  5. RealThinClient学习(一)

    服务端代码: unit RtcHttpServer; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

  6. AWS(0) - Amazon Web Services

    Computer EC2 – Virtual Servers in the Cloud EC2 Container Service – Run and Manage Docker Containers ...

  7. oracle数据库单个数据文件的大小限制

    之前没有仔细想过这个问题,因为总是不会用到,也没有犯过类似错误. 顺便提一下学习方法吧. 卤肉的学习方法是:常用知识点,熟悉理论并反复做实验,深入理解:不常用的知识点,相关内容都了解大概,遇到问题时想 ...

  8. 巧妙使用Firebug插件,快速监控网站打开缓慢的原因

    原文 巧妙使用Firebug插件,快速监控网站打开缓慢的原因 很多用户会问,我的网站首页才50KB,打开网页用了近60秒才打开?如何解释? 用户抱怨服务器运行缓慢,w3wp.exe 出现 CPU 10 ...

  9. 内存数据网格IMDG简单介绍

    1 简单介绍 将内存作为首要存储介质不是什么新奇事儿,我们身边有非常多主存数据库(IMDB或MMDB)的样例.在对主存的使用上.内存数据网格(In Memory Data Grid,IMDG)与IMD ...

  10. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

    原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...