深入解析下oracle char和varchar2底层存储方式

ops/2024/11/28 8:58:04/

    oracle数据库中,char和varchar2数据类型用来存储字符数据。char类型一旦定义多大,那么它就分配多少字节空间;varchar2类型定义多大,代表它可以扩展的最大大小为多大,一开始空间根据使用来决定。字符数据存储在oracle表列中,对于使用者,不需要去管它底层的存储格式是怎样。但对于想深入学习数据库的人来说,还是可以去了解下其具体的存储格式是这样的。

一、环境搭建

1.1,创建表

    我们先创建一个测试表t_code,并插入数据:

1.2,查看表段区信息

 

1.3,根据数据rowid,获取数据文件号和数据块id:

 

二、数据存储格式分析

2.1,dump数据块

    我们先把存储数据的数据块进行dump,便于后续的存储格式比对。

2.2,dump文本数据

    我们通过oracle内置的dump函数,进行name和bj字段的底层存储数据的查看:

(16进制格式)

(10进制)

2.3,比对

    我们查看下dump数据块出来的数据,比对下前端dump函数出来的数据,对比下:

    可以看到,两边数据一样

三、说明

    oracle内部,varchar2数据类型的内部代表码为1,也就是上面图中的TYP=1;char数据类型的内部代表码为96,也就是上面图中的TYP=96。根据这个内部码,oracle内部程序就知道该表该列的类型具体为什么。

    而len=5,就告知了这个字段存储所占为5个字节。

我们写个简单的c语言程序,直接解析下上述的数据:

t_oracle(){int a[] = {116,97,98,108,101};printf("tale t_code's first row column name is: ");for(int i=0;i<5;i++){printf("%c",a[i]);}printf("\n");printf("tale t_code's first row column bj is: ");int bj = 49;printf("%c",bj);
}int main() {t_oracle();}

    可以看到,我们直接就获取到第一行的name字段值为“table”,而bj字段值为“1"。深入想想,我们是否可以自己程序去读取数据文件块中的存储数据? 


http://www.ppmy.cn/ops/137310.html

相关文章

Hot100 - 除自身以外数组的乘积

Hot100 - 除自身以外数组的乘积 最佳思路&#xff1a; 此问题的关键在于通过两次遍历&#xff0c;分别计算从左侧和右侧开始的累积乘积&#xff0c;以此避免使用额外的除法操作。 时间复杂度&#xff1a; 该算法的时间复杂度为 O(n)&#xff0c;因为我们只需要遍历数组两次。…

【风水】-- 如何挑选吉日入住

目录 1. 五行与方位的配合 2. 八卦与方位的搭配 3. 选择吉日的原则 4. 阴阳与天干地支的匹配 5. 选择吉日的具体步骤 6. 个人八字与吉日的结合 总结 挑选入住新房或旧房的吉日是风水学中的一项重要传统&#xff0c;旨在通过选择合适的时机来调整和增强居住者的运势。从风…

【漏洞复现】CVE-2022-24697

漏洞信息 NVD - CVE-2022-24697 Kylin’s cube designer function has a command injection vulnerability when overwriting system parameters in the configuration overwrites menu. RCE can be implemented by closing the single quotation marks around the parameter…

理解并使用Linux内核XArray

理解并使用Linux内核XArray 1. 引言 大家好&#xff0c;今天咱们来聊聊Linux内核中的一个强大工具——XArray。如果你对数据结构感兴趣&#xff0c;或者正在开发内核模块&#xff0c;那么这篇文章绝对适合你。我会尽量用轻松幽默的方式带你走进XArray的世界。 2. XArray简介…

java——spring中事务怎么实现的?原理是什么?

在Spring框架中&#xff0c;事务管理是一个核心功能&#xff0c;它提供了两种主要的事务实现方式&#xff1a;声明式事务和编程式事务。下面分别介绍这两种实现方式及其底层原理。 一、Spring事务的实现方式 声明式事务 声明式事务管理通过注解或XML配置的方式&#xff0c;将事…

第十三章 使用 DHCP 动态管理主机地址

1. 动态主机配置协议 动态主机配置协议&#xff08;DHCP&#xff09;是一种基于 UDP 协议且仅限于在局域网内部使用的网络协议&#xff0c;主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中&#xff0c;用途是为局域网内部的设备或网络供应商自动分配 IP 地…

【Leetcode Top 100】240. 搜索二维矩阵 II

问题背景 编写一个高效的算法来搜索 m n m \times n mn矩阵 m a t r i x matrix matrix中的一个目标值 t a r g e t target target。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 数据约束 m m a t r i x . l e n g t h m …

HarmonyOS4+NEXT星河版入门与项目实战(22)------动画(属性动画与显示动画)

文章目录 1、属性动画图解2、案例实现-小鱼移动游戏1、代码实现2、代码解释3、资源图片4、实现效果3、显示动画4、案例修改-显示动画5、总结1、属性动画图解 这里我们用一张完整的图来汇整属性动画的用法格式和使用的主要属性范围,如下所示: 2、案例实现-小鱼移动游戏 1、代…