[20180604]在内存修改数据(bbed).txt
[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的更多相关文章
- Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改
这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...
- c#教程之通过数据绑定修改数据
通过数据绑定修改数据 "实体框架"提供了与数据库的双向通信通道.前面已经讲述了如何使用"实体框架"获 取数据,现在来看看如何修改获取的信息,并将改动发送回数据库 ...
- 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp
一.本人环境描述 1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0 2.Linux为centos6.5 32位,安装在Oracle VM Vir ...
- 只需要一点点C++基础,新手也可以制作单机游戏内存修改器
声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行.序:首先我们需要一个Qt+VS环境Qt从http ...
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
- 让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本
让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本 运用Excel2Json2Object插件将xml表格转为Object导入脚本 下载地址 ...
- [20181031]12c 在线移动数据文件.txt
[20181031]12c 在线移动数据文件.txt --//12c以前,移动或者改名数据文件是一项比较麻烦的事情,至少要停一下业务.而12c支持在线移动或者改名数据文件,并且有点不可思议--//的是 ...
- 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging ...
- [20191220]关于共享内存段相关问题.txt
[20191220]关于共享内存段相关问题.txt --//我一直很好奇如果设置内核参数kernel.shmmax = 68719476736足够大,为什么我的测试实例还是建立3个共享内存段.--// ...
随机推荐
- 我从来不理解 JavaScript 闭包,直到有人这样向我解释它...
正如标题所述,JavaScript 闭包对我来说一直有点神秘,看过很多闭包的文章,在工作使用过闭包,有时甚至在项目中使用闭包,但我确实是这是在使用闭包的知识. 最近看国外的一些文章,终于,有人用于一种 ...
- curl: (7) Failed connect to 172.16.100.199:9200; 没有到主机的路由
没有到主机的路由这种问题很常见,多数是由机器的防火墙没有关闭. Ubuntu 查看防火墙状态 ufw status 关闭防火墙 ufw disable centos6 查看防火墙状态 service ...
- HW2018校招研发笔试编程题
1. 数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间 ...
- 什么是js的严格模式
设立严格模式的原因: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度: - 为未 ...
- 全网最详细的Eclipse里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...
- 项目实战安装工具箱Busybox
1.Busybox是一个集成了100多个最常用Linux命令的软件工具箱,他在单一的可执行文件中提供了精简的UNIX工具集.该工具箱中包含了常见简单实用的工具如cat.echo.grep.find.m ...
- Webservice和EJB的区别
1. WebService可以说是跨平台的,因为它采用的是XML技术,说穿了就是把你的请求按照该WebServece的标准将参数传过去,然后服务器返回结果,当然了最重要的是参数的传递和结果的返回都是采 ...
- 【PyTorch深度学习60分钟快速入门 】Part4:训练一个分类器
太棒啦!到目前为止,你已经了解了如何定义神经网络.计算损失,以及更新网络权重.不过,现在你可能会思考以下几个方面: 0x01 数据集 通常,当你需要处理图像.文本.音频或视频数据时,你可以使用标准 ...
- Guava初识
1. 是什么 开源Java库,提供了用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法 2. 开发它的最初目的是什么? 方便编码,减少编码错误 3. 好处 标准化 - Gu ...
- base64编码的作用【转】
转自:https://www.zhihu.com/question/36306744/answer/71626823 X.509公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要 ...