Data Block Dump in Oracle – part 1 – how to dump block

July 7, 2009 by lianggang 1 Comment

Dump data block provides a backdoor for understanding Oracle RDBMS implementation.

Dump data block can be accomplished by issuing a command below, given you have known DATA FILE NAME and BLOCK ADDRESS in interest.

ALTER SYSTEM DUMP DATAFILE BLOCK ;

ALTER SYSTEM DUMP DATAFILE BLOCK MIN BLOCK MAX ;

1) If you know the object name, e.g. table/index name, you can query dba_objects/dba_segments to find the head block and start from there.

select HEADER_FILE, HEADER_BLOCK FROM DBA_SEGMENTS WHERE SEGMENT_NAME = AND SEGMENT_TYPE =

then dump the header to get details of the segment

ALTER SYSTEM DUMP DATAFILE BLOCK ;

2) If you are interested in a specific row of a table, e.g. how Oracle implements certain things, you can find the rowid and then translate rowid into physical address.

SELECT ROWID, COL1,… FROM TABLE WHERE …

Using DBMS_ROWID package to get FILE NUMBER and BLOCK ADDRESS,

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID),  DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM DUAL;

Then ALTER SYSTEM DUMP DATAFILE ….

3) If you get a DBA (Data Block Address – here), e.g. from some trace file in udump directory,  you can get FILE NUMBER and BLOCK ADDRESS using

SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(dba_number),

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(dba_number)

FROM DUAL;

then ALTER SYSTEM DUMP DATAFILE …

Here is an example for dumping a data block.

CREATE TABLE DUMP_EXAMPLE (

COL1 VARCHAR2(2000),

COL2 NUMBER,

COL3 TIMESTAMP);

INSERT INTO DUMP_EXAMPLE VALUES(

‘ABCDEFGHIJK’,1,SYSTIMESTAMP);

INSERT INTO DUMP_EXAMPLE VALUES(

‘ABCDEFGHIJK’,2,SYSTIMESTAMP+1);

COMMIT;

SELECT SEGMENT_TYPE, FILE_ID, BLOCK_ID, BLOCKS, RELATIVE_FNO FROM DBA_EXTENTS WHERE SEGMENT_NAME = ‘DUMP_EXAMPLE’;

–TABLE 4 161 8 4

then dump the header using ALTER SYSTEM DUMP DATAFILE 4 BLOCK 161

Now, dump the real data in interest.

SELECT ROWID, COL1, COL2, COL3 FROM DUMP_EXAMPLE

– AAAtyiAAEAAAACkAAA abcdefghijk 1 06.07.2009 18:03:12.177

– AAAtyiAAEAAAACkAAB ABCDEFGHIJK 2 07.07.2009 18:03:12.000

– dump the data block

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(‘AAAtyiAAEAAAACkAAA’) , DBMS_ROWID.ROWID_BLOCK_NUMBER(‘AAAtyiAAEAAAACkAAA’) FROM DUAL;

– 4, 164

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(‘AAAtyiAAEAAAACkAAB’) ,  DBMS_ROWID.ROWID_BLOCK_NUMBER(‘AAAtyiAAEAAAACkAAB’) FROM DUAL;

– 4, 164

ALTER SYSTEM DUMP DATAFILE 4 BLOCK 164;

You can find an example of dumping data blocks after knowing a Data Block Address from the post “Index Block Dump in Oracle”

Data Block Dump in Oracle – part 2 – how to read block dump file

? Original article Author: Liang's Blog

Sometime you look into dump/trace files in USER DUMP DESTINATION, aka udump, generated by Oracle to dig into issues, or you dig into problem by dumping some Oracle blocks, you may see something like

Start dump data blocks tsn: 4 file#: 4 minblk 172 maxblk 173

buffer tsn: 4 rdba: 0×010000ac (4/172)

scn: 0×0000.16b676dc seq: 0×01 flg: 0×04 tail: 0×76dc0601

frmt: 0×02 chkval: 0×78c7 type: 0×06=trans data

Object id on Block? Y

seg/obj: 0×2dca4  csc: 0×00.16b676dc  itc: 3  flg: E  typ: 1 – DATA

It is essential to understand who is who. Here I will explain a few attributes in the dump file, highlighted in BOLD.

rdba is the Data Block Address, which can be translated into FILE NUMBER and BLOCK ADDRESS using DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE to get the file number part of a data block address and

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK to get the block number part of a data block address.

SCN is the block’s SCN, together with flg: etc for transaction control and block cleaning.

seg/obj is the DATA_OBJECT_ID, which pointing to the seg$ location of the block.

type means the type of data block, where “trans data” means table data block or index block – coded as 0×06. There are more than 40 types, like 0×20 “FIRST LEVEL BITMAP BLOCK”. For more, you can visit “block types” by Julian

Data Block Dump in Oracle – part 3 – object_id, data_object_id, block clean up

? Original article Author: Liang's Blog

Data_object_id in the block dump files is different from object_id which can be found in dba_objects. But sometime, they are the same in value. Why?

Block header dump:  0×0041966a

Object id on Block? Y

seg/obj: 0×2dca9  csc: 0×00.16b6bab1  itc: 3  flg: -  typ: 1 – DATA

fsl: 0  fnx: 0×0 ver: 0×01

Every object in Oracle database has an unqiue object_id. If the object is a data object, table/index/lob/their partition/cluster, it will have a data_object_id that is not zero.

When you create a new object, Oracle will assign object_id with the maximum value of two queries.  If it is a data_object, like a table, Oracle will assign the same maximum value.

select max(object_id)+1 from dba_objects

select max(hwmincr)+1 from seg$

Therefore, you can will find object_id having the same value as data_object_id. But data_object_id can be different later, for example, after move or truncate table.

In the example below, moving a table to a different tablespace causes a new data_object_id assigned to the table. Usually, this new value is the max(hwmincr)+1 from seg$ at that point of time.

CREATE TABLE DUMP_EXAMPLE (

COL1 VARCHAR2(2000),

COL2 NUMBER,

COL3 TIMESTAMP);

SELECT OBJECT_ID, DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = ‘DUMP_EXAMPLE’;

– 70962 70962

ALTER TABLE DUMP_EXAMPLE MOVE TABLESPACE USERS;

SELECT OBJECT_ID, DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = ‘DUMP_EXAMPLE’;

– 70962 70963

Here is a question regarding block clean up. Would Oracle erases the data in the old location after moves it to a new tablespace? The answer is Not immediately. Here is an example.

I create a table, dump its data block; then I move the table to another tablespace, and then dump data block at the new location as well as the data block at the old location.

CREATE TABLE DUMP_EXAMPLE2 (

COL1 VARCHAR2(2000),

COL2 NUMBER,

COL3 TIMESTAMP);

SELECT OBJECT_ID, DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = ‘DUMP_EXAMPLE2′;

–70969 70969

INSERT INTO DUMP_EXAMPLE2 VALUES(’ABCDEFGHIJK’,1,SYSTIMESTAMP);

INSERT INTO DUMP_EXAMPLE2 VALUES(’ABCDEFGHIJK’,2,SYSTIMESTAMP+1);

INSERT INTO DUMP_EXAMPLE2 VALUES(’ABCDEFGHIJK’,3,SYSTIMESTAMP+2);

COMMIT;

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM DUMP_EXAMPLE2;

1 86610

1 86610

1 86610

ALTER SYSTEM DUMP DATAFILE 1 BLOCK 86610;

See dump trace file here.

——————————————————————————–

buffer tsn: 0 rdba: 0×00415252 (1/86610)

scn: 0×0000.000ef52f seq: 0×07 flg: 0×02 tail: 0xf52f0607

frmt: 0×02 chkval: 0×0000 type: 0×06=trans data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0×1C4E6000 to 0×1C4E8000

1C4E6000 0000A206 00415252 000EF52F 02070000  [....RRA./.......]

1C4E6010 00000000 00000001 00011539 000EF528  [........9...(...]

1C4E6020 00000000 00030002 00000000 00050007  [................]

1C4E6030 00000284 00C0058A 00200175 00002003  [........u. .. ..]

1C4E6040 000EF52F 00000000 00000000 00000000  [/...............]

1C4E6050 00000000 00000000 00000000 00030100  [................]

1C4E6060 0018FFFF 1F361F4E 00001F36 1F820003  [....N.6.6.......]

1C4E6070 1F4E1F68 00000000 00000000 00000000  [h.N.............]

1C4E6080 00000000 00000000 00000000 00000000  [................]

Repeat 250 times

1C4E7030 00000000 00010000 00010001 00000001  [................]

1C4E7040 00000000 00000001 00415252 00415252  [........RRA.RRA.]

1C4E7050 00000000 00000000 00000000 00000000  [................]

Repeat 244 times

1C4E7FA0 00000000 00000000 012C0000 42410B03  [..........,...AB]

1C4E7FB0 46454443 4A494847 04C1024B 076D7807  [CDEFGHIJK....xm.]

1C4E7FC0 0B13100B 0B03012C 44434241 48474645  [....,...ABCDEFGH]

1C4E7FD0 024B4A49 780703C1 100A076D 012C0B13  [IJK....xm.....,.]

1C4E7FE0 42410B03 46454443 4A494847 02C1024B  [..ABCDEFGHIJK...]

1C4E7FF0 076D780B 0B131009 C0DB6C29 F52F0607  [.xm.....)l..../.]

Block header dump:  0×00415252

Object id on Block? Y

seg/obj: 0×11539 csc: 0×00.ef528  itc: 2  flg: O  typ: 1 – DATA

fsl: 0  fnx: 0×0 ver: 0×01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0×01   0×0007.005.00000284  0×00c0058a.0175.20  –U-    3  fsc 0×0000.000ef52f

0×02   0×0000.000.00000000  0×00000000.0000.00  —-    0  fsc 0×0000.00000000

——————————————————————————–

ALTER TABLE DUMP_EXAMPLE2 MOVE TABLESPACE USERS;

You can see that a new data_object_id is assigned, while object_id stays the same. The new data_object_id matches to the new location recorded as sys.seg$

SELECT OBJECT_ID, DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = ‘DUMP_EXAMPLE2′;

– 70969 70970

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) ,  DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)

FROM DUMP_EXAMPLE2;

4 420

4 420

4 420

ALTER SYSTEM DUMP DATAFILE 1 BLOCK 86610;

Dump the block at the old location.

——————————————————————————–

buffer tsn: 0 rdba: 0×00415252 (1/86610)

scn: 0×0000.000ef52f seq: 0×07 flg: 0×06 tail: 0xf52f0607

frmt: 0×02 chkval: 0xbad1 type: 0×06=trans data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0×0C558200 to 0×0C55A200

C558200 0000A206 00415252 000EF52F 06070000  [....RRA./.......]

C558210 0000BAD1 00000001 00011539 000EF528  [........9...(...]

C558220 00000000 00030002 00000000 00050007  [................]

C558230 00000284 00C0058A 00200175 00002003  [........u. .. ..]

C558240 000EF52F 00000000 00000000 00000000  [/...............]

C558250 00000000 00000000 00000000 00030100  [................]

C558260 0018FFFF 1F361F4E 00001F36 1F820003  [....N.6.6.......]

C558270 1F4E1F68 00000000 00000000 00000000  [h.N.............]

C558280 00000000 00000000 00000000 00000000  [................]

Repeat 250 times

C559230 00000000 00010000 00010001 00000001  [................]

C559240 00000000 00000001 00415252 00415252  [........RRA.RRA.]

C559250 00000000 00000000 00000000 00000000  [................]

Repeat 244 times

C55A1A0 00000000 00000000 012C0000 42410B03  [..........,...AB]

C55A1B0 46454443 4A494847 04C1024B 076D7807  [CDEFGHIJK....xm.]

C55A1C0 0B13100B 0B03012C 44434241 48474645  [....,...ABCDEFGH]

C55A1D0 024B4A49 780703C1 100A076D 012C0B13  [IJK....xm.....,.]

C55A1E0 42410B03 46454443 4A494847 02C1024B  [..ABCDEFGHIJK...]

C55A1F0 076D780B 0B131009 C0DB6C29 F52F0607  [.xm.....)l..../.]

Block header dump:  0×00415252

Object id on Block? Y

seg/obj: 0×11539 csc: 0×00.ef528  itc: 2  flg: O  typ: 1 – DATA

fsl: 0  fnx: 0×0 ver: 0×01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0×01   0×0007.005.00000284  0×00c0058a.0175.20  –U-    3  fsc 0×0000.000ef52f

0×02   0×0000.000.00000000  0×00000000.0000.00  —-    0  fsc 0×0000.00000000

——————————————————————————–

ALTER SYSTEM DUMP DATAFILE 4 BLOCK 420;

——————————————————————————–

buffer tsn: 4 rdba: 0×010001a4 (4/420)

scn: 0×0000.000ef540 seq: 0×02 flg: 0×04 tail: 0xf5400602

frmt: 0×02 chkval: 0×3a1f type: 0×06=trans data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0×0C558200 to 0×0C55A200

C558200 0000A206 010001A4 000EF540 04020000  [........@.......]

C558210 00003A1F 00000001 0001153A 000EF53F  [.:......:...?...]

C558220 00000000 00320003 010001A1 00130001  [......2.........]

C558230 00000294 00000000 00000000 00000000  [................]

C558240 00000000 00000000 00000000 00000000  [................]

Repeat 2 times

C558270 00000000 00000000 00000000 00030100  [................]

C558280 0018FFFF 1F161F2E 00001F16 1F620003  [..............b.]

C558290 1F2E1F48 00000000 00000000 00000000  [H...............]

C5582A0 00000000 00000000 00000000 00000000  [................]

Repeat 495 times

C55A1A0 00000000 00000000 002C0000 42410B03  [..........,...AB]

C55A1B0 46454443 4A494847 04C1024B 076D7807  [CDEFGHIJK....xm.]

C55A1C0 0B13100B 0B03002C 44434241 48474645  [....,...ABCDEFGH]

C55A1D0 024B4A49 780703C1 100A076D 002C0B13  [IJK....xm.....,.]

C55A1E0 42410B03 46454443 4A494847 02C1024B  [..ABCDEFGHIJK...]

C55A1F0 076D780B 0B131009 C0DB6C29 F5400602  [.xm.....)l....@.]

Block header dump:  0×010001a4

Object id on Block? Y

seg/obj: 0×1153a csc: 0×00.ef53f  itc: 3  flg: E  typ: 1 – DATA

brn: 0  bdba: 0×10001a1 ver: 0×01 opc: 0

inc: 0  exflg: 0

——————————————————————————–

As you can see, when you move a table, the content of blocks in the table is copied to the new location, with a new data_object_id flag. Oracle updates the data directionary seg$ so that the object is associated to the new location. The content at the old location is NOT erased immediately. This mechanism is known as “delayed block clean up“.

Delayed block clean up also applies to “truncate”. When you truncate a table, Oracle just allocates new extents and points this new location. The old data is left intact at the old location. That is one of reasons that truncate is fast. It also indicates a way to peek into history data even the tables is already truncated.

Data Block Dump in Oracle – part 4 – vs. Transparent Data Encyption

? Original article Author: Liang's Blog

Now, let us look into Transparent Data Encryption in 11g implemention using data block dumps.

Transparent Data Encryption (TDE) can be used to encrypt table columns, or tablespaces (only in 11g) without requiring database users change their access code. In short, data in tables/indexes are stored in an encrypted format; when queried, Oracle will automatically decrypt these encrypted data and present to the users. Once setup, encrypt and decrypt happen on the fly, transparently.

Here, we study a few cases to answer these questions.

1) If I have a table on a not-encrypted tablespace and I encrypt its column, will all data in the column be safe now?

2) If I have a table and I move it to a encrypted tablespace, will all data in the column be safe now?

3) When I generate redo logs or archive logs, are they encrypted?

In the case 1, we see the answer is a NO to question1.

CREATE TABLE DUMP_EXAMPLE (

COL1 VARCHAR2(2000),

COL2 NUMBER,

COL3 TIMESTAMP) TABLESPACE USERS;

INSERT INTO DUMP_EXAMPLE VALUES(’CREDIT CARD NUMBER 1′,12345,SYSTIMESTAMP);

INSERT INTO DUMP_EXAMPLE VALUES(’CREDIT CARD NUMBER 2′,22345,SYSTIMESTAMP+1);

INSERT INTO DUMP_EXAMPLE VALUES(’CREDIT CARD NUMBER 3′,32345,SYSTIMESTAMP+2);

COMMIT;

ALTER TABLE DUMP_EXAMPLE MODIFY (COL1 ENCRYPT);

SELECT TABLE_NAME, COLUMN_NAME, ENCRYPTION_ALG FROM DBA_ENCRYPTED_COLUMNS;  — verify that the col1 is encrypted now.

DUMP_EXAMPLE  COL1 AES 192 bits key

Now, dump the data block.

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM DUMP_EXAMPLE;

ALTER SYSTEM DUMP DATAFILE 4 BLOCK 478;

27039F80 2C01D801 36012F02 03012C02 45524314  [...,./.6.,...CRE]

27039F90 20544944 44524143 4D554E20 20524542  [DIT CARD NUMBER ]

27039FA0 04C30433 78072E18 0110076D 012C3309  [3......xm....3,.]

27039FB0 52431403 54494445 52414320 554E2044  [..CREDIT CARD NU]

27039FC0 5245424D C3043220 072E1803 0F076D78  [MBER 2......xm..]

27039FD0 2C330901 43140301 49444552 41432054  [..3,...CREDIT CA]

27039FE0 4E204452 45424D55 04312052 2E1802C3  [RD NUMBER 1.....]

27039FF0 076D780B 3309010E 40B9561E C78E0605  [.xm....3.V.@....]

block_row_dump:

tab 0, row 0, @0×1f6f

tl: 41 fb: –H-FL– lb: 0×1  cc: 3

col  0: [20]  43 52 45 44 49 54 20 43 41 52 44 20 4e 55 4d 42 45 52 20 31

col  1: [ 4]  c3 02 18 2e

col  2: [11]  78 6d 07 0e 01 09 33 1e 56 b9 40

tab 0, row 1, @0×1f4a

tl: 37 fb: –H-FL– lb: 0×1  cc: 3

col  0: [20]  43 52 45 44 49 54 20 43 41 52 44 20 4e 55 4d 42 45 52 20 32

col  1: [ 4]  c3 03 18 2e

col  2: [ 7]  78 6d 07 0f 01 09 33

tab 0, row 2, @0×1f25

tl: 37 fb: –H-FL– lb: 0×1  cc: 3

col  0: [20]  43 52 45 44 49 54 20 43 41 52 44 20 4e 55 4d 42 45 52 20 33

col  1: [ 4]  c3 04 18 2e

col  2: [ 7]  78 6d 07 10 01 09 33

end_of_block_dump

As you can see, the column is marked as encrypted, but the existing data are not encrypted.  That would become an issue if you are not aware of this implementation.

What will happen to the new records inserted?

INSERT INTO DUMP_EXAMPLE VALUES(’CREDIT CARD NUMBER 4′,42345,SYSTIMESTAMP+3);

COMMIT;

DBE2130 4403022C 4114097B 486A82F2 98C4247C  [,..D{..A..jH|$..]

DBE2140 21F6778B 511B1456 B544614C AEA2515F  [.w.!V..QLaD._Q..]

DBE2150 10CB765B 96D17F19 58D77344 B0ECD329  [[v......Ds.X)...]

DBE2160 0DBF64F3 D2124302 680A6666 487D69E2  [.d...C..ff.h.i}H]

DBE2170 8030E715 567A3D96 1802C304 6D780B2E  [..0..=zV......xm]

DBE2180 09010E07 B9561E33 03002C40 45524314  [....3.V.@,...CRE]

DBE2190 20544944 44524143 4D554E20 20524542  [DIT CARD NUMBER ]

DBE21A0 04C30433 78072E18 0110076D 002C3309  [3......xm....3,.]

DBE21B0 52431403 54494445 52414320 554E2044  [..CREDIT CARD NU]

DBE21C0 5245424D C3043220 072E1803 0F076D78  [MBER 2......xm..]

DBE21D0 2C330901 43140300 49444552 41432054  [..3,...CREDIT CA]

DBE21E0 4E204452 45424D55 04312052 2E1802C3  [RD NUMBER 1.....]

DBE21F0 076D780B 3309010E 40B9561E C7960601  [.xm....3.V.@....]

Yes, new records are encrypted.

As you can see, further actions are needed to protect/encrypt old records of a column. To encrypt old records, you can move the table using “alter table”.

(Case 2) If a table is moved to encrypted tablespace, the content will be encrypted. Data block dump shows that they are not directly readable.

CREATE SMALLFILE TABLESPACE “ENCRYPTBS” DATAFILE ‘\Path to directory\ENCRYPTBS’ SIZE 2M AUTOEXTEND ON NEXT 1K MAXSIZE 10M  ENCRYPTION USING ‘AES192′ DEFAULT STORAGE(ENCRYPT);

ALTER TABLE DUMP_EXAMPLE MOVE TABLESPACE ENCRYPTBS;

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM DUMP_EXAMPLE;

ALTER SYSTEM DUMP DATAFILE 7 BLOCK 12;

Block dump from disk:

Encrypted block <10, 29360140> content will not be dumped. Dumping header only.

buffer tsn: 10 rdba: 0×01c0000c (7/12)

scn: 0×0000.0011cde3 seq: 0×02 flg: 0×14 tail: 0xcde30602

frmt: 0×02 chkval: 0×4def type: 0×06=trans data

End dump data blocks tsn: 10 file#: 7 minblk 12 maxblk 12

As you can see the encypted block can not be dumped.

(Case 3) Find out records in redo/archive logs for DMLs on encrypted tables. Here is an example.

Insert a row, redo is generated. Now, find current redo log and dump the redo log.

INSERT INTO DUMP_TDE_EXAMPLE VALUES(’CREDIT CARD NUMBER 4′,42345,SYSTIMESTAMP+4);

COMMIT;

SELECT L.STATUS, LF.MEMBER FROM V$LOG L JOIN V$LOGFILE LF ON L.GROUP#=LF.GROUP#

WHERE L.STATUS = ‘CURRENT’;

alter system dump logfile ‘logfile_number_location’;

Now, ready to look into the redo dump and find out whether data are encrypted. I first calculate DBA (Data Block Address) of the insert value using data file number and block#.

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM DUMP_EXAMPLE;

5 472

SELECT  DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS(5,472) FROM DUAL; — in decimal

SELECT TO_CHAR(DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS(5,472), ‘XXXXXXXXX’) FROM DUAL;  — in hex

Search dump files for the block address. What I see is data in encrypted format. Like,

INSERT INTO DUMP_EXAMPLE VALUES(’CREDIT CARD NUMBER 5′,52345,SYSTIMESTAMP+5);

COMMIT;

If unencrypted, the text can be read

CHANGE #1 TYP:0 CLS: 1 AFN:4 DBA:0×010001d7 OBJ:71094 SCN:0×0000.0011a82d SEQ:  1 OP:11.2

KTB Redo

op: 0×01  ver: 0×01

compat bit: 4 (post-11) padding: 0

op: F  xid:  0×0004.017.000002fe    uba: 0×00c006ca.0187.1a

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0×00000000  bdba: 0×010001d7  hdba: 0×010001d3

itli: 1  ispac: 0  maxfr: 4858

tabn: 0 slot: 0(0×0) size/delt: 37

fb: –H-FL– lb: 0×1  cc: 3

null: —

col  0: [20]  43 52 45 44 49 54 20 43 41 52 44 20 4e 55 4d 42 45 52 20 35

col  1: [ 4]  c3 06 18 2e

col  2: [ 7]  78 6d 07 13 01 37 06

If TDE is enabled, the redo data is encrypted. See the different the col0 values above and below for the same inserted record.

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0×00000000  bdba: 0×01c00010  hdba: 0×01c0000b

itli: 1  ispac: 0  maxfr: 4858

tabn: 0 slot: 0(0×0) size/delt: 85

fb: –H-FL– lb: 0×1  cc: 3

null: —

col  0: [68]

a4 5d 94 29 07 b6 76 31 d2 10 a8 79 a4 04 4c d3 8f f5 df c7 b0 7d bc 52 95

c6 f7 1b f5 8a da d4 60 3a 7f 3b 7e dc 6a 3d f6 23 e6 6a b2 77 b3 9e 17 8a

58 a9 43 97 45 b4 c2 2c bc bb 1b 63 9c 75 db ea b6 f6

col  1: [ 4]  c3 06 18 2e

col  2: [ 7]  78 6d 07 13 01 3a 08

? Original article Author: Liang's Blog

oracle 内存翻译,dumping_oracle_blocks翻译(二)相关推荐

  1. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  2. 并发译文翻译计划(二)

    Doug Lea 的文献 Synchronizer Framework  译者:ClarenceAu (已翻译完成,在校对) Fork/Join  译者:Alex(陆续发表中) Java Concur ...

  3. Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(二)

    Paper:自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语的分类和定义>官方英文原文翻译与解读(二) 目录 自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语 ...

  4. Highcharts翻译系列十二:gauge测量图

    Highcharts翻译系列十二:gauge测量图 说明 测量图需要highcharts-more.js的支持 属性 参数 描述 默认值 animation 动画 true color 主要颜色或序列 ...

  5. 计算机在我们日常生活中越来越重要英语翻译,职高英语翻译练习 翻译练习二...

    职高英语翻译练习 翻译练习二 职高英语翻译练习翻译练习二 1. 他每天乘公交车上学 2. 请你把门打开好吗? 3. 我期盼着你的来信 4. 昨天,他动身去北京了 5. 当我们正兴致勃勃地谈论着,老师制 ...

  6. 263-虚拟内存的地址翻译

    虚拟内存的地址翻译 地址翻译 形式上来说,地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射, MAP:VAS->PAS U ∅ 这里 下图 ...

  7. ORACLE 内存管理 之二 PGA v$pgastat

    ORACLE 内存管理 PGA v$pgastat PGA 自动管理 需要设置两个基本点参数 : WORKAREA_SIZE_POLICY=AUTO,默认就是AUTO, PGA_AGGREGATE_T ...

  8. oracle 内存分配和调优 总结

    一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且google很多下.现在记录下来,做下备份.  一.概述:                   orac ...

  9. Oracle 内存参数设置

    2019独角兽企业重金招聘Python工程师标准>>> oracle 实例结构: oracle实例 = 内存结构+进程结构 oracle进程=服务进程+用户进程 主要的后台进程有: ...

  10. ORACLE内存结构简介

    ORACLE数据库作为世界上一款功能强大的数据库管理软件,功能体系特别庞大.我们有必要对它的每一部分学习了解,然后才从全局的角度进行有效把握.我们会着重从理论基础体系角度再逐步到实战应用.实际上,如果 ...

最新文章

  1. Python符号计算库sympy使用笔记
  2. 特征缩放 feature scaling
  3. 5 怎么上下分屏_oppo的最新手机reno5系列怎么样
  4. MySQL分组查询的介绍
  5. linux 命令 语法,linux常用命令及语法
  6. hibernate 乐观锁与悲观锁使用
  7. JAVA垃圾回收机制勘误
  8. 人物传记——周小川、李稻葵(央行智囊团)
  9. DM9000驱动分析之初始化
  10. 蓝牙AVRCP协议分析
  11. 如何利用ICEPAK进行热仿真分析,简单易学
  12. 玩赚亚丁号---薅羊毛专业版
  13. 计算机word保存如何操作,如何保存WORD文档内容???急
  14. autojs 开发文档集合
  15. [S]O-10-2 青蛙跳台阶问题
  16. 2021年焊工(初级)免费试题及焊工(初级)实操考试视频
  17. 知识图谱(Knowledge Graph)之综述理解
  18. Maven assembly打包文件被覆盖问题
  19. 世界末日那天,我们才能拿到Lytro的光场相机
  20. 华为鸿蒙系统2021年上市,2021年,华为开始规划自有操作系统“鸿蒙”。

热门文章

  1. 经验模态分解python_EMD经验模态分解
  2. 第七次人口普查数据可视化分析实战——基于pyecharts(含数据和源码)
  3. 最全Java后端技术栈
  4. 在开放环境的步态识别:一个基准(三)
  5. MindMaster Pro 7.3中文版 — 亿图思维导图
  6. Juphoon RTC年度成绩单,请查收!
  7. 游戏建模常用软件以及模型制作流程
  8. AutoCAD2018_注释及标注
  9. python卸载pip_Python 包 卸载方法
  10. 嵌入式软件可靠性设计