[20180604]在内存修改数据(bbed).txt

--//以前曾经做过在内存修改数据,通过oradebug poke命令修改内存信息,相关链接:
--//http://blog.itpub.net/267265/viewspace-2124466/=>[20160904]在内存修改数据.txt

--//今天测试看看是否通过bbed修改数据信息的情况.使用asmm,这样/dev/shm可以看到一个一个文件。

1.环境:
SCOTT@book> @ 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

2.建立测试:

create table t1 (id number,name varchar2(20));
insert into t1 values (1,'AAAAAAAAAAB');
commit ;

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

SCOTT@book> @ &r/rowid AAAWQKAAEAAAAJcAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     91146          4        604          0  0x100025C           4,604                alter system dump datafile 4 block 604 ;

SYS@book> create pfile='/tmp/@.ora' from spfile;
File created.

--//修改/tmp/book.ora参数,加入
*.memory_target=5120M
*.memory_max_target=5120M
--//注:注意检查use_large_pages参数,我的设置*.use_large_pages='ONLY',无法启动,报
SYS@book> startup pfile=/tmp/book.ora
ORA-27125: unable to create shared memory segment

--//使用参数/tmp/book.ora参数启动数据库,这样采用asmm方式.
SYS@book> startup pfile=/tmp/book.ora
ORACLE instance started.
Total System Global Area 1068994560 bytes
Fixed Size                  2259960 bytes
Variable Size             423625736 bytes
Database Buffers          637534208 bytes
Redo Buffers                5574656 bytes
Database mounted.
Database opened.

# ls -l /dev/shm/ora_book_*|wc

--//加载对应数据块到内存:
SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAWQKAAEAAAAJcAAA          1 AAAAAAAAAAB

SYS@book> @ &r/bh 4 604
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
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
000000009DFCB238          4        604          1 data block         xcur                1          0          0          0          0          0 0000000081C14000 T1

3.在内存修改数据:
# strings -f -t d /dev/shm/ora_book_* | grep AAAAAAAAAAB
/dev/shm/ora_book_265158658_132:   90097 AAAAAAAAAAB
/dev/shm/ora_book_265158658_132: 3055545        3*AC60AAABAAAAAAAAAAAAAAAAAAAAAAB6UEsFBgAAAAABAAEALwAAABEXAAAAAA==

--//90097/8192 = 10.99816894531250000000
--//确定字符串AAAAAAAAAAB在那个文件.可以确定/dev/shm/ora_book_265158658_132.因为仅仅插入1条,应该在块的底部.

4.使用bbed修改:
BBED> set filename '/dev/shm/ora_book_265158658_132'
        FILENAME        /dev/shm/ora_book_265158658_132

BBED> set blocksize 8192
        BLOCKSIZE       8192

--//注意一定要设置这个参数.不然看到的块大小是512
BBED> show
        FILE#           0
        BLOCK#          1
        OFFSET          0
        DBA             0x00000000 (0 0,1)
        FILENAME        /dev/shm/ora_book_265158658_132
        BIFILE          bifile.bbd
        LISTFILE        /home/oracle/bbed/filelist.txt
        BLOCKSIZE       512
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           160
        COUNT           64
        LOGFILE         log.bbd
        SPOOL           Yes

BBED> set block 11
        BLOCK#          11
--//因为这个内存文件的第一块非文件头.所以block=11.

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

col    0[2] @8173: 1
col   1[11] @8176: AAAAAAAAAAB

--//确定偏移量:
BBED> dump offset 8176
 File: /dev/shm/ora_book_265158658_132 (0)
 Block: 11                                                   Offsets: 8176 to 8191 Dba:0x00000000
--------------------------------------------------------------------------------------------------
 0b414141 41414141 41414142 0106a09c
<64 bytes per line>

BBED> modify /c 'ABCD' offset 8177
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /dev/shm/ora_book_265158658_132 (0)
 Block: 11                                                   Offsets: 8177 to 8191 Dba:0x00000000
--------------------------------------------------------------------------------------------------
 41424344 41414141 41414201 06a09c

--//再次查询看看.
SYS@book> select rowid,t1.* from scott.t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAWQKAAEAAAAJcAAA          1 ABCDAAAAAAB

--//注:我并没有做检查和,sum apply.
--//我已经通过内存篡改了信息.

SYS@book> alter system flush BUFFER_CACHE;
System altered.

SYS@book> select rowid,t1.* from scott.t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAWQKAAEAAAAJcAAA          1 AAAAAAAAAAB

--//现在有正常显示回来.

[20180604]在内存修改数据(bbed).txt的更多相关文章

  1. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  2. c#教程之通过数据绑定修改数据

    通过数据绑定修改数据 "实体框架"提供了与数据库的双向通信通道.前面已经讲述了如何使用"实体框架"获 取数据,现在来看看如何修改获取的信息,并将改动发送回数据库 ...

  3. 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp

    一.本人环境描述      1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0      2.Linux为centos6.5 32位,安装在Oracle VM Vir ...

  4. 只需要一点点C++基础,新手也可以制作单机游戏内存修改器

    声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行.序:首先我们需要一个Qt+VS环境Qt从http ...

  5. Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

    Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...

  6. 让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本

    让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本 运用Excel2Json2Object插件将xml表格转为Object导入脚本 下载地址 ...

  7. [20181031]12c 在线移动数据文件.txt

    [20181031]12c 在线移动数据文件.txt --//12c以前,移动或者改名数据文件是一项比较麻烦的事情,至少要停一下业务.而12c支持在线移动或者改名数据文件,并且有点不可思议--//的是 ...

  8. 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色

    简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging ...

  9. [20191220]关于共享内存段相关问题.txt

    [20191220]关于共享内存段相关问题.txt --//我一直很好奇如果设置内核参数kernel.shmmax = 68719476736足够大,为什么我的测试实例还是建立3个共享内存段.--// ...

随机推荐

  1. GAN笔记——理论与实现

    GAN这一概念是由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun就曾说,"GAN及其变种是数十 ...

  2. C语言实现多态

    C语言实现多态 首先声明,大神就不要看了.小弟水平有限. C++多态是通过虚函数表实现的,类似于JAVA多态的实现方式.关于Java多态的实现方式可以看我之前写过的一篇不是很完善的文章.从JVM角度看 ...

  3. leetcode — longest-palindromic-substring

    import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/longest-palindromic-substri ...

  4. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  5. 精读JavaScript模式(四),数组,对象与函数的几种创建方式

    一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ...

  6. DotNetCore学习-3.管道中间件

    中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行一些操作. 请求委托被用来建立请求管道,并处理每一个HTT ...

  7. windows server 2008 R2 开启远程桌面

    1.计算机  ——属性 2.远程设置 3.远程桌面-允许运行任意版本远程连接-选择用户-添加用户:Administrator;或是可以是其他非管理员用户(默认的系统管理员已经被授予了访问权限); 点确 ...

  8. [PHP] 算法-有序数组旋转后寻找最小值的PHP实现

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...

  9. 【Spring】7、拦截器HandlerInterceptor

    处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   常见 ...

  10. 【实践练习一】Git以及Github的使用

           以前经常在同学大神那听说过Github这神器,虽敬佩久已,奈何却无缘使用.好吧,我承认,主要还是不会用,一看网站全是英文的,想想还是不要为难自己了.然而现在还是要为难自己了,趁着早上刚学 ...