关于rowid的小小研究

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式) unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。 阅读详情

    rowid由4个部分组成:
第一部分:1-6位,标识对象即表 dbms_rowid.rowid_object返回object_id
第二部分:7-9位,标识数据文件 dbms_rowid.rowid_relative_fno返回rfile_id
第三部分:10-15位,标识数据块 dbms_rowid.rowid_block_number返回block_id
第四部分:16-18位,标识行在块的位置 dbms_rowid.rowid_row_number返回,值从0开始

    如果你知道了上述4个部分的值,可以通过ROWID_CREATE函数组合成一个rowid

 

select t.*,
  dbms_rowid.rowid_create(
    1,object_id,rfile_id,block_id,row_no) cre_rowid
from (
  select id,
    dbms_rowid.rowid_object(rowid) object_id,
    dbms_rowid.rowid_relative_fno(rowid) rfile_id,
    dbms_rowid.rowid_block_number(rowid) block_id,
    dbms_rowid.rowid_row_number(rowid) row_no,
    rowid rid
  from a) t;

 

        ID  OBJECT_ID   RFILE_ID   BLOCK_ID     ROW_NO RID                CRE_ROWID
---------- ---------- ---------- ---------- ---------- ------------------ ------------------
         2      53057          4     110653          0 AAAM9BAAEAAAbA9AAA AAAM9BAAEAAAbA9AAA
         3      53057          4     110653          1 AAAM9BAAEAAAbA9AAB AAAM9BAAEAAAbA9AAB
 
    我们可以发现,rowid是由上述4部分数字以64进制组成,其中0-25以A-Z表示,26-51以a-z表示,52-61以0-9表示,62对应+,63对应/

    对此,我们可以自己写个函数来实现上述几个取id值的功能,将相应部分转换成10进制的数字即可

 

create or replace function convert64to10(str in varchar2)
return number
as
result number:=0;
tmp char(1);
begin
  for i in 1..length(str) loop
    tmp:=substr(str,i,1);
    result:=result+power(64,(length(str)-i))*(ascii(tmp)-
      case when tmp between 'A' and 'Z' then 65
        when tmp between 'a' and 'z' then 71
        when tmp between '0' and '9' then -4
        when tmp = '+' then -19
        when tmp = '/' then -16
        else 1/0 end);
  end loop;
return result;
exception
when others then
return 0;
end;
/

 

ok,用这个函数从rowid中取4个部分的值试试

 

select id,
  convert64to10(substr(rowid,1,6)) object_id,
  convert64to10(substr(rowid,7,3)) file_id,
  convert64to10(substr(rowid,10,6)) block_id,
  convert64to10(substr(rowid,16,3)) row_no,
  rowid rid
from a;

 

        ID  OBJECT_ID    FILE_ID   BLOCK_ID     ROW_NO RID
---------- ---------- ---------- ---------- ---------- ------------------
         2      53057          4     110653          0 AAAM9BAAEAAAbA9AAA
         3      53057          4     110653          1 AAAM9BAAEAAAbA9AAB

 

是否与用dbms_rowid包取得的一致?

 

 

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图... 阅读详情

相关推荐

RimWorld Mod开发避坑指南:从Defs命名规范到XML结构详解(附实战代码)

本文深入解析RimWorld Mod开发中Defs文件的编写规范与高级技巧,涵盖命名冲突预防、XML结构优化及高级功能实现。通过实战代码示例,帮助开发者避开常见陷阱,提升Mod兼容性与稳定性,特别适合RimWorld Mod开发者参考。

weixin_30790841的博客 451

DBMS_ROWID包(ROWID_CREATE函数)

DBMS_ROWID DBMS_ROWID包允许我们使用PL/SQL程序或SQL语句创建rowids和获取rowid的信息。例如可以通过其找到数据对象编号,数据文件编号,包含数据行的数据块编号及数据块中的数据行。该包从Oracle 8.X开始可用。 DBMS_ROWID的几个子函数程序: 1、ROWID_BLOCK_NUMBER函数(该函数返回输入ROWID的数据块编号) 语法: D

haiross的专栏 6195

安卓端目标检测模型部署血泪史:从NCNN/TFLite/MNN全军覆没到Torchscipts终见光明

公司需在Android设备部署目标检测模型,要求: ✅ 实时检测速度≥15FPS ✅ 模型精度损失<5% ✅ 兼容中低端安卓设备👉 GitHub项目地址:pytorch/android-demo-app/ObjectDetection我已上传这份源码到csdn下载准备模型(必须走这步才能跑通安卓端源码)如果您没有设置PyTorch环境来运行该脚本,可以下载模型文件此处转到“android演示app/ObjectDetection/app/src/main/assets”文件夹,然后跳过此步骤的其余部分,直

机器学习、深度学习、强化学习、迁移学习 1571

DBMS_ROWID包应用一:ROWID_BLOCK_NUMBER

This function returns the database block number for the input ROWID. 这个函数根据输入的ROWID返回数据块 Syntax DBMS_ROWID.ROWID_BLOCK_NUMBER ( row_id IN ROWID, ts_type_in IN VARCHAR2 DEFAULT '

xinxiangsui2008的专栏 2436

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 313

Lm317电压源芯片制作电流源

还在找电流源芯片么?如何使用电压源芯片快速搭建电流源。

Ekko的博客 1万+

DBMS_ROWID包的使用

DBMS_ROWID是一个比较有用的系统自带的package,主要可以用来处理坏块的问题,于是仔细的研究了一下,这个包可以用来了解file、block、object id和rowid之间的关系,在Oracle8中被引用进来,Oracle7不支持这个包。这个包的定义可以在dbmsutil.sql中找到,在catproc.sql中被调用,并被给予public执行权限。  F^h4R.

爱肯的专栏 683

告别GPS,用Sentinel-1数据+Python实战SBAS-InSAR监测城市地面沉降(保姆级教程)

本文详细介绍了如何利用Sentinel-1数据和Python实现SBAS-InSAR技术监测城市地面沉降。通过保姆级教程,从环境配置、数据获取到干涉处理、时序分析和形变反演,逐步解析全流程技术细节,帮助读者掌握毫米级精度的形变监测方法,并以上海陆家嘴区域为例展示实际应用效果。

weixin_32771907的博客 536

dbms_rowid.rowid_block_number(rowid) 获取该行数据所在的块no

select id,dbms_rowid.rowid_block_number(rowid) from tx_itl_test;

yh_zeng2的博客 994

Claude code 入门 安装和快速使用

Claude Code 可以理解为一个。你只需要用简单的语言告诉它要做什么,比如「帮我整理这些文件」、「改一下这个程序」、「分析一下这些数据」,它就能理解你的电脑项目,并自动完成很多操作。,比如整理文件、编程、数据分析…等等。使用终端、命令行还是挡住了非常多的朋友,这个时候,有个界面很重要!Claude code、Codex 官方也都推出了插件,安装即可使用。

2401_84052244的博客 1359

(第14天)Veritas NetBackup(NBU) 配合 RMAN 脚本备份 Oracle 数据库

NBU(Veritas Netbackup)是企业中比较常用的备份软件,通常用于备份企业使用中的系统,数据库,文件等等,通常是搭配 Oracle RMAN 来进行备份 Oracle 数据库。

LuciferLiu_DBA 1642

rowid的组成,块号和行号的递增

rowid就像是记录的详细地址,想要寻找记录就需要通过这个详细地址去寻找。 rowid存储在索引中而不是在表中。 我们可以通过以下包通过rowid找到文件号,块号,行号。 dbms_rowid.rowid_relative_fno -- 文件号 dbms_rowid.rowid_block_number --块号 dbms_rowid.rowid_row_number --行号 ...

liuzhilong的博客 2659

PCIe-Orders set Blocks之symbol对齐

有序集的使用场合很多,如在链路link阶段,进入polling后,便开始有序集的发送。一个 Ordered Set Block 包含一个同步头,后跟一个有序集。多通道链路的所有 Lane 必须同时传输相同的有序集,而且有序集的第一个符号定义了有序集的类型。但在PCIE中,8GT/s及以上的速率,采用的是128b/130b编码。128-bit是想要传输的payload,实际会传输130-bit,多出来的2-bit就是sync header。Block有两种,通过Sync header区分:10b:表示data

weixin_44700185的博客 813

在线重定义19G表,转化为组合分区表。应用无需停止。

Oracle 高可用特性, 想必大家都知道。   这里我想记录一次工作中的小小尝试。  在线重定义19G表转化为二级分区表 系统中表 ST_MNTR_BUS_ORDER_SUM3     现在按照list 分区,  改成组合分区,  原来的数据堆积起来有4  5 个月的数据 共19G。查询很多过期数据   于是性能问题出现。   自动化清空大批过期数据,数据量始终可控。  我感

daiqiulong2的博客 505

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

oracle更新两个表数据库表,ORALCE如何update两个表的数据

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。首先上测试数据表1...

weixin_42514222的博客 3300

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DDL也会有undo吗?模拟Oracle中DML、DDL与undo的关系,10046跟踪DDL语句

DDL也会有undo吗?模拟Oracle中DML、DDL与undo的关系,10046跟踪DDL语句

weixin_60783132的博客 1517

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Oracle中数据文件大小的限制

oracle数据文件大小限制的公式:   oracle maximum file size = db_block_size * 4194303 (2^22 = 4194304)   也就是说最大的数据文件大小是由 db_block_size 来决定的,8KB的数据块的数据文件最大为 8K * 4194304 = 32G,其他的以此类推   限制的原因在于:由于Oracle的Rowid中使...

JAVA 537

oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。首先上测试数据表1...

weixin_42101720的博客 1611

ORALCE如何update两个表的数据

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的 今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1 理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。

wozengcong的专栏 1228

用php更新oracle表,oracle_在Oracle数据库中同时更新两张表的简单方法,以前只会写一些简单的updaet语 - phpStudy...

在Oracle数据库中同时更新两张表的简单方法以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确...

weixin_42394257的博客 201

oracle 同时更新多表,Oracle数据库中如何同时更新两张表

很多用户们在使用oracle的时候都不知道怎样同时更新两张表,其实同时更新两张表是非常简单的,下面我们就跟小编一起去看看Oracle数据库中如何同时更新两张表的方法吧。以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2...

weixin_34379710的博客 3883

24 个必须掌握的数据库面试题!

长按识别下方二维码,即可"关注"公众号每天早晨,干货准时奉上!本文作者:小小程序员地址:https://zhuanlan.zhihu...

Java学习之道 2211

oracle两张表数据更新一致,在Oracle数据库中同时更新两张表的简单方法

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。首先上测试数据表1...

weixin_39653448的博客 860

oracle同时删除2张表数据库,在Oracle数据库中同时更新两张表的简单方法

以前只会写一些简单的updaet语句,比如updae table set c1='xxx' 之类的今天遇到一个数据订正的问题,项目背景如下,有个表a,有两个字段a1,a2还有一个关联表b,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把a中的字段a1更新成b中的b1理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。首先上测试数据表1...

weixin_29907111的博客 1201
上一篇: Oracle 专用服务器与共享服务器的区别
下一篇: 使用数据泵复制数据库对象的案例
小灰狼W
博客等级 码龄18年 908粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值