oracle bigfile tablespace,5.8 BigFile和SmallFile表空间技术

5.8  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  WHEREproperty_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  WHEREproperty_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   WHEREa.tablespace_name= b.tablespace_name

ANDa.bigfile='YES';

TABLESPACE_NAME

------------------------------

FILE_NAME  BLOCK_SIZE BIG         GB

---------------------------------------------

----- ---------- --- ----------

BOSSMGR

+DATADG/smsboss/datafile/bossmgr.271.577809233

32768 YES 205.078125

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值