oracle存储大小
Ⅰ 如何在Oracle里面存储大整数
Oracle number datatype 语法:NUMBER[(precision [, scale])]
简称:precision --> p scale --> s
NUMBER(p,s)
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
有效位:从左边第一个不为0的数算起的位数。
s的情况:
s > 0
精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p。
s < 0
精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + |s|。
s = 0
此时NUMBER表示整数。
从而,Oracle可以存储、可以运算的最大整数是 1e126 -1 。
declare
n number:=0;
begin
for i in REVERSE 1..125 loop
n := n + 9*power(10,i);
dbms_output.put_line(i || '-->' || n);
end loop;
insert into tt(id)values(n);
commit;
end;
/
经实际验证,的确可以存放1e126-1,但无法查看,也无法参与运算。
Ⅱ oracle 表空间 数据存储空间
表空间是由数据文件组成的,表空间容量是由数据文件大小决定的,一个表空间由一个或多个数据文件组成。例如,一个空间由10个1G的数据文件组成,空间容量是10g。block大小为8k的数据文件最大为32G.你所说的超过8G报错,应该是操作系统的限制。如空间问题,或者是windows的问题。当然也可能用大文件超过32G的限制。
Ⅲ oracle数据库一张表最大存多少条数据
1、64位linux 和64位oracle,默认oracle表空间数据文件用的BLOCKSIZE是8k,表空间数据文件最大是32G。
SQL>show parameter k_cache_size
查看数据库默认的块大小
SQL> show parameter db_block_size
db_block_size integer 8192
2、为了让一个表空间数据文件存64G,你需要告诉oracle用BLOCKSIZE 是16k
CREATE TABLESPACE TEST DATAFILE ‘/data1/test_ts1.dbf’ SIZE 512M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED BLOCKSIZE 16k;
提前需要设置db_16k_cache_size
alter system set db_16k_cache_size=16M scope=both;
否则会报错ORA-29339:
tablespace block size 16384 does not match configured block sizes
3、为了让一个表空间数据文件存128G,你需要告诉oracle用BLOCKSIZE 是32k
4、32位linux 和32位oracle,默认oracle表空间datafile用的BLOCKSIZE也是8k,表空间数据文件最大也是32G。试了一下64G文件,也没有问题。