对于表级别的数据恢复,ORACLE提供了多种恢复方法:flashback query,logmnr等。

本文通过演示样例演示使用bbed的copy命令恢复用户误删除或者损坏的表数据,当然我们也能够使用该方法来恢复其它数据。

实验过程:

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME FILE_NAME
--------------- --------------------------------------------------
USERS /home/app/oraten/oradata/oraten/users01.dbf
SYSAUX /home/app/oraten/oradata/oraten/sysaux01.dbf
UNDOTBS1 /home/app/oraten/oradata/oraten/undotbs01.dbf
SYSTEM /home/app/oraten/oradata/oraten/system01.dbf
TBS1 /home/app/oraten/oradata/oraten/tbs101.dbf SQL> conn scott/tiger
Connected.
SQL> create table tcopy tablespace tbs1 as select object_id,object_name from user_objects; Table created. SQL> select * from tcop;
select * from tcop
*
ERROR at line 1:
ORA-00942: table or view does not exist SQL> select * from tcopy; OBJECT_ID OBJECT_NAME
---------- --------------------------------------------------------------------------------------------------------------------------------
51809 INVALID_ROWS
52080 TCOPY
51574 PK_DEPT
51573 DEPT
51575 EMP
51576 PK_EMP
51577 BONUS
51578 SALGRADE 8 rows selected. SQL> conn / as sysdba
Connected.
SQL> alter system checkpoint; System altered. SQL> alter system flush buffer_cache; System altered. SQL> host cp /home/app/oraten/oradata/oraten/tbs101.dbf /home/app/oraten/oradata/oraten/tbs101.copy.dbf SQL> conn scott/tiger
Connected.
SQL> delete from tcopy; 8 rows deleted. SQL> commit; Commit complete. SQL> select * from tcopy; no rows selected

用户误将表数据删除。以下通过bbed来进行恢复.

首先看看须要修复的数据块

SQL> desc dba_segments
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
HEADER_FILE NUMBER
HEADER_BLOCK NUMBER
BYTES NUMBER
BLOCKS NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
RELATIVE_FNO NUMBER
BUFFER_POOL VARCHAR2(7) SQL> select segment_name,header_file,header_block,blocks from dba_segments where segment_name='TCOPY'; SEGMENT_NAME HEADER_FILE
--------------------------------------------------------------------------------- -----------
HEADER_BLOCK BLOCKS
------------ ----------
TCOPY 5
531 8

使用bbed的copy命令来恢复

SQL> desc dba_segments
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
HEADER_FILE NUMBER
HEADER_BLOCK NUMBER
BYTES NUMBER
BLOCKS NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
RELATIVE_FNO NUMBER
BUFFER_POOL VARCHAR2(7) SQL> select segment_name,header_file,header_block,blocks from dba_segments where segment_name='TCOPY'; SEGMENT_NAME HEADER_FILE
--------------------------------------------------------------------------------- -----------
HEADER_BLOCK BLOCKS
------------ ----------
TCOPY 5
531 8

查看修复结果

SQL> conn / as sysdba
Connected.
SQL> alter system flush buffer_cache; System altered. SQL> conn scott/tiger
Connected.
SQL> select * from tcopy; OBJECT_ID
----------
OBJECT_NAME
----------------------------------------------------------------------------------------------------
51809
INVALID_ROWS 52080
TCOPY 51574
PK_DEPT OBJECT_ID
----------
OBJECT_NAME
----------------------------------------------------------------------------------------------------
51573
DEPT 51575
EMP 51576
PK_EMP OBJECT_ID
----------
OBJECT_NAME
----------------------------------------------------------------------------------------------------
51577
BONUS 51578
SALGRADE 8 rows selected.

使用bbed恢复表数据的更多相关文章

  1. Oracle恢复表数据

    Oracle恢复数据 在oracle 10g以及之后的版本,提供了回收站的机制,为了防止误操作将表数据清空而有回收机制. 换句话说,我们删除的表不会立马消失,而是进入回收站.下面我们可以查看回收站 查 ...

  2. mysql innodb 从 ibd 文件恢复表数据

    最近内部的 mysql 数据库发生了一件奇怪的事,其中有一个表 users625 突然出现问题, 所有对它的操作都报错误 数据表不存在. mysql> select count(*) from ...

  3. 利用flashback query 恢复表数据

    flashback query可以查询过去某个时间点对象的状态,从而可以利用此来进行恢复数据 1 准备测试数据 用普通用户创建一个表,表中插入部分数据: SQL> show user USER ...

  4. 恢复表数据的办法(delete删除可恢复,truncate不可恢复)

    select * from table_name as of timestamp to_timestamp('2018-12-20 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ...

  5. Oracle 当数据库的表没有drop操作就可以通过如下方式恢复表数据

    --执行下列语句可查询出相关时间点 select * from sys.smon_scn_time order by time_dp desc; --执行下列语句可将某个时间点的数据恢复 insert ...

  6. mysql5.7根据.frm和.ibd文件恢复表结构和数据

    一.恢复表结构 1.环境:Windows .mysql5.7:首先创建一个数据库,可以通过navicat来创建:     2.使用当前创建的数据库:use ww; 3.随意创建一张表,但是这张表的名字 ...

  7. mysql数据恢复:.frm和.ibd,恢复表结构和数据

    mysql数据恢复:.frm和.ibd,恢复表结构和数据 一.恢复表结构 二.恢复表数据 相关内容原文地址: CSDN:她说巷尾的樱花开了:mysql根据.frm和.ibd文件恢复表结构和数据 博客园 ...

  8. MySQL 利用frm文件和ibd文件恢复表结构和表数据

    文章目录 frm文件和ibd文件简介 frm文件恢复表结构 ibd文件恢复表数据 通过脚本利用ibd文件恢复数据 通过shell脚本导出mysql所有库的所有表的表结构 frm文件和ibd文件简介 在 ...

  9. oracle恢复误删除数据

    --开启行移动功能alter table 表名 enable row movement;--恢复表数据flashback table 表名 to timestamp to_timestamp('201 ...

随机推荐

  1. 数据库-mongodb-Gridfs

    GridFS是一种将大型文件存储在MongoDB的文件规范: 数据库支持以BSON格式保存二进制对象. 但是MongoDB中BSON对象最大不能超过4MB. GridFS 规范提供了一种透明的机制,可 ...

  2. STL_算法_对全部元素排序(sort、stable_sort)

    C++ Primer 学习中. . .   简单记录下我的学习过程 (代码为主) //大部分容器适用.不适用于list容器 sort(b,e) sort(b,e,p) stable_sort(b,e) ...

  3. 通过Nginx訪问FastDFS文件系统并进行图片文件裁剪的性能測试和分析

    前段时间公司的分布式图片文件系统(FastDFS)做了图片裁剪和缩放功能,并把缩放计算和FastDFS做了解耦分离,前端用虚拟机作为图片文件缩放的訪问代理层(Nginx Proxy),后端使用ngin ...

  4. Oracle 12c agent install for windows

    在Oracle EM12c 中部署agent的方法分两种,一种是通过EM12c的控制台通过ssh直接把agent"推送"安装到被管理端.这样的方法在linux平台的OMS和被管理端 ...

  5. 【跟我一步一步学Struts2】——拦截器

    前言 前面提到过拦截器.而且说拦截器仅仅能拦截Action.这里拦截器的调用体现了责任链模式.为什么说体现了责任链模式呢? 以下的一段话说的非常明确: Struts2将整个运行划分成若干同样类型的元素 ...

  6. VM虚拟机上的CentOS 7系统重置root用户密码

    1.开机在进入CentOS系统时(还未进入系统内)的系统选择页面时按E键进入系统编辑模式 2.找到Linux16开头的这行代码,用方向键将光标移动至这行代码的结尾,键入一个空格和rd.break,然后 ...

  7. out ref params

    out的使用 out 能够使我们的函数返回多个类型的值,不再受返回类型的设置: 就是相当于在方法里不仅仅给了一个返回值,被out修饰的参数的值也能带出去: 所以就是说,在方法体内被out修饰的参数,都 ...

  8. ActiveMQ学习笔记(12)----ActiveMQ的集群

    1. Queue consumer cluster ActiveMQ支持Consumer对消息的高可靠性的负载均衡消费,如果一个Consumer死掉,该消息会转发到其他的Consumer消费的Queu ...

  9. 基本数据类型(list、tuple)

    1.列表 1.1 定义 li=[1,2,3] 每个元素逗号隔开 list("abc") 迭代 列表是一个容器 => 任意类型 列表是有序的 => 索引 切片 步长 列表 ...

  10. H5发起微信支付

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...