oracle internal number 数据类型存储
转自:http://ilonng.blog.sohu.com/130335741.html
oracle的number类型是一种软件数据类型,在oracle软件本身中实现,我们不能使用固有硬件操作将两个number类型相加,这要在软件中模拟,number 类型的内部编码是2。oracle存储一个数的时,会存储尽可能少的内容来表示这个数,为此它会存储有效数字、用于指定小数点位置的一个指数,以及有关数值符号的信息(正或者负)。因此,数中包含的有效数字越多,占用的存储空间就越大。
oracle底层存储number类型采用下面的这种形式:
sign bit/exponent,digit1,digit2,…,digit20
sign bit/exponent为标志位,digit1...digit20为数值位,可见number最多占据21个字节。
一个数是可以使用科学计算法来正确表示的,如10=1*power(10,1),-101=-1.01*power(10,2),0.2=2*power(10,-1)。oracle就是通过这个原理来存储数据,它将任何一个它可以表示的数据转换成一个符号位、一个指数、一个有效数来存储,举个例子,123在oracle中是这样来存储的,+(1.23*power(100,1)),即它是以100为科学计算法的指数基数,为什么这样以及怎么来存储,请看下面。
存储数据的第一个字节是标志位,这个字节里面会反映出这个数字的符号位以及表示这个数字的指数的符号位。采用科学计数法,任何一个实数S都可以描述为A.B×power(100,N),A表示整数部分(可能是正数,可能是负数),B表示小数部分,而N表示10的指数部分。那么oracle怎么用一个字节来表示这些信息呢?
1、拿这个字节的最高位来表示正负,0表示负数,1表示正数。由此可见,这个数字在128这个部分被一切为2份,如果这个数字大于128,那么这个数就是正数,如果这个数字小于128,那么这个数字就是负数,如果这个数字等于128,那么这个数字就是0,如:
15:16:24 WATER@ lake>select 1,dump(1) from dual;
1 DUMP(1)
---------- ------------------
1 Typ=2 Len=2: 193,2
这里的第一个字节的标志位是193,大于128,故其为正数,另外可以看到,这里还有个偏移量为65,193=128+65+0。
15:16:30 WATER@ lake>select -1,dump(-1) from dual;
-1 DUMP(-1)
---------- -----------------------
&
相关文档:
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
[oracle@dba01 dbs]$ orapwd file=/oracle/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=oracle entries=20 force=y
[oracle@dba01 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat May 29 13:07:10 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Con ......
在Oracle RAC环境中,系统性能会受到影响,主要集中在Block在instance之间的传输,尽管oracle 10g 中采用了Cache Fusion来改善以前重disk中读取数据。其中的一个部分就是关于oracle sequence的性能问题
下面是关于sequence 的cache和order对rac 性能的影响,从测试中看到增大cache和采用non-ordered的sequence性能受到的影 ......
今天写有关Oracle中函数与触发器的内容,在数据库中定义并使用存储过程、函数、触发器,可以提高用户访问数据库的效率。
数据库中函数包含四个部分:声明、返回值、函数体和异常处理。
1 create or replace function getname(sno varchar2 )
2 &nbs ......
oracle中pro*c的学习
一 Pro*C 程序概述:
1.什么是Pro*C程序
在ORACLE数据库管理和系统中, 有三种访问数据库的方法;
(1) 用SQL*Plus, 它有SQL命令以交互的应用程序访问数据库;
(2) 用第四代语言应用开发工具开发的应用程序访问数据库,这些工具有SQL*froms,QL*Reportwriter,SQL*Menu等;
(3) 利用在 ......