深入解析下oracle char和varchar2底层存储方式
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"。深入想想,我们是否可以自己程序去读取数据文件块中的存储数据?
相关文章:

深入解析下oracle char和varchar2底层存储方式
oracle数据库中,char和varchar2数据类型用来存储字符数据。char类型一旦定义多大,那么它就分配多少字节空间;varchar2类型定义多大,代表它可以扩展的最大大小为多大,一开始空间根据使用来决定。字符数据存储在oracle表…...

Angular v19 (三):增量水合特性详解 - 什么是水合过程?有哪些应用场景?与 Qwik 相比谁更胜一筹?- 哪个技术好我就学哪个,这就是吸心大法吧
Angular在其最新版本 v19 中引入了增量水合(Incremental Hydration)这一特性。这一更新引发了开发者们广泛的讨论,特别是在优化首屏加载速度和改善用户体验方面。本文将详解水合过程的概念、增量水合的应用场景,以及它与类似框架如…...

宠物空气净化器推荐2024超详细测评 希喂VS霍尼韦尔谁能胜出
最近有粉丝一直在评论区和后台探讨宠物空气净化器是不是智商税的问题,有人认为宠物空气净化器肯定不是智商税,有些人认为将其购回家就是个没用的东西,还占地方,双方各有自己的观点。 其实宠物空气净化器和普通的空气净化器是有很大…...
一线、二线、三线技术支持
一线、二线、三线技术支持是企业IT支持体系中常见的分工模式,目的是高效解决技术问题,同时优化资源利用。以下是它们的具体定义和职责划分: 1. 一线技术支持 (Tier 1/Level 1 Support) 定义: 一线技术支持是直接面对最终用户或客…...

智截违规,稳保安全 | 聚铭视频专网违规外联治理系统新品正式发布
“千里之堤,毁于蚁穴”。 违规外联作为网络安全的一大隐患, 加强防护已刻不容缓。 这一次, 我们带着全新的解决方案来了 ——聚铭视频专网违规外联治理系统, 重磅登场!...
FFmpeg 的 codec 和 format
很多人容易混淆这二者区别 pcm_alaw, 这是 codec wav, 这是 format ffmpeg -formats 打印支持的所有 format ffmpeg -codecs 打印支持所有的 codec ffmpeg -i in.wav -y -ac 1 -ar 8000 -acodec pcm_alaw -f wav out.wav 把 in.wav 转换成 out.wav rtp/rtsp 等ÿ…...

分布式锁的实现原理
作者:来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mu…...
怎样提高自己的能量
能量转换的基本原则是让别人需要你,而不是你去求对方。别人需要你,你的能量就高,你去求别人你的能量就低。 怎样提高自己的能量? 第一,留意你的气场和格局。气场不是说你表现的多么霸道,而是你的信念、决心…...

ospf协议(动态路由协议)
ospf基本概念 定义 OSPF 是典型的链路状态路由协议,是目前业内使用非常广泛的 IGP 协议之一。 目前针对 IPv4 协议使用的是 OSPF Version 2 ( RFC2328 );针对 IPv6 协议使用 OSPF Version 3 ( RFC2740 )。…...

【娱乐项目】竖式算术器
Demo介绍 一个加减法随机数生成器,它能够生成随机的加减法题目,并且支持用户输入答案。系统会根据用户输入的答案判断是否正确,统计正确和错误的次数,并显示历史记录和错题记录。该工具适合用于数学练习,尤其适合练习基…...
Qt中模拟鼠标消息并与系统鼠标消息进行区分
功能使用场景: 开发一个教学系统,包含了教师端、学生端,并且教师端支持示教功能。此时,学生端的鼠标、键盘不响应系统事件,但需要响应教师端发过来的鼠标移动、按下消息。 因为共享页面相同,为了提高局域…...
实时数据开发 | 一文理解Flink窗口机制
窗口操作在流处理和批处理之间起到了桥梁的作用。 Flink引擎本质上是流式引擎,认为批处理是流处理的一个特例。因此,通过窗口将流数据划分为有限大小的集合,使得在这些有界的数据集上可以进行批处理风格的计算。 通过配置窗口的参数…...
MFC 自定义树控件:树节点的样式与交互
在本教程中,将介绍如何在 MFC 应用程序中使用树控件 (CTreeCtrl) 进行高级定制,包括设置字体、颜色、徽章、图标、节点的高度等。通过这些自定义设置,可以显著提升用户界面的交互性和视觉效果。 1. 树控件基本设置 首先,我们需要…...
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-loss.py
loss.py ultralytics\utils\loss.py 目录 loss.py 1.所需的库和模块 2.class VarifocalLoss(nn.Module): 3.class FocalLoss(nn.Module): 4.class DFLoss(nn.Module): 5.class BboxLoss(nn.Module): 6.class RotatedBboxLoss(BboxLoss): 7.class KeypointLoss(n…...

像素流送api ue多人访问需要什么显卡服务器
关于像素流送UE推流,在之前的文章里其实小芹和大家聊过很多,不过今天偶然搜索发现还是有很多小伙伴,在搜索像素流送相关的问题,搜索引擎给的提示有这些。当然这些都是比较短的词汇,可能每个人真正遇到的问题和想获取的…...

字符型注入‘)闭合
前言 进行sql注入的时候,不要忘记闭合,先闭合再去获取数据 步骤 判断是字符型注入 用order by获取不了显位,select也一样 是因为它是’)闭合,闭合之后,就可以获取数据了 最后就是一样的步骤...

评分规则的建模,用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分
子夜(603***854) 15:11:40 和各位讨论一下设计问题: 有个有业务场景: 有一组产品共4个产品(数目用户可自定义), 需要一套规则,比如如果用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分 又比如另一组产品 产品有个必选属性,如果选了其中所有的必选则5分, 其他项每1…...
Elasticsearch与NLP的深度融合:文本嵌入与向量搜索实战指南
Elasticsearch与NLP的深度融合:文本嵌入与向量搜索实战指南 引言 在当今信息爆炸的时代,如何从海量文本数据中快速准确地检索出相关信息,成为了一个迫切需要解决的问题。自然语言处理(NLP)技术的发展为这一挑战提供了新的解决方案。Elasticsearch,作为一个强大的搜索引…...

4. STM32_定时器
概述 什么是定时器: 定时器核心就是计数器,是使用精准的时基,通过硬件的方式,实现定时功能的器件。 定时器的工作原理: 主频时钟CLK通过PSC进行分频后产生定时器时钟TIM CLK,计数器CNT根据TIM CLK的频率…...
Mysql 深度分页问题及优化方案
Mysql 深度分页问题及优化方案 一、为什么 MySQL 深度分页慢?二、优化方案三、补充 一、为什么 MySQL 深度分页慢? 在数据量大时,深分页查询速度缓慢,主要原因是多次回表查询。 前言:N个条件为索引,id为主…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...