[20171218]varchar2(4000)如何保存.txt

--//以前写的,不知道为什么被删除了,现在补上.

如果一行能被存储于一个数据块(data block)中,那么其行头(row header)所需容量将不少于 3 字节(byte)。在行头信息之后依次
储存的是各列的列长(column length)及列值(column value)。列长存储于列值之前,如列值不超过250 字节,那么 Oracle使用1字节存
储其列长;如列值超过 250 字节,则使用 3 字节存储其列长。列数据(column data)所需的存储空间取决于此列的数据类型(datatype)。
如果某列的数据类型为变长(variable length)的,那么存储此列值所需的空间可能会随着数据更新而增长或缩小。

--//测试看看oracle如何存储列值超过250字节的.

1.建立测试:
SCOTT@book> @ &r/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

SCOTT@book> create table t1(v1 varchar2(4000));
Table created.

insert into t1 values(rpad('1',250,'A'));
insert into t1 values(rpad('2',251,'B'));
insert into t1 values(rpad('2',4000,'C'));
commit ;

SCOTT@book> select rowid,substr(v1,1,2) from t1;
ROWID              SUBS
------------------ ----
AAAWJvAAEAAAAIkAAA 1A
AAAWJvAAEAAAAIkAAB 2B
AAAWJvAAEAAAAIkAAC 2C

SCOTT@book> @ &r/rowid AAAWJvAAEAAAAIkAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     90735          4        548          0  0x1000224           4,548                alter system dump datafile 4 block 548 ;

SCOTT@book> alter system checkpoint;
System altered.

2.使用bbed查看:
BBED> set dba  4,548
        DBA             0x01000224 (16777764 4,548)

BBED> x /rc *kdbr[0]
rowdata[4263]                               @7934
-------------
flag@7934: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@7935: 0x01
cols@7936:    1

col  0[250] @7937: 1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...(太长,截去)

BBED> dump /v count 64
 File: /mnt/ramdisk/book/users01.dbf (4)
 Block: 548                               Offsets: 7934 to 7997                            Dba:0x01000224
-----------------------------------------------------------------------------------------------------------
 2c0101fa 31414141 41414141 41414141 41414141 41414141 41414141 41414141 l ,...1AAAAAAAAAAAAAAAAAAAAAAAAAAA
 41414141 41414141 41414141 41414141 41414141 41414141 41414141 41414141 l AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
<32 bytes per line>

--//2c 表示flag,01 表示lock ,01 表示 cols. 0xfa= 250.长度<=250,Oracle使用1字节存储其列长.继续看下面的记录:

BBED> x /rc *kdbr[1]
rowdata[4006]                               @7677
-------------
flag@7677: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@7678: 0x01
cols@7679:    1

col  0[251] @7680: 2BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ...(snip..)

BBED> dump /v count 64
 File: /mnt/ramdisk/book/users01.dbf (4)
 Block: 548                               Offsets: 7677 to 7740                            Dba:0x01000224
-----------------------------------------------------------------------------------------------------------
 2c0101fe fb003242 42424242 42424242 42424242 42424242 42424242 42424242 l ,.....2BBBBBBBBBBBBBBBBBBBBBBBBB
 42424242 42424242 42424242 42424242 42424242 42424242 42424242 42424242 l BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
 <32 bytes per line>

--//前面2c0101 不再描述.0xfe=254 ,使用fe表示超过长度250. 后面0x00fb(倒过来)=251表示字符串长度.继续看:

BBED> x /rc *kdbr[2]
rowdata[0]                                  @3671
----------
flag@3671: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@3672: 0x01
cols@3673:    1

col 0[4000] @3674: 2CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.... (snip)

BBED> dump /v count 64
 File: /mnt/ramdisk/book/users01.dbf (4)
 Block: 548                               Offsets: 3671 to 3734                            Dba:0x01000224
-----------------------------------------------------------------------------------------------------------
 2c0101fe a00f3243 43434343 43434343 43434343 43434343 43434343 43434343 l ,.....2CCCCCCCCCCCCCCCCCCCCCCCCC
 43434343 43434343 43434343 43434343 43434343 43434343 43434343 43434343 l CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

<32 bytes per line>

--//0xfe=254 ,使用fe表示超过长度250. 后面0x0fa0(倒过来)=4000,表示字符串长度.

SCOTT@book> @ &r/16to10 0fa0
16 to 10 DEC
------------
        4000

总结:
1.如果列值长度小于等于250字节,Oracle使用1字节存储其列长.内容为字段的长度.
2.如果列值长度超过250字节,则使用3字节存储其列长。前面1个字节使用0xfe(表示超过250),后面2个字节表示列值长度.

转载于:https://www.cnblogs.com/lfree/p/8057828.html

[20171218]varchar2(4000)如何保存.txt相关推荐

  1. python numpy读取数据_python使用numpy读取、保存txt数据的实例

    1.首先生成array数组 import numpy as np a = np.random.rand(5,5) print(a) 结果: array([[0.17374613, 0.87715267 ...

  2. java 保存的代码怎么写_java实现写入并保存txt文件的示例代码

    java实现写入并保存txt文件的示例代码 发布时间:2020-04-30 15:14:07 来源:亿速云 阅读:110 作者:小新 这篇文章主要为大家详细介绍了java实现写入并保存txt文件的示例 ...

  3. js dojo 保存txt文件

    js下保存txt文件,需要html5支持 创建一个a标签 <a data-dojo-attach-point="downloadNode" download="fi ...

  4. Python保存TXT文件

    python保存txt文件时经常会出现各种问题,下面是常用的txt文件保存方法 1.保存为 'ANSI' 格式 1.去掉不能转化的字符: self.file.write(content.replace ...

  5. Oracle varchar2 4000

    关于oracle varchar2 官方文档的描述 VARCHAR2 Data TypeThe VARCHAR2 data type specifies a variable-length chara ...

  6. 利用python保存txt文件的指定行/前n行

    ** 利用python保存txt文件的指定行/前n行-等 1.txt文件,每隔n行保存 originPath='open.txt' savePath='save.txt' # 每隔多少行保存一次 l= ...

  7. Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)

    前言 今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...

  8. Ubuntu 环境 中 python读取和保存 .txt 、.csv、.json文件数据并绘制图形

    一.数据格式 二.程序 read_imu.py # coding=UTF-8import cv2 import numpy as np import matplotlib.pyplot as plt ...

  9. oracle修改表字段从varchar2(4000)为clob

    oracle修改表字段从varchar2(4000)为clob (原因varchar2(4000)不够用了) 1.临时表存数据 2.删原表数据,修改字段类型为long,才能再改为clob 3.导回数据 ...

  10. 微信获取token服务器处理,微信硬件平台(九) 自己的服务器从微信获取token并保存txt...

    1安装crontab: yum install crontabs 说明: service crond start //启动服务 service crond stop //关闭服务 service cr ...

最新文章

  1. 学习html5系列之比较典型的div滥用
  2. 图论 ---- F. Useful Edges(不等式移项优化预处理 + 路径和简单路径的区别 + 最短路)
  3. To connect to files.phpmyadmin.net insecurely, use `--no-check-certificate‘
  4. CMAKE_C_COMPILER not set
  5. rhel5下限值用户使用su切换身份
  6. standalone vue initialization process - Vue应用的初始化过程
  7. delete优化_深入理解JIT和编译优化
  8. BootStrap修改modal模态框的宽度
  9. 通过cmd上传文件ftp服务器,通过cmd完成FTP上传文件操作
  10. jq ajax传参的两种方式
  11. 图七:用思维脑图,结构化你的知识体系
  12. HRT:使用Huge Pages进行低延迟优化
  13. 部分手机虚拟键盘的适配问题
  14. iOS 上的FlexBox布局
  15. 高级OS(十五) - 中断机制以及中断上下部运行和内核代码分析
  16. C语言每日一练——第73天:谁是窃贼问题
  17. 今天开通了CNSD博客
  18. pinyin4j获取多音字首字母同时保留非中文字符
  19. Open Euler学习
  20. ANT DESIGN VUE upload 上传excel (使用upliad组件,上传excel到页面表格)

热门文章

  1. PHP上传图片重命名6种方案
  2. 再读simpledb 之 SQL语句解析(1)
  3. 【转】C# 中@符号在字符串中的作用
  4. LDR_DATA_TABLE_ENTRY结构得不到完整路径?
  5. vue+vue-cli2+webpack配置资源cdn
  6. 京东联盟开发(10)——轮询获取数据
  7. WPF 嵌入字体文件
  8. 软件工程项目需求分析
  9. BZOJ 2440 【中山市选2011】 完全平方数
  10. BLOB:大数据,大对象,在数据库中用来存储超长文本的数据,例如图片等