BigFile和SmallFile表空间技术

转载 2013年12月03日 10:43:54

文章来自:http://wenku.baidu.com/link?url=1mGNCM3jaaJQmZveGFpT8EwdRhJm8NWtZXoRW51DZdGnFr38rVyU4LkrDSnx_fGsVWOvMqiU7I6sdoQrZRTRJX-83ACPKXLQYs3Dtbt6-pe


BigFile和SmallFile表空间技术



在前面的章节中大家或许注意到,在Oracle 10g创建数据库的脚本中,有这样的代码:


SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M  
AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED  
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE
SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED 
其中SmallFile是Oracle 10g新增的特性。从Oracle 10g开始,Oracle推出了大文件表空间(BigFile Tablespace,BFT)支持,相对地,也就有了小文件表空间(SmallFile Tablespace,SFT)。


大文件表空间只能包含一个文件(这是区分大文件与小文件表空间的标准),但是文件最大可以达到4GB个数据块大小,按照Oracle通常支持的不同数据块大小(2KB、4KB、8KB、16KB和32KB),最小的大文件表空间单个文件大小可达8TB,最大可以达到128TB,当然具体单个文件能够达到的大小还受到操作系统的限制。


和BFT相对应的、以前的表空间管理方式就被称为SFT。Oracle通过BFT支持,极大地扩展了数据库的存储能力。由于引入了BFT,Oracle将这一特性作为数据库属性进行维护:


SQL> SELECT *  
  2  FROM database_properties  
  3  WHERE property_name = 'DEFAULT_TBS_TYPE';  
PROPERTY_NAME                  PROPERTY_VALUE  
DESCRIPTION  
------------------------------ ----------------
------------------------------  
DEFAULT_TBS_TYPE               SMALLFILE  
Default tablespace type 
由于数据库缺省的表空间类型为SFT,所以缺省创建的都是小文件表空间。当然可以修改这个属性:


SQL> ALTER DATABASE SET DEFAULT bigfile TABLESPACE;  
Database altered.  
 
SQL> SELECT *  
  2  FROM database_properties  
  3  WHERE property_name = 'DEFAULT_TBS_TYPE';  
PROPERTY_NAME                  PROPERTY_VALUE  
DESCRIPTION  
---------------------------- -----------------
------------- ------------------------------  
DEFAULT_TBS_TYPE               BIGFILE    Default tablespace type 
但是通常不建议修改这个属性,可以通过如下命令修改表空间属性为默认值:


SQL> ALTER DATABASE SET DEFAULT smallfile TABLESPACE;  
Database altered. 
如果在缺省设置下要创建BIGFILE类型的表空间,就需要指定一个新的参数BIGFILE,其他和原有创建表空间语法类似。如果数据库使用了ASM或OMF技术,那么创建就更为简化,以下一条命令就足够了:


SQL> CREATE BIGFILE TABLESPACE bftbs datafile size 10M;  
Tablespace created. 
通过DBA_TABLESPACES视图,可以查看表空间属性,这个视图中新增加了一个字段BIGFILE用于标识一个表空间是否属于BIGFILE表空间:


SQL> select tablespace_name,bigfile from dba_tablespaces;  
TABLESPACE_NAME                BIG  
------------------------------ ---  
SYSTEM     NO  
UNDOTBS1   NO  
SYSAUX     NO  
TEMP       NO  
BOSSMGR    YES  
DBMON      NO  
BFTBS      YES  
7 rows selected. 
由于大文件表空间只能包含一个数据文件,所以其相对文件号(RELATIVE_FNO)被设为1024:


SQL> select file_name,file_id,relative_fno from dba_data_files;  
FILE_NAME     FILE_ID RELATIVE_FNO  
-------------------------------------------------
- ---------- ------------  
+DATADG/smsboss/datafile/system.261.577731551     
1            1  
+DATADG/smsboss/datafile/undotbs1.260.577731573    
2            2  
+DATADG/smsboss/datafile/sysaux.262.577731593     
3            3  
+DATADG/smsboss/datafile/users.256.577731607     
4            4  
+DATADG/smsboss/datafile/bossmgr.271.577809233   
5         1024  
+DATADG/smsboss/datafile/dbmon.5417.595530625   
6            6  
+DATADG/smsboss/datafile/bftbs.5416.613388183    
7         1024 
大文件表空间可以最小化表空间文件数量,从而简化DBA的管理,在大型的数据库中,包含几十、数百文件的表空间随处可见,随着文件数量的增加,很多数据库参数就要做出相应的调整,如db_files,静态参数的调整又要重新启动数据库才能生效,这都给数据库的维护带来不便,而BFT的出现,可以彻底解决这些问题。由于文件数量的减少,控制文件的空间使用也可以随之减少,检查点等数据库内部操作需要同步的文件头数量也大大减少,总之,大文件表空间的出现为超大型数据库(VLDB)的管理带来了极大的便利。


但是需要注意的是,一个大文件自然会带来I/O或存储上的问题,由于BFT只能存在一个数据文件,所以要保证分配的磁盘或磁盘组具有足够的空间;为了避免I/O的竞争,在数据库底层,磁盘的分配和规划也非常重要,通常Striping/RAID或Oracle的ASM技术等需要被采用去分散I/O,避免磁盘上的竞争。


例如,在一个Oracle 10gR2 +ASM生产环境中,以32KB块大小建立的大文件表空间已经使用了200GB的空间:


SQL> SELECT a.tablespace_name, b.file_name,
a.block_size, a.bigfile,  
  2         b.BYTES / 1024 / 1024 / 1024 gb  
  3    FROM dba_tablespaces a, dba_data_files b  
  4   WHERE a.tablespace_name = b.tablespace_name
AND a.bigfile = 'YES';  
 
TABLESPACE_NAME  
------------------------------  
FILE_NAME  BLOCK_SIZE BIG         GB  
---------------------------------------------
----- ---------- --- ----------  
BOSSMGR  
+DATADG/smsboss/datafile/bossmgr.271.577809233  
32768 YES 205.078125 

bigfile表空间 smallfile表空间

Oracle 10g bigfile表空间简介          01. A Bigfile 表空间包含一个非常大的数据文件      02. SMALLFILE表空间和BIGFILE表空间...

利用可传输表空间技术实现数据的高效迁移

通过这个文章演示一下Oracle的表空间迁移流程以及需要注意的诸多事项。 实验目标:将ora10g数据库实例上的表空间TBS_SEC_D迁移到secooler数据库实例上 操作系统:Redha...
  • e_wsq
  • e_wsq
  • 2012年05月06日 07:17
  • 381

传输表空间技术及字节序对跨平台迁移的影响

传输表空间技术是数据迁移中非常重要的技术之一。它的作用是将一组自包含(Self-Contained),只读的表空间只导出元数据,然后在操作系统层面将表空间的数据文件直接复制到目标平台,再将元数据导入数...

oracle传输表空间技术测试和测试中遇到的问题

oracle的传输表空间技术支持,跨平台的表空间传输,线上生产环境使用传输表空间可以节省时间提高效率,因为传输表空间是先传输数据文件到目标库,然后使用exp/imp或者为expdp/impdp导入表空...

Oracle bigfile 大文件表空间

Oracle bigfile 大文件表空间 2012-02-21 10:36:54 分类: Oracle Database 是由一个或多个被称为表空间(tabl...

QQ空间技术架构之深刻揭密

QQ空间作为腾讯海量互联网服务产品,经过近七年的发展,实现了从十万级到亿级同时在线的飞跃。在这个过程中,QQ空间团队遇到了哪些技术挑战?其站点前后台架构随着业务规模的变化又进行了怎样的演进与变迁?成长...

QQ空间技术架构

  • 2013年07月05日 11:49
  • 9.3MB
  • 下载

QQ空间技术架构之深刻揭密

QQ空间技术架构之深刻揭密    作者:张英,发布于2012-7-17   QQ空间作为腾讯海量互联网服务产品,经过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BigFile和SmallFile表空间技术
举报原因:
原因补充:

(最多只允许输入30个字)