oracle 各数据类型dump说明(三)


    这一节简单介绍 rowid,long,clob,nclob,long raw,blob,bfile类型.

环境:
os:centos 6.6
db version:11.2.0.4

#rowid 类型
#rowid,固定长度len=10,内部类型号Typ=69
#rowid的dump中,前4个字节是object_id,接下来4个字节是DBA(4个字节32位,前10位是relative file,后22位是block),最后2个字节是ROW
#rowid值是基于(A~Z a~z 0~9 + /)64进制,长度18,前6个字符对应object,接下来9个字符对应DBA(前3个字符是relative file,后6个字符是block),最后3个字符是row
select rowid,dump(rowid),dump(rowid,16) from scott.emp where rownum<2;
/*
ROWID                DUMP(ROWID)                                DUMP(ROWID,16)
AAAVREAAEAAAACXAAA    Typ=69 Len=10: 0,1,84,68,1,0,0,151,0,0    Typ=69 Len=10: 0,1,54,44,1,0,0,97,0,0
*/
#通过dump的值换算object_id,relative file number,block number,row number
object_id:to_number('00015444','xxxxxxxx')=87108
DBA4个字节32位,前10位是relative file,后22位是block,所以要将1,0,0,97转换为2进制,00000001,00000000,00000000,10010111,
所以relative file前10位0000000100=4,block后22位0000000000000010010111=151
row_number:to_number('0000','xxxx')=0
#可以看到dump的值换算后与实际的值相同
select rowid,dbms_rowid.rowid_object(rowid) object_id,dbms_rowid.rowid_relative_fno(rowid) relative_fno,
dbms_rowid.rowid_block_number(rowid) block_number,dbms_rowid.rowid_row_number(rowid) row_number
from scott.emp where rownum<2;
/*
ROWID                OBJECT_ID    RELATIVE_FNO    BLOCK_NUMBER    ROW_NUMBER
AAAVREAAEAAAACXAAA    87108        4                151                0
*/


#long类型
#long类型,可变长度,最大长度可达2G,存储在行内,内部类型号Typ=8
#建议用lob类型去替换还有的long类型

#long raw类型
#long raw类型,可变长度,最大长度可达2G,内部类型号Typ=24
#建议用blob类型去替换还有的long raw类型

#clob类型
#clob类型用NLS_CHARACTERSET字符集,内部类型号Typ=112

#nclob类型
#nclob类型用NLS_NCHAR_CHARACTERSET字符集,内部类型号Typ=112

#blob类型
#blob类型用于存储二进制数据,内部类型号Typ=113

#bfile类型
#bfile类型用于存储外部文件的信息,实际文件大小依赖于操作系统,内部类型号Typ=114






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28539951/viewspace-1986647/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28539951/viewspace-1986647/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值