`
sjk2013
  • 浏览: 2202067 次
文章分类
社区版块
存档分类
最新评论

oracle实验:用bbed恢复误删记录的全过程

 
阅读更多

1

准备测试环境:
SQL> create table c as select * from dept;

Table created.

SQL> select * from c;

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

SQL> select rowid,c.* from c;

ROWID DEPTNO DNAME LOC
------------------ ---------- -------------- -------------
AAAM5/AAEAAAEmEAAA 10 ACCOUNTING NEW YORK
AAAM5/AAEAAAEmEAAB 20 RESEARCH DALLAS
AAAM5/AAEAAAEmEAAC 30 SALES CHICAGO
AAAM5/AAEAAAEmEAAD 40 OPERATIONS BOSTON

SQL> select get_rowid('AAAM5/AAEAAAEmEAAA') row_id from dual;

ROW_ID
--------------------------------------------------------------------------------
Object# is :52863
Relative_fno is :4
Block number is :18820
Row number is :0

ps:
get_rowid 这个函数是用来获得row_id的详信息,实现如下:
create or replace function get_rowid
(l_rowid in varchar2)
return varchar2
is
ls_my_rowid varchar2(200);
rowid_type number;
object_number number;
relative_fno number;
block_number number;
row_number number;
begin
dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno,block_number,row_number);
ls_my_rowid := 'Object# is :'||to_char(object_number)||chr(10)||
'Relative_fno is :'||to_char(relative_fno)||chr(10)||
'Block number is :'||to_char(block_number)||chr(10)||
'Row number is :'||to_char(row_number);
return ls_my_rowid;
end;

2

登入bbed
[oracle@localhost ~]$ bbed parfile=bbed.par
Password:

BBED: Release 2.0.0.0.0 - Limited Production on Thu Jun 14 13:09:44 2012

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

************* !!! For Oracle Internal Use only !!! ***************

BBED> set dba 4,18820
DBA 0x01004984 (16796036 4,18820)

BBED> find /c ACCOUNTING TOP
File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4)
Block: 18820 Offsets: 8169 to 8191 Dba:0x01004984
------------------------------------------------------------------------
4143434f 554e5449 4e47084e 45572059 4f524b02 06483a

<32 bytes per line>

BBED> dump /v dba 4,18820 offset 8169 count 23
File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4)
Block: 18820 Offsets: 8169 to 8191 Dba:0x01004984
-------------------------------------------------------
4143434f 554e5449 4e47084e 45572059 l ACCOUNTING.NEW Y
4f524b02 06483a l ORK..H:

<16 bytes per line>

BBED> p *kdbr[0] --*kdbr[n],其中n是row number
rowdata[66]
-----------
ub1 rowdata[66] @8162 0x2c

BBED> dump /v dba 4,18820 offset 8162 count 23
File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4)
Block: 18820 Offsets: 8162 to 8184 Dba:0x01004984
-------------------------------------------------------
2c000302 c10b0a41 43434f55 4e54494e l ,...�..ACCOUNTIN
47084e45 572059 l G.NEW Y

<16 bytes per line>

以上是完好的行,accounting所在行显示为2c,那么,到sqlplus,将其删除:

3

登入sqlplus

SQL> delete c where deptno=10;

1 row deleted.

SQL> commit;

Commit complete.

SQL> select * from c where deptno=10;

no rows selected

SQL> shutdown immediate
ORA-01031: insufficient privileges
SQL> conn sys/s as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
删除完毕,并关闭数据库,再去bbed:

4

登入bbed

BBED> dump /v dba 4,18820 offset 8162 count 23
File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4)
Block: 18820 Offsets: 8162 to 8184 Dba:0x01004984
-------------------------------------------------------
3c020302 c10b0a41 43434f55 4e54494e l <...�..ACCOUNTIN
47084e45 572059 l G.NEW Y

<16 bytes per line>
发现没?accounting所在行变成了以3c打头了。把3c改成2c:
BBED> modify /x 2c offset 8162
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4)
Block: 18820 Offsets: 8162 to 8184 Dba:0x01004984
------------------------------------------------------------------------
2c020302 c10b0a41 43434f55 4e54494e 47084e45 572059

<32 bytes per line>

BBED> sum dba 4,18820
Check value for File 4, Block 18820:
current = 0xec39, required = 0xec29

BBED> sum dba 4,18820 apply
Check value for File 4, Block 18820:
current = 0xec29, required = 0xec29

5

登入数据库,看一下是否恢复了被删的行:
SQL> startup
ORACLE instance started.

Total System Global Area 524288000 bytes
Fixed Size 1220336 bytes
Variable Size 197132560 bytes
Database Buffers 318767104 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL> conn scott/tiger
Connected.
SQL> select * from c;

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

SQL>
成功恢复。

分享到:
评论

相关推荐

    基于jsp+servlet+mysql的javaweb健身房俱乐部系统

    包括系统管理后台和前端动态网页的设计搭建。系统管理后台提供给俱乐部员工使用,可以对俱乐部的课程、器材、房间等进行管理维护;前端网页主要提供给消费者使用,可以在线浏览课程、预约上课等。 技术栈:JavaScript,Mysql 数据库,JSP、tomcat、HTML、CSS。

    Tomcat安装配置基础详细教程讲解.docx

    tomcat安装及配置教程 Tomcat安装配置基础详细教程讲解.docx

    51单片机智能百叶窗项目

    51单片机智能百叶窗项目

    PHP课程网站络管理系统

    PHP课程网站络管理系统

    2023年上半年度TikTok行业白皮书电子版.zip

    2023年上半年度TikTok行业白皮书电子版.zip

    扩展卡尔曼滤波算法的python代码实现与解读.docx

    卡尔曼滤波算法 扩展卡尔曼滤波(Extended Kalman Filter, EKF)是卡尔曼滤波的一种扩展,用于解决非线性系统的状态估计问题。EKF通过局部线性化非线性函数来近似非线性系统的行为,从而应用标准的卡尔曼滤波算法。下面是一个简单的扩展卡尔曼滤波算法的Python实现示例,以及对其核心步骤的解读。 ### Python代码实现 ```python import numpy as np def ekf(x, P, measurement_func, measurement_jacobian, control_input=None, control_jacobian=None, measurement=None, R=None, Q=None): """ 扩展卡尔曼滤波算法实现 参数: x: 上一时刻的状态估计值,维度为(n,)的np.array P: 上一时刻的协方差矩阵,维度为(n,n)的np.array measurement_func: 非线性测量模型函数,输入状态输出测量值 measureme

    tomcat安装及配置教程

    tomcat安装及配置教程

    《2022_电商出海营销白皮书》.zip

    《2022_电商出海营销白皮书》.zip

    Python课设-学生信息管理系统

    Python课设-学生信息管理系统

    产品设计塑胶类螺丝柱设计标准,适合新手使用

    适合塑胶类产品设计:内容1:自攻螺丝塑胶孔设计,塑胶螺丝孔设计尺寸要求,十二种经典的螺栓防松设计,螺纹及螺纹连接件 ,螺丝柱设计,螺丝制作工艺及设计准则详述.,螺丝与塑胶柱的基本设计要求,螺丝设计选用规范,螺丝设计标准解析,螺丝孔设计标准,螺丝及塑胶螺丝柱的设计.,螺丝标准,螺丝柱设计,等

    QT实时数据曲线Plot

    1、QT界面布局学习 2、Custom Plot组件学习 3、Custom Plot组件示例 4、Custom Plot组件二次开发

    基于uni-app的垃圾分类精灵的设计与实现源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    TikTok直播运营分享1_20231126105338.zip

    TikTok直播运营分享1_20231126105338.zip

    CANON打印机清零软件合集

    目前为止几乎包含 Service Tool 工具的所有版本,支持CANON目前为止的所有型号

    FPGA Verilog PLL锁相环 FIFO同步 ip核调用 仿真工程

    FPGA Verilog PLL锁相环 FIFO同步 ip核调用 仿真工程 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,允许用户根据设计需求配置其内部逻辑。在FPGA中,Verilog是一种硬件描述语言,用于编写数字电路的逻辑设计。PLL(Phase-Locked Loop)是FPGA中常用的一种频率合成技术,它通过锁定相位来同步不同信号源,常用于时钟管理和频率分频。 锁相环(PLL)在Verilog中实现通常包括电压控制振荡器(VCO)、分频器、鉴相器和低通滤波器等模块。PLL设计的关键在于调整这些模块参数,以达到所需的输出频率和相位关系。 FIFO(First-In-First-Out)是一种常用的存储结构,用于在不同时钟域之间传递数据,解决时钟域间的同步问题。在FPGA设计中,FIFO的Verilog实现会涉及到读写指针管理和深度控制,确保数据的正确存取。 在FPGA设计中,经常需要调用预定义的IP(Intellectual Property)核,如PLL和FIFO IP,这些核由供应商提供,经过验证,可以直接集成到设计中。

    《2023_TikTok_for_Business_社群电商爆品营销白皮书》.zip

    《2023_TikTok_for_Business_社群电商爆品营销白皮书》.zip

    高校思想政治理论课教师研究专项教学方法改革择优推广项目.doc

    高校思想政治理论课教师研究专项教学方法改革择优推广项目.doc

    《2023年度TikTok电商行业趋势白皮书》.zip

    《2023年度TikTok电商行业趋势白皮书》.zip

    Lab-Electronic Craft Practicum-2-Simulation of a Single Tube Com

    Lab-Electronic Craft Practicum-2-Simulation of a Single Tube Common Emitter Amplifier Circuit //Multisim14.0 //电子工艺实习-2-单管共射极放大电路的仿真

    基于Java的在线作业提交批改系统设计与实现源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

Global site tag (gtag.js) - Google Analytics