admin 管理员组

文章数量: 887021


2024年1月15日发(作者:sqlserver数据库单个用户)

Oracle 建立大文件表空间

从Oracle 10g开始,Oracle引入了一个新增的表空间类型——大文件(BIGFILE)表空间,从而显著的增强了存储能力。一个大文件表空间中对应一个单一的数据文件或临时文件,但是文件可以达到4G个数据块大小。理论上,当数据块大小为8K时,大文件表空间的数据文件最大可以达到32T字节;当数据块尺寸为32K时,那么大文件表空间的数据文件最大尺寸可以达到128T。在实际环境中,这还受到操作系统的文件系统的限制。

在创建表空间时,默认的创建的表空间为SMALLFILE类型的表空间,通过查询数据字典视图DATABASE_PROPERTIES,可以显示当前数据库默认创建的表空间是否为BIGFILE类型的表空间。具体如下:

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

从这里可以看出,如果在创建表空间时不指定数据文件的类型,那么默认创建的表空间都是SMALLFILE类型的表空间。用户可以通过ALTER DATABASE命令来修改数据库默认的表空间类型:

SQL> alter database set default bigfile tablespace;

数据库已更改。

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;

数据库已更改。

建立大文件表空间是使用CRETAE BIGFILE TABLESPACE语句完成的。需要注意,当执行该语句建立大文件表空间时,不能使用SEGMENT SPACE MANAGEMENT MANUAL子句,并且只能指定一个数据文件。例如,下面的语句将创建一个大文件的表空间BIG_TBS:

SQL> create bigfile tablespace big_tbs

2 datafile 'd:oracledatabigfile_' size 10m;

表空间已创建。

执行上述语句后,将建立名称为BIG_TBS的大文件表空间,该表空间的空间管理方式为本地化管理,并且区尺寸由系统自动分配。

通过查询数据字典DBA_TABLESPACES,可以了解表空间是否为大文件表空间类型。例如:

SQL> select tablespace_name, bigfile

2 from dba_tablespaces

3 where tablespace_name='BIG_TBS';

TABLESPACE_NAME BIG

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

BIG_TBS YES

在前面曾提及过,大文件表空间的最大尺寸与数据块有关。例如,下面将显示当前数据库的数据块大小:

SQL> show parameters db_block_size;

NAME TYPE VALUE

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

db_block_size integer 8192

也就是说,理论上创建的BIGFILE表空间可以创建最大32T。


本文标签: 空间 文件 创建 数据 类型