[20211110]oracle数字编码30.txt
--//链接http://www.itpub.net/thread-2144556-1-1.html,出现数字编码30的问题,理论讲不可能出现这样的编码。
--//以前也遇到类似的问题。http://www.itpub.net/thread-2095697-1-1.html
--//自己在测试环境模拟看看。
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 t ( x number);
insert into t values (0);
insert into t values (1);
insert into t values (2);
insert into t values (0);
commit ;
SCOTT@book> select rowid,t.* from t ;
ROWID X
------------------ -------
AABQdgAAEAAAALDAAA 0
AABQdgAAEAAAALDAAB 1
AABQdgAAEAAAALDAAC 2
AABQdgAAEAAAALDAAD 0
SCOTT@book> @ rowid AABQdgAAEAAAALDAAA
OBJECT FILE BLOCK ROW ROWID_DBA DBA TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
329568 4 707 0 0x10002C3 4,707 alter system dump datafile 4 block 707 ;
BBED> x /rx *kdbr[3]
rowdata[0] @8166
----------
flag@8166: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8167: 0x02
cols@8168: 1
col 0[1] @8169: 0x80
BBED> assign offset 8170=0x30;
ub1 rowdata[0] @8170 0x30
--//注意偏移要加1,前面1位是长度指示器。
BBED> sum apply
Check value for File 4, Block 707:
current = 0xb731, required = 0xb731
BBED> x /rx *kdbr[3]
rowdata[0] @8166
----------
flag@8166: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8167: 0x02
cols@8168: 1
col 0[1] @8169: 0x30
3.在sqlplus下执行:
SCOTT@book> select rowid,dump(x) c30 ,x from t ;
ROWID C30 X
------------------ ------------------------------ -----------
AABQdgAAEAAAALDAAA Typ=2 Len=1: 128 0
AABQdgAAEAAAALDAAB Typ=2 Len=2: 193,2 1
AABQdgAAEAAAALDAAC Typ=2 Len=2: 193,3 2
AABQdgAAEAAAALDAAD Typ=2 Len=1: 48 ###########
--//在toad下执行报如下错误。
OCI-22065: number to text translation for the given format causes overflow
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2841659/ ,如需转载,请注明出处,否则将追究法律责任。