首页 > 数据库 >Oracle数据库中的字节序格式是什么?

Oracle数据库中的字节序格式是什么?

时间:2023-04-04 10:22:35浏览次数:44  
标签:字节 数据库 name platform 64 Oracle bit x86

前言:本文是对这篇博客What is the endian format in Oracle databases?[1]的翻译,如有翻译不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!  

英文地址:https://dbtut.com/index.php/2019/06/27/what-is-the-endian-format-in-oracle-databases/

什么是字节序?

字节序(Endian)是多字节数据类型在内存中的存储方式。换句话说,它决定了数据的字节顺序。有两种字节序,小字节序(Little Endian)和大字节序(Big Endian)。

小字节序

数据先存储小端。也就是说,第一个字节是最大的。

另外一种翻译:将低序字节存储在起始地址。

大字节序

数据先存储大端。即第一个字节是最小的。

另外一种翻译:高序字节存储在起始地址。

例如:

假设一个整数存储为4个字节(32位),那么一个值为0x01234567(十进制表示)的变量将以0x01、0x23、0x45、0x67的形式存储。在具有大端的系统中,此数据按此顺序存储,而在小端系统中,它以相反的顺序存储。

Little Endian 和 Big Endian 的区别

下图显示了大端和小端的区别。

在 Oracle 数据库中,字节序格式由其工作环境中的字节序信息决定。数据库中的字节序格式告诉我们相关数据库可以移动到哪些环境。在不同的端序环境之间使用常规方法移动数据库是不可能的。例如,您不能用Data Guard 将数据库从 Little Endian系统传输到具有Big Endian的系统。

您可以用以下SQL查看数据库中的当前字节序格式。

SQL> select name,platform_id,platform_name from v$database;
 
NAME      PLATFORM_ID PLATFORM_NAME
--------- ----------- ----------------------------------------------------------
ORCL         13       Linux x86 64-bit

以下查询显示了可以移动现有数据库的其他环境。

大端格式 (IBM AIX)

SQL> set lines 200
SQL> set pages 200
SQL> COL "Source" FORM a32
SQL> COL "Compatible Targets" FORM a40
SQL> select d.platform_name "Source", t.platform_name "Compatible Targets", endian_format
from v$transportable_platform t, v$database d where t.endian_format = (select endian_format from v$transportable_platform t, v$database d where d.platform_name = t.platform_name) 
order by "Compatible Targets";  
 
Source                           Compatible Targets                       ENDIAN_FORMAT
-------------------------------- ---------------------------------------- ------------------------------------------
AIX-Based Systems (64-bit)       AIX-Based Systems (64-bit)               Big
AIX-Based Systems (64-bit)       Apple Mac OS                             Big
AIX-Based Systems (64-bit)       HP-UX (64-bit)                           Big
AIX-Based Systems (64-bit)       HP-UX IA (64-bit)                        Big
AIX-Based Systems (64-bit)       IBM Power Based Linux                    Big
AIX-Based Systems (64-bit)       IBM zSeries Based Linux                  Big
AIX-Based Systems (64-bit)       Solaris[tm] OE (32-bit)                  Big
AIX-Based Systems (64-bit)       Solaris[tm] OE (64-bit)                  Big
 
8 rows selected.

小端格式 (Linux x86)

SQL> set lines 200
SQL> set pages 200
SQL> COL "Source" FORM a32
SQL> COL "Compatible Targets" FORM a40
SQL> select d.platform_name "Source", t.platform_name "Compatible Targets", endian_format
from v$transportable_platform t, v$database d where t.endian_format = (select endian_format from v$transportable_platform t, v$database d where d.platform_name = t.platform_name) 
order by "Compatible Targets";  
 
Source Compatible Targets       ENDIAN_FORMAT
-------------------------------- ---------------------------------------- --------------
Linux x86 64-bit Apple Mac OS (x86-64)   Little
Linux x86 64-bit HP IA Open VMS       Little
Linux x86 64-bit HP Open VMS   Little
Linux x86 64-bit HP Tru64 UNIX   Little
Linux x86 64-bit Linux IA (32-bit)   Little
Linux x86 64-bit Linux IA (64-bit)   Little
Linux x86 64-bit Linux x86 64-bit   Little
Linux x86 64-bit Microsoft Windows IA (32-bit)   Little
Linux x86 64-bit Microsoft Windows IA (64-bit)   Little
Linux x86 64-bit Microsoft Windows x86 64-bit   Little
Linux x86 64-bit Solaris Operating System (x86)   Little
Linux x86 64-bit Solaris Operating System (x86-64)   Little
 
12 rows selected.

下面是上文的中的SQL语句:

SET lines 200
SET pages 200 
COL "Source" FOR a32 
COL "Compatible Targets" FOR a40
SELECT d.platform_name "Source",
       t.platform_name "Compatible Targets",
       endian_format
FROM v$transportable_platform t,
     v$database d
WHERE t.endian_format =
    (SELECT endian_format
     FROM v$transportable_platform t,
          v$database d
     WHERE d.platform_name = t.platform_name)
ORDER BY "Compatible Targets";

参考资料

[1]

原文地址: https://dbtut.com/index.php/2019/06/27/what-is-the-endian-format-in-oracle-databases/

标签:字节,数据库,name,platform,64,Oracle,bit,x86
From: https://www.cnblogs.com/kerrycode/p/17285534.html

相关文章

  • 数据库系列:覆盖索引和规避回表
    1介绍在MySQL数据库查询过程中,索引覆盖和避免不必要的回表,是减少检索步骤,提高执行效率的有效手段。下面从这两个角度分析如何进行MySQL检索提效。2数据准备模拟一个500w数据容量的部门表emp,表结构如下,并通过工具模拟500w的数据:CREATETABLE`emp`(`id`intunsignedNO......
  • Oracle账号expired状态修改
    概述,开发反馈账号过期了,不能正常登陆。通过dba_users表的查询,账号状态为expired,现进行修改恢复账号正常使用。1、查询dba_users表查看用户的状态SQL>selectusername,account_statusfromdba_userswhereusername='FID_TEST';USERNAMEACCOUNT_......
  • oracle执行cmd的实现方法
    网络上找到的在sqlplus中执行cmd的一些命令,主要有四种方法,这边都做了一下测试,这里做一下记录:测试环境:window2003+Oracle11.2.0.1.0第一种方法:最简单的执行cmd命令方法,但执行的本机的cmd命令,非数据库系统的cmd命令,故和本机打开cmd命令一样,貌似没什么用。C:\wmpub>sqlplussystem/......
  • Oracle 10g提权测试
    一直想摸索一下orcl提权的方式,今天测试了一下10g,可以成功提权。 C:\wmpub>sqlplusscott/tiger@orclSQL*Plus:Release10.2.0.1.0-Productionon星期一10月3107:41:292016Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseE......
  • 关系数据库同步框架 Dotmim.Sync
    推荐一款在线+离线数据同步框架Dotmim.Sync 移动智能应用可以分为在线模式、纯离线模式与“在线+离线”混合模式。在线模式下系统数据一般存储在服务器端的大中型数据库(如SQLServer、Oracle、MySQL等),移动应用依赖于稳定可靠的网络连接;纯离线模式下系统数据一般存储在移......
  • 数据库的CRUD语句
    Insert语句values里面的值依次对应各个列#创建表goodsCREATETABLEgoods( idINT, good_nameVARCHAR(10), priceDOUBLE); #插入数据INSERTINTOgoods(id,good_name)--该处写上需要添加的字段,不一样都要添加VALUES(12,'华为'); insert的注意事项#说......
  • mysql数据库优化大全
    数据库优化sql语句优化索引优化加缓存读写分离分区分布式数据库(垂直切分)水平切分MyISAM和InnoDB的区别:1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2......
  • 阿里云RDS与ECS自建mysql数据库主从同步(GTID方式)
      1、GTID的概念全局事务标识:globaltransactionidentifiers;GTID是一个事务一一对应,并且全局唯一ID;一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。而是使用MASTER_AUT......
  • NBU上Oracle数据库恢复演练手册
    目录2. 1|01.1 Oracle数据库恢复 43.1 1|11.1.1 安装新的客户端 63.2 1|21.1.2 新建异机恢复文件 63.3 1|31.1.3 新建数据库实例 63.4 1|41.1.4 建立spfile文件 63.5 1|51.1.5 建立数据文件夹 113.6 1|61.1.6 启动数据库到nomount状态 123.7 1|71.1.7 列出备份信......
  • Oracle11G安装在Linux7.下版本上BUG处理
    1.Java页面框无法拖拽拉伸,需要加上jre环境变量./runInstaller-jreLoc/usr/lib/jvm/jre-1.8.02.安装执行到68%左右时报错解决方法:cd$ORACLE_HOME/sysman/libcpins_emagent.mkins_emagent.mk.bakviins_emagent.mk搜索:/NMECTL后面加上-lnnz11继续安装即可......