oracle创建bigfile表空间,Oracle 10g bigfile表空间、smallfile 表空间

Oracle 10g bigfile表空间、smallfile 表空间

来源:互联网

作者:佚名

时间:2014-06-04 14:29

Oracle10gbigfile表空间简介01.ABigfile表空间包含一个非常大的数据文件02.SMALLFILE表空间和BIGFILE表空间可以在同一个数据库共存1.创建一个bigfile表空间&nbs.

Oracle 10g bigfile表空间简介

01. A Bigfile 表空间包含一个非常大的数据文件

02. SMALLFILE表空间和BIGFILE表空间可以在同一个数据库共存

1.创建一个bigfile表空间

SQL> CREATE BIGFILE TABLESPACE  big01

datafile '/oracle/oradata/orcl/big01.dbf' size 50M;

Tablespace created.

1.2 查看数据库所有表空间bigfile属性,BIG01为bigfile表空间

SQL> select TABLESPACE_NAME, BIGFILE from DBA_TABLESPACES;

TABLESPACE_NAME                BIGFILE

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

SYSTEM                         NO

UNDOTBS1                       NO

SYSAUX                         NO

TEMP                           NO

USERS                          NO

TEST                           NO

BIG01                          YES

1.3 表空间TEST为SMALLFILE表空间,,现在做一个测试resize TEST表空间

SQL> alter tablespace test  resize 20M;

alter tablespace test  resize 20M

*

ERROR at line 1:

ORA-32773: operation not supported for smallfile tablespace TEST

由此可见small不支持表空间的resize,当然我们可以通过alter database reszie datafile 来实现smallfile表空间某个数据文件的resize

2.bigfile表空间文件

bigfile表空间只能包含一个文件,它可以非常大,我们不能对bigfile表空间增加数据文件

SQL> alter tablespace big01 add

2  datafile '/oracle/oradata/orcl/big02.dbf' size 10M;

alter tablespace big01 add

*

ERROR at line 1:

ORA-32771: cannot add file to bigfile tablespace

3.BIGFILE表空间的寻址

bigfile表空间的数据文件大小远远大于smallfile的表空间,其优势得益于Oracle 10g新的寻址方案

一个rowid寻址存储在传统的SMALLFILE表空间中的对象使用其中的12个字节

例: rowid寻址

. 相对File# 3个字节, Block#需要6个字节

相同的rowid寻址在bigfile表空间只需要9个字节,9个字节存储block#在唯一的文件中

bigfile 表空间只有一个数据文件,因此不必需要另外3个字节的相关连file#

新寻址方案

允许在一个单独的数据文件里最多4G个的数据块,

数据文件大小blocksize 2K的数据文件最大支持8TB,blocksize 32K的数据文件最大支持到128TB

4.bigfile表空间的优势

只有一个数据文件的表空间更方便管理,因此唯一的表空间就变成了管理单元

修改表空间的扩展

SQL> alter tablespace big01 autoextend on;

Tablespace altered.

SQL> alter tablespace big01 autoextend off;

Tablespace altered.

在线修改bigfile表空间大小

SQL> alter tablespace big01 resize 2M;

Tablespace altered.

smallfile表空间相对灵活性就不如bigfile表空间

SQL> select TABLESPACE_NAME, BIGFILE from DBA_TABLESPACES where TABLESPACE_NAME='TEST';

TABLESPACE_NAME                BIG

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

TEST                           NO

SQL> alter tablespace test  resize 20M;

alter tablespace test  resize 20M

*

ERROR at line 1:

ORA-32773: operation not supported for smallfile tablespace TEST

5.bigfile表空间支持以下存储管理方式

--> ASM (Automatic Storage Management)

--> a logical volume manager supporting striping/RAID

--> dynamically extensible logical volumes

--> Oracle Managed Files (OMF)

6. 修改数据库创建表空间的bigfile类型

SQL> select * from database_properties

where property_name='DEFAULT_TBS_TYPE';

当前数据库创建表空间的默认方式是SMALLFILE表空间

PROPERTY_NAME                  PROPERTY_VALUE                           DESCRIPTION

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

DEFAULT_TBS_TYPE               SMALLFILE                                Default tablespace type

更改数据库创建表空间为BIGFILE表空间

SQL> ALTER DATABASE SET DEFAULT bigfile TABLESPACE;

Database altered.

SQL> CREATE TABLESPACE big02

datafile '/oracle/oradata/orcl/big02.dbf' size 10M;

Tablespace created.

SQL> select TABLESPACE_NAME, BIGFILE from DBA_TABLESPACES;

TABLESPACE_NAME                BIG

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

SYSTEM                         NO

UNDOTBS1                       NO

SYSAUX                         NO

TEMP                           NO

USERS                          NO

TEST                           NO

BIG01                          YES

BIG02                          YES

7. bigfile表空间比传统的smallfile表空间的启动,检查点和DBWR的操作更具有性能优势.

查看数据库文件的文件号和相对文件号

SQL> select file_name, file_id, relative_fno from dba_data_files;

FILE_NAME                                                       FILE_ID RELATIVE_FNO

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

/oracle/oradata/orcl/big01.dbf                                        8         1024

/oracle/oradata/orcl/big02.dbf                                        9         1024

/oracle/oradata/orcl/users01.dbf                                      4            4

/oracle/oradata/orcl/sysaux01.dbf                                     3            3

/oracle/oradata/orcl/undotbs01.dbf                                    2            2

/oracle/oradata/orcl/system01.dbf                                     1            1

/oracle/oradata/orcl/system02.dbf                                     6            6

/oracle/oradata/orcl/test02.dbf                                       7            7

/oracle/oradata/orcl/test.dbf                                         5            5

注:bigfile 表空间只有一个数据文件,相对文件号为1024

8.bigfile 表空间、smallfile表空间

SQL> SELECT TABLESPACE_NAME,bigfile from dba_tablespaces where tablespace_name='TEST';

TABLESPACE_NAME                BIG

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

TEST                           NO

1- 在smallfile表空间里从表的rowid中获取相对文件号的信息

SQL> create table st0 (c number) tablespace TEST;

Table created.

SQL> insert into st0 values (1);

1 row created.

SQL> select dbms_rowid.rowid_relative_fno(rowid,'SMALLFILE') from st0;

DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID,'SMALLFILE')

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

5

2- 在smallfile表空间里从表的rowid中获取相对文件号的信息 :

SQL> create table bt01 (c number) tablespace big01;

Table created.

SQL> insert into  bt01 values (1);

1 row created.

SQL> select dbms_rowid.rowid_relative_fno(rowid,'BIGFILE') from bt01;

DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID,'BIGFILE')

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

1024

9.bigfile表空间支持alter table move

支持smallfile 表空间总的对象move至bigfile 表空间

SQL> select name, bigfile, table_name from dba_tables t, v$tablespace v

where table_name='T11' and v.name=t.tablespace_name;

NAME                           BIG TABLE_NAME

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

USERS                          NO  T11

SQL> ALTER TABLE scott.emp MOVE TABLESPACE BIG01;

Table altered.

SQL> Select name, bigfile, table_name from dba_tables t, v$tablespace v

2            where table_name='T11' and v.name=t.tablespace_name;

NAME                           BIG TABLE_NAME

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

BIG01                          YES T11

特性限制

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

新特性仅支持

--> locally managed tablespaces 本地管理表空间

--> with ASSM (automatic segment space management) ASSM管理表空间

本文出自 “O Record” 博客,请务必保留此出处

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值