[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190104]bbed手動修改資料.txt
- [20181204]bbed修改問題.txt
- [20190104]bbed手工插入資料.txt
- [20210906]bbed讀取資料塊(bbed-wrap.sh).txt
- [20210318]bbed讀取資料塊.txt
- android 模擬器 記憶體修改, 用winshark 抓包,修改資料包Android記憶體
- [20210831]bbed讀取資料塊6.txt
- [20210930]bbed恢復刪除的資料.txt
- [20210323]bbed讀取資料塊5.txt
- [20210318]bbed讀取資料塊2.txt
- [20210319]bbed讀取資料塊3.txt
- Tomcat修改記憶體配置Tomcat記憶體
- [20241021]使用gdb檢視修改記憶體地址以及相關值.txt記憶體
- [20181122]bbed人為修改事務提交標誌.txt
- 27_bbed實戰(1)_修改資料內容
- [20210126]探究oracle記憶體分配.txtOracle記憶體
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- 【記憶體資料庫】TimesTen記憶體資料庫
- [20210930]bbed讀取資料塊7 fffext.sh.txt
- ptrace attach 修改程序記憶體記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- [20201110]伺服器記憶體不足.txt伺服器記憶體
- [20190213]學習bbed-恢復刪除的資料.txt
- [20220223]bbed讀取資料塊mssm與assm 2.txtSSM
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- 【BBED】使用BBED修改資料檔案SCN,使該檔案從offline轉變為online
- [20191114]linux記憶體分配的討論.txtLinux記憶體
- [20190104]ipcs檢視共享記憶體段.txt記憶體
- [20210126]探究oracle記憶體分配3.txtOracle記憶體
- [20210126]探究oracle記憶體分配4.txtOracle記憶體
- [20210401]使用bbed讀取資料塊恢復注意6.txt
- 記憶體中的資料儲存記憶體
- 達夢記憶體調整及修改方法記憶體
- 【kingsql分享】使用BBED修改Oracle資料檔案頭推進SCNSQLOracle
- [20180619]bbed verify問題.txt
- [20231008]bbed探究lob段.txt
- [20220223]bbed ktbbh.ktbbhict.txt
- [20210920]bbed的assign命令.txt