【undo表空间的丢失-恢复-1】

使用rman进行恢复--undo丢失

restore 把文件还原回去;

recover 利用日志文件重做;

关键性的文件丢失和非关键性的文件丢失(system/undo之外的丢失)

1>

删除undo文件:

[[email protected] ~]$ rm /u01/oracle/oradata/jadl10g/undotbs01.dbf

[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 6 14:41:40 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine

and Real Application Testing options

SQL> conn scott/tiger ---此时连接没有报错,是由于undo已经缓存了,清除缓存;

Connected.

SQL> conn / as sysdba

Connected.

SQL> alter system flush shared_pool;

System altered.

SQL> alter system flush buffer_cache;

System altered.

SQL> alter system flush global context;

System altered.

SQL> conn scott/tiger ----连接scott用户出错,提示undo丢失

ERROR:

ORA-00604: error occurred at recursive SQL level 1

ORA-01116: error in opening database file 2

ORA-01110: data file 2: ‘/u01/oracle/oradata/jadl10g/undotbs01.dbf‘

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

Warning: You are no longer connected to ORACLE.

SQL> conn / as sysdba

Connected.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine

and Real Application Testing options

[[email protected] ~]$ rman target /

Recovery Manager: Release 10.2.0.5.0 - Production on Thu Nov 6 14:45:54 2014

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: JADL10G (DBID=2011530396)

RMAN> shutdown abort

using target database control file instead of recovery catalog

Oracle instance shut down

RMAN> startup mount

connected to target database (not started)

Oracle instance started

database mounted

Total System Global Area     599785472 bytes

Fixed Size                     2098112 bytes

Variable Size                163580992 bytes

Database Buffers             427819008 bytes

Redo Buffers                   6287360 bytes

RMAN> restore datafile 2;

Starting restore at 06-NOV-14

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore

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

restoring datafile 00002 to /u01/oracle/oradata/jadl10g/undotbs01.dbf

channel ORA_DISK_1: reading from backup piece /u01/oracle/flash_recovery_area/JADL10G/backupset/2014_11_06/o1_mf_nnndf_TAG20141106T135107_b5p32dhf_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/oracle/flash_recovery_area/JADL10G/backupset/2014_11_06/o1_mf_nnndf_TAG20141106T135107_b5p32dhf_.bkp tag=TAG20141106T135107

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

Finished restore at 06-NOV-14

RMAN> recover database;

Starting recover at 06-NOV-14

using channel ORA_DISK_1

starting media recovery

media recovery complete, elapsed time: 00:00:01

Finished recover at 06-NOV-14

RMAN> alter database open;

database opened

*****采用此种恢复方法之后不需要重新备份数据库,该方法可用于undo丢失或者系统表空间丢失。****

2>建立新的undo表空间,更改为新建的表空间,前提是能正确执行新建undo表空间的命令;

[[email protected] ~]$ rm /u01/oracle/oradata/jadl10g/undotbs01.dbf

[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 6 14:52:24 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine

and Real Application Testing options

SQL> select name from v$datafile;

NAME

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

/u01/oracle/oradata/jadl10g/system01.dbf

/u01/oracle/oradata/jadl10g/undotbs01.dbf

/u01/oracle/oradata/jadl10g/sysaux01.dbf

/u01/oracle/oradata/jadl10g/users01.dbf

/u01/oracle/oradata/jadl10g/example01.dbf

SQL> ho ls /u01/oracle/oradata/jadl10g/undotbs01.dbf

ls: cannot access /u01/oracle/oradata/jadl10g/undotbs01.dbf: No such file or directory

SQL> create undo tablespace undotbs2 datafile ‘/u01/oracle/oradata/jadl10g/undotbs02.dbf‘ size 10m autoextend on;

create undo tablespace undotbs2 datafile ‘/u01/oracle/oradata/jadl10g/undotbs02.dbf‘ size 10m autoextend on

*

ERROR at line 1:

ORA-00604: error occurred at recursive SQL level 1

ORA-01116: error in opening database file 2

ORA-01110: data file 2: ‘/u01/oracle/oradata/jadl10g/undotbs01.dbf‘

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

create undo tablespace 命令不能正常执行的话,只能采用上面的方法恢复;如果能创建成功,可以不关闭数据库;

alter system set undo_tablespace=undotbs2;

执行以下命令会错:

drop tablespace undotbs01;

alter tablespace undotbs01 offline;

可以执行以下命令脱机不在使用的文件:

alter database datafile 2 offline;

也可以将原来的文件还原回来:

进入rman:

restore datafile 2;

recover datafile 2;

进入sqlplus:

alter database datafile 2 online;

alter system set undo_tablespace=undotbs1;

****此时需要重新备份数据库;需要注意正在使用的undo是不能脱机的额。

****不清空缓存的话是可以建立的。还有就是建立两个undo,以防止丢失一个,可以切换到另外一个上面。

****system表空间是必须关闭数据库的噢噢

时间: 2024-08-24 11:05:20

【undo表空间的丢失-恢复-1】的相关文章

Oracle备份恢复之无备份情况下恢复undo表空间

UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚,数据库无法恢复到一致性的状态,Oracle实例可能宕机,之后实例无法正常启动:如果有多个UNDO表空间数据文件,丢失其中一个数据文件数据库实例可能不会导致实例宕机,数据库无法干净的关闭(只能SHUTDOWN ABORT),数据库实例能正常的重启,但所有未回滚的数据块依然无法处理,尝试新建UNDO表空

undo表空间丢失、损坏

1.模拟误删undo表空间 rm -rf undotbs01.dbf 2.解决步骤 SQL> shutdown immediateORA-01116: error in opening database file 3ORA-01110: data file 3: '/u01/app/oracle/oradata/PROD1/undotbs01.dbf'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAd

无备份情况下回复undo表空间

UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚,数据库无法恢复到一致性的状态,Oracle实例可能宕机,之后实例无法正常启动:如果有多个UNDO表空间数据文件,丢失其中一个数据文件数据库实例可能不会导致实例宕机,数据库无法干净的关闭(只能SHUTDOWN ABORT),数据库实例能正常的重启,但所有未回滚的数据块依然无法处理,尝试新建UNDO表空

[转]Oracle DB 执行表空间时间点恢复

• 列出在执行表空间时间点恢复(TSPITR) 时会发生的操作 • 阐释TSPITR 使用的术语的定义 • 确定适合将TSPITR 用作解决方案的情况 • 确定时间点恢复的正确目标时间 • 确定不能使用TSPITR 的情况以及解决方法 • 执行自动TSPITR 表空间时间点恢复(TSPITR):概念 • 通过执行TSPITR 可将一个或多个表空间快速恢复到以前的某个时间. • 执行TSPITR 不会影响数据库中其它表空间或对象的状态. 使用RMAN 自动表空间时间点恢复(TSPITR) 可将Or

undo表空间概述

oracle028 undo表空间概述 UNDO的简要概序: 1. 一般的表空间中的段是手动建立的,undo表空间和普通的表空间相似,但是undo表空间中undo段,undo段是自动生成的:oracle自动使用.维护undo段. 2. 一般表空间中的段是我们自己手动使用的,而undo表中的段是oracle自动使用的. show parameter undo_tablespace;//查询当前的undo表空间 NAME                                        

Oracle11g 新特性:优化Rman备份UNDO表空间

Oracle11gR1的新特性,Rman备份UNDO表空间时排除已经提交的会话对应的数据,提高了Rman备份的效率. 官方文档:http://docs.oracle.com/cd/B28359_01/server.111/b28279/chapter1.htm#AREANO02323 我们知道,UNDO表空间主要用于存储前镜像数据,这些数据在回滚以及恢复过程中可能被用到.但是一个生产数据库的UNDO表空间可能会变得非常巨大,而备份完整的UNDO数据文件在恢复时一般可能用到的比例很小. 测试一下:

【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理

一.undo空间原理: dml操作会产生undo数据. update时,sever process 会在databuffer 中找到该记录的buffer块,没有就从datafile中找并读入data buffer.在修改之前,原始数据先放到undo段,并在数据块头记录undo段(acitve 状态)中该数据块的位置,读写这个块时会占用事务槽,会将该事务号记录在数据块的头部.然后在进行update,并将该块放到dirty list检查点队列,等待dbwr进行写操作. 二.创建新的undo表空间替换

Oracle UNDO表空间的管理

UNDO表空间的管理是Oracle DBA最重要的日常工作之一,UNDO表空间用来暂时存储DML操作的数据,其主要作用有: 1.事务回滚 2.实例恢复 3.读一致性 4.闪回 下面是对UNDO表空间的一些操作 1.查看某个实例都有哪些表空间:select tablespace_name, contents from dba_tablespaces where contents = 'UNDO'; 我们也可以用show parameter undo_tablespace名称查看,此命令只能查看当前

监控和管理Oracle UNDO表空间的使用

监控和管理Oracle UNDO表空间的使用 对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件:我们常常会忽略对它的监控,这会导致UNDO表空间可能出现以下问题: 1).空间使用率100%,导致DML操作无法进行. 2).告警日志中出现大量的ORA-01555告警错误. 3).实