[20171218]varchar2(4000)如何保存.txt
[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个字节表示列值长度.
[20171218]varchar2(4000)如何保存.txt的更多相关文章
- Oracle varchar2 4000
关于oracle varchar2 官方文档的描述 VARCHAR2 Data Type The VARCHAR2 data type specifies a variable-length char ...
- ASP.NET 保存txt文件
public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.Buffer ...
- 解决Android Studio 将String类型保存为.txt文件,按下button跳转到文件管理器(解决了保存txt文件到文件管理后,手机打开是乱码的问题)
不知道为什么保存文件后之前打开一直都OK,就突然打开看到变成乱码了,最后解决了 关键:outStream.write(finalContent.getBytes("gbk")); ...
- 微信硬件平台(九) 自己的服务器从微信获取token并保存txt
1安装crontab: yum install crontabs 说明: service crond start //启动服务 service crond stop //关闭服务 service cr ...
- MATLAB的SAVE命令动态批量保存TXT文件
1.使用save(): for i=1:6 str=[num2str(i),’.txt’]; m=[1 2; 3 4]; save(str,’m’,’-ascii’);%注意m的单引号,一定记得加上, ...
- String字符串存入数据库中超出最大长度(oracle varchar2 4000)?应合理分条存储(java实现-工具/方法)
问题描述 需要向数据库中保存数据,但某个字段内容长度过长(有中文.符号.英文),应该根据字符串内容与数据库存储上限合理设置储存方式. 解决思路 分条存储,即多条数据前n个字段一致,最后内容字段不同,下 ...
- matlab保存txt文件
save roadsurfacepointcloud.xyz -ascii roaddata2 %保存路面点云文件 roaddata2是变量.
- 知识点5 C++保存txt文件
简单示例 #include <windows.h> #include <fstream> #include <iostream> #include <stri ...
- [20190910]索引分支块中TERM使用什么字符表示.txt
[20190910]索引分支块中TERM使用什么字符表示.txt --//做索引块转储,一些root,分支节点出现TERM,从来没有关注使用字符表示,简单探究看看. 1.环境:SCOTT@test01 ...
随机推荐
- 采用太平洋AI的DINK框架一键运行3D点云识别,一键训练深度学习模型
DINK安装视频教程: http://fp-ai.com/video_details.html?id=072b030ba126b2f4b2374f342be9ed44 DINK一键启动视频教程: ...
- 在Vue中使用CodeMirror 格式显示错误 行数错乱 & 代码隐藏
项目需要在线展示和编辑Json文件,所以需要找一个代码编辑器,因为我们的项目直接使用的 vueAdmin-template 这个模板 json编辑器也是直接从 vue-element-admin 项目 ...
- python-UiAutomator学习&使用
一.安装 源码地址: https://github.com/xiaocong/uiautomator#basic-api-usages ①下载zip包,解压到本地目录下 ②进入对应目录下,执行 $su ...
- 六:理解控件的运行机制(例:基于WebControl命名空间的控件)
Control类的Render方法在WebControl类中被被分成三部分1:RenderBeginTag,呈现标签的开始2:RenderContents,呈现标签的内容3:RenderEndTag, ...
- 树莓派2B+安装Debain操作系统
写在前面 本篇文章基于当前树莓派官方最新提供的Debain操作系统进行操作,Linux内核版本 4.14.71.本篇文章内容涵盖SD卡写入官方Debain操作系统,开启SSH连接,修改语言环境,改变当 ...
- 通过 CLI 管理 Jenkins Server
Jenkins 内置的命令行接口允许管理员通过命令行工具访问并管理 Jenkins.这让我们可以通过脚本自动化的创建配置或执行任务,也就是把 Jenkins 中的配置代码化了.Jenkins 同时支持 ...
- 一、Windows下Git的安装与配置
一.下载Git安装包 1.打开Git的官方网站:https://git-scm.com/ 2.找到下载页:https://git-scm.com/downloads 3.找到Windows版本下载页面 ...
- ThreadLocalMap里Entry为何声明为WeakReference?
Java里,每个线程都有自己的ThreadLocalMap,里边存着自己私有的对象.Map的Entry里,key为ThreadLocal对象,value即为私有对象T.在spring MVC中,常用T ...
- JavaWeb学习 (六)————Servlet(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- Spark新手入门——1.Scala环境准备
主要包括以下三部分,本文为第一部分: 一. Scala环境准备 二. Hadoop集群(伪分布模式)安装 查看 三. Spark集群(standalone模式)安装 查看 因Spark任务大多由Sca ...