深入解析下oracle的number底层存储格式

     oracle数据库中,number数据类型用来存储数值数据,它既可以存储负数数值,也可以存储正数数值。相对于其他类型数据,number格式的数据底层存储格式要复杂得多。今天我们就详细探究下oracle的number底层存储格式。

一、环境搭建

1.1,创建表

    我们还是创建表t_code,并插入数据。

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

二、获取底层存储数据

2.1,dump数据块

    我们根据rowid得到的数据存储的位置,通过oracle命令dump块信息到日志。

 

2.2,dump函数获取数据信息

 2.3,比对

    我们根据dump出来的数据块信息与dump函数信息比对,可以看到两边数据一致,那么我们直接用dump函数获取数据分析:

三、存储格式分析

3.1,详细解析

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

    len=2,代表此列数据的长度为2。

    number数据类型底层存储分为两部分:一部分为指数字节位(占一个字节),其余为数字字节位(占多个字节),如:

Typ=2 Len=3: 194,4,3

    指数字节位值为194;数字字节位值为:4,3 

    指数字节位分为3部分:符号位,偏移量和指数值

    符号位:符号位占一个bit位,位于byte的最高位。为1代表0或者正数,为0代表负数。

    偏移量:偏移量默认值为65,二进制值为:1000001

    指数值:指数值的范围为-65...62,它需要byte位的实际值减去偏移量获得。指数基数为100.

3.2,正数算法

    我们以表t_code序号为302的数据进行计算底层数据存储。

    符号byte位值为194,二进制值为:11000010,可以看到:符号为1,所以为正数。

    194-128=66,得到指数值为66,66的二进制值为1000010,减去65得到1(65+128=193)。所以最高位指数为1。

    数字位基数为100,由于底层每个数字位加了1,故计算时候需要减1。

    下面我们开始计算302数值如何得到:

3.3,负数算法 

    我们以表t_code序号为-13596.1的数据进行计算底层数据存储格式。

    符号位值为60,故符号bit位位0,所以为负数。

    负数的指数计算需要利用数值62(62+65=127),62为负数计算基数。62-60=2,所以最高位指数为2。

    负数数值计算基数需要101减去对应数值位。

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SparkSQL与Hive的整合

文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…

(持续更新)linux网络编程中需要注意的内核参数与网络机制

目录 零、基本说明 一、内核参数 二、相关机制 1、GRO (1)适用场景 (2)优缺点 (3)相关操作 2、Nagle 算法 (1)基本规则 (2)优缺点 (3&…

DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(一)

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

Matlab笔记---clear、clc、clear all应用

在MATLAB中,clear、clc 和 clear all 是三个常用的命令,它们各自有不同的作用: clc: clc 命令用于清除MATLAB命令窗口中的所有输出。它不会删除任何变量、函数或文件,只是清除屏幕上的显示内容,让你可以更…

铭记一次项目重大事故

在程序的世界里,bug 就像隐藏在暗处的小怪兽,时不时跳出来捣乱。而职业生涯中,总有那么一个或几个 bug 让我们刻骨铭心。它或许让项目差点夭折,或许让你熬了无数个通宵,或许有着离奇的出现方式和曲折的解决过程。无论是…

Qt 一个简单的QChart 绘图

Qt 一个简单的QChart 绘图 先上程序运行结果图&#xff1a; “sample9_1QChart.h” 文件代码如下&#xff1a; #pragma once#include <QtWidgets/QMainWindow> #include "ui_sample9_1QChart.h"#include <QtCharts> //必须这么设置 QT_CHARTS_USE_NAME…

分布式事物XA、BASE、TCC、SAGA、AT

分布式事务——Seata 一、Seata的架构&#xff1a; 1、什么是Seata&#xff1a; 它是一款分布式事务解决方案。官网查看&#xff1a;Seata 2.执行过程 在分布式事务中&#xff0c;会有一个入口方法去调用各个微服务&#xff0c;每一个微服务都有一个分支事务&#xff0c;因…

MySQL为什么使用B+树来作索引

我来详细解释一下B树的结构和特点。 graph TDA[根节点 40|70] --> B[20|30]A --> C[50|60]A --> D[80|90]B --> E[10|15]B --> F[25|28]B --> G[35|38]C --> H[45|48]C --> I[55|58]C --> J[65|68]D --> K[75|78]D --> L[85|88]D --> M[9…

python 下载 b站视频 和音频

video_bvid&#xff1a; import os import requests import json import re from bs4 import BeautifulSoup import subprocess # from detail_video import video_bvid# video_bvid 是一个从外部得到的单个视频ID video_bvid BV1cx421Q7veclass BilibiliVideoAudio:def __in…

2024年06月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析

青少年软件编程(python)等级考试试卷(五级) 一、单选题(共25题,共50分) range()函数的基本用法是什么?( ) A. 生成一个等差数列 B. 生成一个随机数列 C. 生成一个递增数列 D. 生成一个递减数列 正确答案:A 答案解析:range() 函数用于生成一个等差数列,其中起始值、…

以太网链路详情

文章目录 1、交换机1、常见的概念1、冲突域2、广播域3、以太网卡1、以太网卡帧 4、mac地址1、mac地址表示2、mac地址分类3、mac地址转换为二进制 2、交换机的工作原理1、mac地址表2、交换机三种数据帧处理行为3、为什么会泛洪4、转发5、丢弃 3、mac表怎么获得4、同网段数据通信…

Shell编程 脚本的运行方式与注释

目录 shell脚本的运行方式 1. 路径运行 2.bash或sh加脚本运行 ​编辑 3.source在加脚本路径运行 shell脚本注释 单行注释 多行注释 shell脚本的运行方式 我们在/usr/etc/demo01目录下新建了一个脚本 a.sh &#xff0c;脚本内容是要求输出数字1&#xff0c;怎么运行呢 1…

获取淘宝商品评论数据的API应用:市场调研|产品更新|用户数据

下面是一段我用item_review&#xff08;获取商品评论数据&#xff09;抓来的商品评论数据&#xff1a; "items": {"total_results": 375,"totalpage": 38,"page_size": 10,"page": "1","item": [{&quo…

智算网络中Scale-out和Scale-up网络的技术原理

智算网络中Scale-out网络和Scale-up网络的本质区别是什么&#xff1f; 一、什么是智算中心的Scale-out网络和Scale-up网络 数据中心网络总体上可分为两大类&#xff1a;通算网络和智算网络。通算网络主要用于支持传统的计算任务和应用&#xff0c;如企业的IT系统、网站托管、电…

HCIA笔记7--OSPF协议入门

文章目录 0. 路由分类1. OSPF介绍1.1 概念1.2 报文类型 2. 邻接关系的建立2.1 邻居关系的建立2.2 邻接关系的形成2.3 ospf状态机 3. DR与BDR3.1 为什么要有DR和BDR&#xff1f;3.2 DR和BDR的选举原则 4. ospf的配置4.1 内部优先级 5. 问题5.1 三层环路如何解决&#xff1f; Ref…

C05S06-Nginx的内置变量和代理

一、常见内置变量 内置变量说明$uri请求的URL&#xff0c;不包括主机和参数$request_uri请求的URL&#xff0c;包括主机和参数$host请求的主机名$http_user_agent客户端信息&#xff0c;浏览器和操作系统$remote_addr客户端IP地址$remote_port客户端端口$server_addr服务端IP地…

mysql排序问题

mysql 建数据库时&#xff0c;需要指定 字符集 和 排序规则 建表时&#xff0c;也可以指定 也可以指定具体的字段 安照下面的sql顺序执行插入&#xff0c;它们的排序是什么样的&#xff1f; INSERT into test_sort (uid,create_time) VALUE (d,now()) INSERT into test_sort (u…

JAVA 图形界面编程 AWT篇(1)

前言 为了应对JAVA课设&#xff0c;小编走上了java的图形界面编程的道路&#xff0c;通过博客分享自己的学习历程&#xff0c;并进行笔记的记录。 AWT&#xff08;Abstract Window Toolkit&#xff09;介绍 AWT&#xff08;抽象窗口工具包&#xff09;是 Java 最早的图形用户界…

vulhub复现CVE-2021-44228log4j漏洞

目录 一&#xff1a;漏洞概述 二&#xff1a;漏洞原理 三&#xff1a;漏洞利用 lookup功能&#xff1a; JNDI解析器&#xff1a; ldap服务&#xff1a; RMI&#xff1a; 四&#xff1a;漏洞复现 4.1靶场 4.2dnslog测试 4.3部署jndi-injection-exploit 4.4打开监听端口 4.5触发请…

ip地址获取失败啥意思?ip地址获取失败怎么回事

在日常的网络使用中&#xff0c;我们时常依赖于稳定的IP地址来确保数据的顺畅传输和设备的正常识别。然而&#xff0c;有时我们会遇到“IP地址获取失败”的困扰&#xff0c;这不仅阻碍了我们的网络访问&#xff0c;还可能带来一系列的网络连接问题。那么&#xff0c;IP地址获取…