[20170410]快速找回触发器内容2.txt

[20170410]快速找回触发器内容2.txt

--上午登录发现一个是触发器被人为删除了,需要恢复.链接http://www.itpub.net/thread-2084789-1-1.html.
--我提供几个方法:1.取出备份的system数据文件,通过bbed之类的工具定位.2使用logminer 应该也可以定位,表sys.source$.

--实际上还有1个简单粗暴的方法,直接通过strings查询归档日志.链接:
http://blog.itpub.net/267265/viewspace-2136894/

--如果sys.source$里面删除的数据没有覆盖,我觉得正常的业务数据库不大可能经常改动这个表,可以通过bbed来恢复内容。
--测试例子:

1.环境:
SYS@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER)
RETURN NUMBER AS
BEGIN
  sys.dbms_lock.sleep(seconds);
  RETURN seconds;
END;
/

2.假设删除了如何恢复呢?
SYS@book> drop function scott.sleep ;
Function dropped.

--//定位在那个块(最好选择特殊的字符,这样定位准确一些)
$ strings -3 -t d /mnt/ramdisk/book/system01.dbf | grep -i sys.dbms_lock.sleep;
495150716 +begin sys.dbms_lock.sleep(seconds=>?); end;
751757758    sys.dbms_lock.sleep(seconds);

SYS@book> select 751757758/8192 from dual ;
751757758/8192
--------------
    91767.3044

3.bbed恢复:
--//注意最好不要在原文件操作,可以先拷贝一份在这个文件操作。

BBED> set dba 1,91767
        DBA             0x00416677 (4286071 1,91767)
BBED> map /v
...
sb2 kdbr[99]                               @110
--//存在99条记录。

--//编辑文件c.cmd
set dba 1,91767
x /rnnc *kdbr[0]
...
x /rnnc *kdbr[98]
quit

$ cat bbed.par
blocksize=8192
listfile=$HOME/bbed/filelist.txt
mode=edit
PASSWORD=blockedit
SPOOL=Y

$ $ORACLE_HOME/bin/bbed parfile=bbed.par cmdfile=c.cmd

--//这样全部操作记录在log.bbd文件中。

$ grep -B3  ": 0x3c (" log.bbd
BBED> x /rnnc *kdbr[23]
rowdata[0]                                  @2383
----------
flag@2383: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
--
BBED> x /rnnc *kdbr[24]
rowdata[53]                                 @2436
-----------
flag@2436: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
--
BBED> x /rnnc *kdbr[25]
rowdata[82]                                 @2465
-----------
flag@2465: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
--
BBED> x /rnnc *kdbr[26]
rowdata[100]                                @2483
------------
flag@2483: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
--
BBED> x /rnnc *kdbr[27]
rowdata[144]                                @2527
------------
flag@2527: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
--
BBED> x /rnnc *kdbr[28]
rowdata[174]                                @2557
------------
flag@2557: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)

--//基本可以确定删除记录在行记录是23,24,25,26,27,28.

assign  dba 1,91767 offset 2383 = 0x2c  <=手工拷贝和粘贴第一行要确认1次。
assign  dba 1,91767 offset 2436 = 0x2c
assign  dba 1,91767 offset 2465 = 0x2c
assign  dba 1,91767 offset 2483 = 0x2c
assign  dba 1,91767 offset 2527 = 0x2c
assign  dba 1,91767 offset 2557 = 0x2c

BBED> x /6rnnc *kdbr[23]
rowdata[0]                                  @2383
----------
flag@2383: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2384: 0x02
cols@2385:    3

col    0[4] @2386: 90510
col    1[2] @2391: 1
col   2[41] @2394: FUNCTION       sleep (seconds IN NUMBER).

rowdata[53]                                 @2436
-----------
flag@2436: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2437: 0x02
cols@2438:    3

col    0[4] @2439: 90510
col    1[2] @2444: 2
col   2[17] @2447: RETURN NUMBER AS.

rowdata[82]                                 @2465
-----------
flag@2465: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2466: 0x02
cols@2467:    3

col    0[4] @2468: 90510
col    1[2] @2473: 3
col    2[6] @2476: BEGIN.

rowdata[100]                                @2483
------------
flag@2483: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2484: 0x02
cols@2485:    3

col    0[4] @2486: 90510
col    1[2] @2491: 4
col   2[32] @2494:   sys.dbms_lock.sleep(seconds);.

rowdata[144]                                @2527
------------
flag@2527: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2528: 0x02
cols@2529:    3

col    0[4] @2530: 90510
col    1[2] @2535: 5
col   2[18] @2538:   RETURN seconds;.

rowdata[174]                                @2557
------------
flag@2557: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@2558: 0x02
cols@2559:    3

col    0[4] @2560: 90510
col    1[2] @2565: 6
col    2[4] @2568: END;
--//ok这样已经恢复。

$ grep "col *2\[" log.bbd

col   2[41] @2394: FUNCTION       sleep (seconds IN NUMBER).
col   2[17] @2447: RETURN NUMBER AS.
col    2[6] @2476: BEGIN.
col   2[32] @2494:   sys.dbms_lock.sleep(seconds);.
col   2[18] @2538:   RETURN seconds;.
col    2[4] @2568: END;

--//再编辑输出,删除前面字符,后面的.就ok了,当然我的测试删除函数很小,大的函数或者过程如果跨块就复杂了。
--//仅仅提供思路,实际上就是使用bbed恢复删除数据文件的思路。
--//另外我个人不建议修改system数据文件,取出再重新建立就ok了。

时间: 2024-10-22 23:28:43

[20170410]快速找回触发器内容2.txt的相关文章

[20170410]快速找回触发器内容.txt

[20170410]快速找回触发器内容.txt --上午登录发现一个是触发器被人为删除了,需要恢复.链接http://www.itpub.net/thread-2084789-1-1.html. --我提供几个方法:1.取出备份的system数据文件,通过bbed之类的工具定位.2使用logminer 应该也可以定位,表sys.source$. --实际上还有1个简单粗暴的方法,直接通过strings查询归档日志.例子如下: 1.环境: SYS@book> @ &r/ver1 PORT_ST

Word文档中快速输入特定内容的方法

  Word文档中快速输入特定内容的方法           1.单击"文件"按钮,在打开的面板中选择"选项". 2.此时会打开名为"Word选项"的窗口,在左侧选择"校对"命令,然后在右侧的窗口中找到"自动更正选项"按钮. 3.在"自动更正"选项卡的"替换"文本框中为自己需要重复输入的内容设置一个"快捷键"(例如<1>),然后在&qu

快速找回Win8/Win8.1中消失了的系统评分

  对此有许多使用Win8/Win8.1的小伙伴因为看不到评分,总觉得心里不自在,其实Win8/Win8.1系统评分这项功能只是被隐藏了,至于微软为何要将它隐藏,那就不得而知了,但是我们可以通过如下方法快速找回Win8/Win8.1中消失了的系统评分. 1.下载PerfCenterCPL.dll应用程序扩展合集. 2.下载后将文件解压至桌面,然后将Windows文件夹复制到你的系统盘(一般为C盘),复制完成后以管理员身份运行WinSat.bat ,运行前确保WinSat.bat和PerfCent

左明燕:怎样快速更新网站内容

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 从有了CMS现在做个网站是件非常简单的事,网站的运作的中心是日常的网站内容更新和长期网站推广.其中网站内容的快速更新是重中之重,小左来分享一下快速更新网站内容的几种方法.希望能为站长们更新网站内容提供一些帮助. 1.内容采集 内容采集是最直接的方法,采集回来的内容只要经过筛选和相关编辑发布出来就可以起到快速更新网站内容的作用.但采集也有个致命

兼职站长应当如何快速增加网站内容

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 物价的不断飙升,越来越多的白领阶级.工薪阶级进入了互联网中,都想在互联网中赚取一些零花钱,我们把这种不是专职做站的站长称为:兼职站长,那么兼职站长时间有限,又如何快速的增加网站内容呢? 1.威客要利用,每天几元有大用 作为一名兼职的站长,需要用最少的钱换取最大的利益,每天网站的更新必不可少,那么就要用到威客了,在威客去发布任务,每天只需要几篇

手机丢失通讯录没了 360云盘可快速找回

对很 多人而言,丢失手机是件很麻烦的事情,除了要去营业厅卡.办卡外,手机内通讯录的丢失也用户头疼不已.南京市民杨女士在逛街的时候把手机丢了,"手机号还能补, 但是通讯录无法找回,几百个电话号码就这么没了."如何找回手机内重要信息,省去重新 手动更新信息的烦恼呢?今天小编就教大家用http://www.aliyun.com/zixun/aggregation/9419.html">360云盘快速找回通讯录,简单几步即可恢复,再也 不用为手机丢失而烦恼了.   手机上安装3

手机丢失通讯录没了360云盘可快速找回

对很多人而言,丢失手机是件很麻烦的事情,除了要去营业厅卡.办卡外,手机内通讯录的丢失也用户头疼不已.南京市民杨女士在逛街的时候把手机丢了,"手机号还能补,但是通讯录无法找回,几百个电话号码就这么没了."如何找回手机内重要信息,省去重新手动更新信息的烦恼呢?今天小编就教大家用360云盘快速找回通讯录,简单几步即可恢复,再也不用为手机丢失而烦恼了.手机上安装360云盘的APP先在手机上安装360云盘APP,(http://yunpan.360.cn/index/download#andro

方便快速获得原创内容的一些方式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 方便快速获得原创内容的一些方式,对于一个站长来说,你还在文章的原创性而烦恼吗?你还在花费自己大量的宝贵的时间,来亲力亲为的所谓的原创或者是伪原创的文章吗?现在就我在邯郸seo从事seo的经验给大家分享一下,获取一下原创性文章的方式方法. 对于seoer的站长来说,我们都知道文章原创性的重要性,不论是在站内文章的更新还是对于外链的内容,原创性的

[20171201]nc快速判断端口是否打开.txt

[20171201]nc快速判断端口是否打开.txt --//nc快速判断端口是否打开,例子: $ echo exit | nc -w 1 -n -v  192.168.xxx.xx 1521 Connection to 192.168.xxx.xx 1521 port [tcp/*] succeeded! $ echo exit | nc -w 1 -n -v  192.168.xxx.xx 22 Connection to 192.168.xxx.xx 22 port [tcp/*] suc