[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
--//現在有正常顯示回來.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2155631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20160904]在記憶體修改資料.txt記憶體
- [20140624]bbed修改資料記錄.txt
- [20160526]bbed修改資料記錄(不等長).txt
- [20140624]bbed修改資料記錄(不等長).txt
- [20160906]修改口令在記憶體中.txt記憶體
- 【BBED】使用bbed修改數字型別資料型別
- 【BBED】使用bbed修改字元型別資料字元型別
- [20190104]bbed手動修改資料.txt
- [20170412]bbed隱藏資料記錄.txt
- [20140928]資料庫建立在記憶體中.txt資料庫記憶體
- 【BBED】使用bbed 修改日期型別的資料型別
- oracle bbed修改資料塊的例子Oracle
- bbed 之資料修改Ktbbh(Ktbbh資料)
- [20160405]bbed修改檔案頭.txt
- [20170419]bbed探究資料塊.txt
- Jmeter:修改記憶體配置JMeter記憶體
- 記憶體資料庫記憶體資料庫
- android 模擬器 記憶體修改, 用winshark 抓包,修改資料包Android記憶體
- Tomcat修改記憶體配置Tomcat記憶體
- 修改/dev/shm共享記憶體dev記憶體
- 修改oracle記憶體佔用Oracle記憶體
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- Apache Arrow 記憶體資料Apache記憶體
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- 27_bbed實戰(1)_修改資料內容
- [20210906]bbed讀取資料塊(bbed-wrap.sh).txt
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 修改後的 OpenJDK 記憶體模型JDK記憶體模型
- ptrace attach 修改程序記憶體記憶體
- double型別資料在記憶體中中儲存格式型別記憶體
- 【記憶體資料庫】TimesTen記憶體資料庫
- 新書《記憶體資料管理》新書記憶體
- [20190104]bbed手工插入資料.txt
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- eclipse 增加記憶體的方法、修改配置檔案 記憶體優化Eclipse記憶體優化
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 修改OracleLinux共享記憶體的大小OracleLinux記憶體
- LINUX HUGEPAGES在大記憶體資料庫中的應用Linux記憶體資料庫