bigfile表空間 smallfile表空間
阿新 • • 發佈:2018-12-29
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管理表空間
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管理表空間