[20160904]在内存修改数据.txt

[20160904]在内存修改数据.txt

--测试一下,是否可以在内存crack数据块的数据.

1.环境:
SCOTT@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 table t1 (id number,name varchar2(20));
insert into t1 values (1,'AAAA');
commit ;

--分析表略.

2.测试:
SCOTT@test01p> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAZuzAAJAAAACOAAA          1 AAAA

SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVpqAAEAAAAePAAA          1 AAAA

SCOTT@book> @ &r/rowid AAAVpqAAEAAAAePAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     88682          4       1935          0  0x100078F           4,1935               alter system dump datafile 4 block 1935

SYS@book> @ &r/bh 4 1935
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
0000000084B95950          4       1935          1 data block         xcur                2          0          0          0          0          0 000000006BAC6000 T1

--STATE=xcur BA=000000006BAC6000

SYS@book> alter system checkpoint ;
System altered.

--//通过bbed观察:
BBED> set dba 4,1935
        DBA             0x0100078f (16779151 4,1935)

BBED> x /rnc *kdbr[0]
rowdata[0]                                  @8177
----------
flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8178: 0x01
cols@8179:    2

col    0[2] @8180: 1
col    1[4] @8183: AAAA

BBED> dump /v
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 1935                              Offsets: 8177 to 8191                            Dba:0x0100078f
-----------------------------------------------------------------------------------------------------------
2c010202 c1020441 41414101 066871                                       l ,......AAAA..hq
<32 bytes per line>

BBED> p kcbh.chkval_kcbh
ub2 chkval_kcbh                             @16       0xd253

--可以发现'AAAA'现在在该块offset=8183.
--8183 = 0x1ff7,ba=0x000000006BAC6000 ba + 0x1FF7 = 0x000000006BAC6000+0x1FF7+1 = 0x000000006BAC7ff8

3.先通过oradebug确定判断是否正确.
SYS@book> oradebug setmypid
Statement processed.

SYS@book> oradebug peek 0x000000006BAC7ff8 4
[06BAC7FF8, 06BAC7FFC) = 41414141

SYS@book> oradebug poke 0x000000006BAC7ff8 4 0x41424344
BEFORE: [06BAC7FF8, 06BAC7FFC) = 41414141
AFTER:  [06BAC7FF8, 06BAC7FFC) = 41424344

--依旧修改为'ABCD'.
SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVpqAAEAAAAePAAA          1 DCBA

--昏!顺序是颠倒的,不过已经修改过来了。并且不需要计算检查和。如果刷新buffer cache。

SCOTT@book> alter system flush buffer_cache;
System altered.

SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVpqAAEAAAAePAAA          1 AAAA

--可以发现有改动回来了,因为数据块的信息没有改动。

时间: 2024-07-30 10:59:03

[20160904]在内存修改数据.txt的相关文章

[20160526]bbed修改数据记录(不等长).txt

[20160526]bbed修改数据记录(不等长).txt --以前做的测试,有点乱,当时没有很好的理解快速提交.而且做的很乱,链接如下: http://blog.itpub.net/267265/viewspace-1193074/ --今天重复测试看看: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ ------

[20140624]bbed修改数据记录(不等长).txt

[20140624]bbed修改数据记录(不等长).txt http://www.itpub.net/thread-1872851-1-1.html --给出的问题修改记录时,长度没有变化,如果存在变化,修改与原来的不同,要修改kdbr[0]的值. --还有一些细节的步骤. SCOTT@test> @ver BANNER -------------------------------------------------------------------------------- Oracle

新人拼凑的码,求解为什么D\\点云数据.txt中没有写入数据!!

问题描述 新人拼凑的码,求解为什么D\点云数据.txt中没有写入数据!! using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Kinect; using System.IO; using System.Windows.Forms; namespace GetPointCloudFromK

listview-关于listView中修改数据

问题描述 关于listView中修改数据 在做一个分组功能,listview上显示如图 想实现点击某一个item然后可以让用户修改组号.想法是点击到这个item到了另一个activity然后用户可以输入组号,然后返回用户修改的组号显示到原来的listView上 解决方案 在A.Activity中调用startActivityForResult()启动B.Activity后,再B.Activity中调用setResult() 方法后,A.Activity中的onResultActivity将会执行

防止工具(八门神器)进行内存修改的方法

http://www.eoeandroid.com/home.php?mod=space&uid=1297371&do=blog&id=48170 Android内存修改器有很多.拿其中的比较出名的八门神器来说,该应用通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP.MP.生命数等等参数.辛辛苦苦开发的游戏或应用被修改器一修改就悲催了.下面就通过一个demo来讲下,怎么通过多数据关联来保护应用的重要数据不被修改.<<<安卓APP破解技术有哪些?如何防

关于hibernate修改数据的疑惑

问题描述 各位大神,请教一个关于hibernate修改数据的问题,看代码 public void addUser(){ System.out.println("begin......."); Session session = null; Transaction transaction = null; session = SessionFactoryUtil.getSessionFactory().openSession(); transaction = session.beginTr

[20170520]利用undo表空间保护数据.txt

[20170520]利用undo表空间保护数据.txt --//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧, --//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题. --//另外提到一种利用undo表空间避免异常操作的恢复方法,就是再建立1个undo表空间,出现异常dml语句时切换使用新的undo表空间. --//这样可以非常从容的恢复信息.当然最好不要

[20160904]表统计信息lock.txt

[20160904]表统计信息lock.txt 晚上看链接:https://blogs.oracle.com/Database4CN/entry/%E8%AF%8A%E6%96%AD%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF%E4%B8%8D%E6%94%B6%E9%9B%86%E5%8E%9F%E5%9B%A0 提到如果导入使用ROWS=n,会导致导入的表lock,测试看看: 官方有如下解释: If ROWS=n, then statistics for all

[20130727]ORACLE 12C使用expdp导出view数据.txt

[20130727]ORACLE 12C使用expdp导出view数据.txt 12C新特性里面可以定义试图,然后通过view当作表一样导出数据,然后导入数据库,自己做一个测试: 1.建立测试环境: SQL> @ver BANNER -------------------------------------------------------------------------------- Oracle Database 12c Enterprise Edition Release 12.1.