Oracle如何设置表空间数据文件大小
Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在数据库创建之初就设置好。
表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为4194304×DB_BLOCK_SIZE/1024M。
即:
- 4k最大表空间为:16384M=16G
- 8K最大表空间为:32768M=32G
- 16k最大表空间为:65536M=64G
- 32K最大表空间为:131072M=128G
- 64k最大表空间为:262144M=256G
在windows下只能使用2K,4K,8K,16K的块大小,在文档中的描述如下。
OracleDatabaseAdministrator'sGuide
10gRelease2(10.2)
PartNumberB14231-02
/B19306_01/server.102/b14231/create.htm#sthref372中有如下描述:
TablespacesofnonstandardblocksizescanbecreatedusingtheCREATETABLESPACEstatementandspecifyingtheBLOCKSIZEclause.Thesenonstandardblocksizescanhaveanyofthefollowingpower-of-twovalues:2K,4K,8K,16Kor32K.Platform-specificrestrictionsregardingthemaximumblocksizeapply,sosomeofthesesizesmaynotbeallowedonsomeplatforms.
Tousenonstandardblocksizes,youmustconfiguresubcacheswithinthebuffercacheareaoftheSGAmemoryforallofthenonstandardblocksizesthatyouintendtouse.Theinitializationparametersusedforconfiguringthesesubcachesaredescribedinthenextsection,"ManagingtheSystemGlobalArea(SGA)".
前一段说明了某些块大小在某些平台上是不可用的,具体情况受操作系统限制。比如windows下就有块大小2048字节到16384字节的限制,不管是非标准块还是标准块。据http://www.ningoo.net/html/2007/can_not_use_32k_block_size_on_windows.html的说明,如果Windows下使用32K作为db_block_size创建数据库,会报ORA-00374错误。
后一段说明使用非标准块要设置相应的内存参数。
Oracle是SGA自动共享内存管理,初始化参数db_4k_cache_size=0、db_8k_cache_size=0、db_16k_cache_size=0、
db_32k_cache_size=0、db_64k_cache_size=0,使用
如果要创建表空间并指定其文件大小(由创建表空间的BLOCK_SIZE决定),需重新设置db_4k_cache_size、db_8k_cache_size、db_16k_cache_size、db_32k_cache_size、db_64k_cache_size的值。
db_4k_cache_size: altersystemsetdb_4k_cache_size=4Mscope=both; db_8k_cache_size: altersystemsetdb_8k_cache_size=8Mscope=both; db_16k_cache_size: altersystemsetdb_16k_cache_size=16Mscope=both; db_32k_cache_size: altersystemsetdb_32k_cache_size=32Mscope=both; db_64k_cache_size: altersystemsetdb_64k_cache_size=64Mscope=both;
其中windows系统只支持4k、8k、16k的设置。
设置好上述参数的值后,创建表空间:
CREATETABLESPACETESTDATAFILE'E:\TEST.DBF' SIZE60G AUTOEXTENDON BLOCKSIZE16K EXTENTMANAGEMENTLOCALUNIFORMSIZE2M SEGMENTSPACEMANAGEMENTAUTO;
SIZE:数据文件大小,不能超过BLOCKSIZE16k(对应db_16k_cache_size)的大小16M*4194304/1024M=65536M=64G的值。
以上就是Oracle如何设置表空间数据文件大小的详细内容,更多关于oracle表空间数据文件的资料请关注毛票票其它相关文章!