oracle创建表空间blocksize,oracle表空间大小的限制和DB_BLOCK_SIZE的概念
而Oracle默認分配的為8K,也就是對應于32768M左右的空間大小,如果想繼續增大表空間的話,只需要通過alter tablespace name add datafile ‘path/file_name‘ size 1024M;添加數據文件的方式就可以了。
數據塊是oracle中最小的空間分配單位,各種操作的數據就的放在這里,oracle從磁盤讀寫的也是塊。一旦create database,db_block_size就是不可更改的。因為oracle是以塊為單位存儲數據的,任何一個存儲元素最少占用一個塊,如果你改變了db_block_size,必然導致部分塊不能正常使用。
其實在unix類操作系統中,文件塊和oracle塊的關系非常緊密(建議相等),這樣才能保證數據庫的執行效率。在windows下可能就不這么講究了。建議使用8k以上的塊,有人做過測試,同樣的配置,8k的塊比4k快大約40%,比2k快3倍以上。
1. 多個數據文件累加
將表空間存儲為多個數據文件,每個文件不大于32GB(精確的值為32768M)
語法如下:(不夠的話繼續添加數據文件)
create tablespace JC_DATA
logging
datafile‘F:\app\oracle\oradata\orcl\JC_DATA01.dbf‘size 50m
autoextend on
next 50m maxsize 32767m
extent management local;--為表空間增加數據文件
alter tablespace JC_DATA
add datafile‘F:\app\oracle\oradata\orcl\JC_DATA02.dbf‘size 50m
autoextend on next 50m maxsize 32767m;
2.?擴大db_block_size
根據oracle的算法,我們很容易想到這個解決方法。數目衡定,但是db_block_size可以更改(db_block_size的最大大小為32KB)。如果把db_block_size擴大到32KB,那么我們的系統就可以支持單個數據文件最大128GB。
這個方案聽起來好像很迷人,但是實際上并不是那么回事。因為要修改db_block_size并不是很容易的事。因為這個db_block_size在創建實例的時候就要指定。而且不能通過簡單修改參數來指定db_block_size。db_block_size的默認值為8192 bytes,是不能被用戶修改的。因為db_block_size對應于一個實例,所以意味著在數據庫創建(建庫)以后是不能修改的,如需修改,可行的方式是重新建庫并把原庫的數據export到新庫。當然最好的方式是在建數據庫之前就規劃好,一般如果是OLTP系統,可以保持默認值;OLAP環境可以考慮適當調大。
3.?創建bigfile表空間
在oracle11g中引進了bigfile表空間,他充分利用了64位CPU的尋址能力,使oracle可以管理的數據文件總量達到8EB。單個數據文件的大小達到128TB,即使默認8K的db_block_size也達到了32TB。
創建bigfile的表空間使用的sql語句和創建表空間的語句使用基本相同。
create bigfile tablespace···
需要注意的是使用bigfile表空間,它只能支持一個數據文件。也就是說這個文件的最大大小就是表空間最大大小,你不可能通過增加數據文件來擴大該表空間的大小。
參考:
http://blog.sina.com.cn/s/blog_4b1c9e12010006vj.html
https://www.cnblogs.com/gavanwanggw/p/6714388.html
https://blog.csdn.net/zhangzheng0413/article/details/8271322
https://blog.csdn.net/dragoo1/article/details/8500241
總結
以上是生活随笔為你收集整理的oracle创建表空间blocksize,oracle表空间大小的限制和DB_BLOCK_SIZE的概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为何不公布ChatGPT训练细节?Ope
- 下一篇: 勒索团伙声称窃取3000份SpaceX火