av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle 10g新增表空間類型:大文件表空間

瀏覽:130日期:2023-11-29 13:24:29
這篇論壇文章針對(duì)Oracle 10g新增表空間類型──大文件表空間進(jìn)行了詳細(xì)的介紹,更多內(nèi)容請(qǐng)參考下文:

Oracle 10g 的存儲(chǔ)能力有了顯著的增強(qiáng)。這表現(xiàn)在很多方面,下面介紹 10g 新增的表空間類型:大文件 (Bigfile) 表空間。

大文件表空間從某種角度來說提高了 Oracle 在 VLDB 上的管理能力。 只有自動(dòng)段空間管理的 LMT (Locally Managed Tablespaces ) 支持 BIGFILE 表空間。 大文件表空間只能包含一個(gè)文件,但是文件可以達(dá)到 4G 個(gè)數(shù)據(jù)塊大小。(以下用 BFT 指代 BIGFILE Tablespace。)

BFT 可以和以下存儲(chǔ)技術(shù)結(jié)合使用:

自動(dòng)存儲(chǔ)管理(ASM)

LVM

OMF

理論上的 BFT 可以達(dá)到下面所列的值:

數(shù)據(jù)塊大小(單位:K) BFT 最大值(單位:T) 2k 8T 4k 16T 8k 32T 16k 64T 32k 128T

在實(shí)際環(huán)境中,這還受到操作系統(tǒng)的文件系統(tǒng)的限制。

BFT基本操作

10g 數(shù)據(jù)庫在創(chuàng)建的時(shí)候,會(huì)指定默認(rèn)的表空間類型。如果不特殊指定的話,默認(rèn)為 SMALLFILE 類型的表空間。

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

這種情況下,如果我們創(chuàng)建表空間的時(shí)候不指定類型,那么默認(rèn)創(chuàng)建的都是 SMALLFILE 類型的表空間。可以通過 ALTER DATABASE 命令來修改數(shù)據(jù)庫默認(rèn)的表空間類型:

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>

SQL> ALTER DATABASE SET DEFAULT smallfile TABLESPACE;

創(chuàng)建 BIGFILE 類型的表空間,只需指定額外的一個(gè)參數(shù) BIGFILE 即可,其他和原有創(chuàng)建表空間語法類似:

CREATE BIGFILE TABLESPACE bftbs

DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs01.dbf' SIZE 5M;

DBA_TABLESPACES (USER_TABLESPACES)與 V$TABLESPACE 這兩個(gè)視圖可以查看 BIGFILE 表空間的相關(guān)信息。先看看 DBA_TABLESPACES 在 10g 中有了什么變化:

SQL> desc DBA_TABLESPACES

Name Null? Type

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

TABLESPACE_NAME NOT NULL VARCHAR2(30)

BLOCK_SIZE NOT NULL NUMBER

INITIAL_EXTENT NUMBER

NEXT_EXTENT NUMBER

MIN_EXTENTS NOT NULL NUMBER

MAX_EXTENTS NUMBER

PCT_INCREASE NUMBER

MIN_EXTLEN NUMBER

STATUS VARCHAR2(9)

CONTENTS VARCHAR2(9)

LOGGING VARCHAR2(9)

FORCE_LOGGING VARCHAR2(3)

EXTENT_MANAGEMENT VARCHAR2(10)

ALLOCATION_TYPE VARCHAR2(9)

PLUGGED_IN VARCHAR2(3)

SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)

DEF_TAB_COMPRESSION VARCHAR2(8)

RETENTION VARCHAR2(11)

BIGFILE VARCHAR2(3)

SQL>

和 9i 相比, DBA_TABLESPACES 視圖多了兩列:RETENTION 和 BIGFILE。其中 BIGFILE 列說明該表空間是否為 BFT:

SQL> SELECT tablespace_name, bigfile

2 FROM dba_tablespaces;

TABLESPACE_NAME BIG

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

SYSTEM NO

UNDOTBS NO

SYSAUX NO

TEMP NO

USERS NO

EXAMPLE NO

TEST NO

BFTBS YES

8 rows selected.

V$TABLESPACE 視圖相對(duì) 9i 也增加了新的列:

SQL> desc V$TABLESPACE

Name Null? Type

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

TS# NUMBER

NAME VARCHAR2(30)

INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3)

BIGFILE VARCHAR2(3)

FLASHBACK_ON VARCHAR2(3)

其中 FlASHBACK_ON 和 BIGFILE 列都是新增的。

BFT 屬性

BFT有一些特有的屬性。

1.每個(gè)表空間只能包含一個(gè)數(shù)據(jù)文件。如果試圖添加新的文件,則會(huì)報(bào)告 ORA-32771 錯(cuò)誤:

SQL> ALTER TABLESPACE bftbs

2 ADD DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M;

ALTER TABLESPACE bftbs

*

ERROR at line 1:

ORA-32771: cannot add file to bigfile tablespace

2.只有自動(dòng)段空間管理的 LMT (locally managed tablespaces ) 支持 BFT

SQL> CREATE BIGFILE TABLESPACE bftbs02

2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M

3 EXTENT MANAGEMENT DICTIONARY;

CREATE BIGFILE TABLESPACE bftbs02

*

ERROR at line 1:

ORA-12913: Cannot create dictionary managed tablespace

SQL> CREATE BIGFILE TABLESPACE bftbs02

2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M

3 SEGMENT SPACE MANAGEMENT MANUAL;

CREATE BIGFILE TABLESPACE bftbs02

*

ERROR at line 1:

ORA-32772: BIGFILE is invalid option for this type of tablespace

3.相對(duì)文件號(hào)(RELATIVE_FNO)為1024 ( 4096 on OS/390)

因?yàn)锽FT只有一個(gè)數(shù)據(jù)文件,所以其相對(duì)文件號(hào)也是固定的:1024

SQL> SELECT tablespace_name, file_id, relative_fno

2 FROM dba_data_files;

TABLESPACE_NAME FILE_ID RELATIVE_FNO

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

USERS 4 4

SYSAUX 3 3

UNDOTBS 2 2

SYSTEM 1 1

EXAMPLE 5 5

TEST 6 6

BFTBS 7 1024

7 rows selected.

SQL>

4.rowid的變化

在 BFT 上存儲(chǔ)的表的 ROWID 與 smallfile 表空間上的 rowid 結(jié)構(gòu)有些不同的。要正確得到 rowid 信息,dbms_rowid 包增加了一個(gè)新的參數(shù) ts_type_in 來解決這個(gè)問題。參考這個(gè)范例:

SQL> SELECT DBMS_ROWID.rowid_block_number (ROWID, 'BIGFILE')

2 FROM foo;

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID,'BIGFILE')

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

24

SQL>

你可以創(chuàng)建多大的表空間?

我們?cè)谇懊嫣峒埃珺FT 還受到操作系統(tǒng)的文件系統(tǒng)的限制。下面我們以 Linux 操作系統(tǒng)為例:

SQL> SHOW parameters db_block_size

NAME TYPE VALUE

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

db_block_size integer 8192

SQL>

也就是說,理論上我們可以創(chuàng)建最大 32T (4G*8K) 的表空間。我們可以做到么?

SQL> CREATE BIGFILE TABLESPACE bftbs02

2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 20T reuse;

CREATE BIGFILE TABLESPACE bftbs02

*

ERROR at line 1:

ORA-01119: error in creating database file '/u01/app/oracle/oradata/DEMO/bftbs02.dbf'

ORA-27059: could not reduce file size

Linux Error: 27: File too large

Additional information: 2

SQL>

注意我們得到的操作系統(tǒng)信息(黑色部分):File too large 。這說明超出了操作系統(tǒng)允許值。我所用的環(huán)境是Fedora Core Linux, 內(nèi)核的版本是2.6.9,文件系統(tǒng)是 EXT3 。2.4以后的版本的內(nèi)核都是支持 LFS (Large File Support)的。

文件系統(tǒng)(塊) 文件大小限制 文件系統(tǒng)大小限制 ext2/3 (2K) 256G 8T ext2/3 (4K) 2T 16T ext2/3 (8K) 64T 32T ReiserFS 3.6 1E 16T

我們檢查一下OS文件系統(tǒng)塊大小:

[root@FC3 ~]# tune2fs -l /dev/hda7 | grep Block

Block count: 2621440

Block size: 4096

Blocks per group: 32768

[root@FC3 ~]#

也即,我們可以在操作系統(tǒng)上創(chuàng)建不大于 2T 的文件。雖然我們沒有那么大的存儲(chǔ)空間,不妨也測試一下:

SQL> CREATE BIGFILE TABLESPACE bftbs02

2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 1800g;

在另外一個(gè)終端中,觀察該目錄的變化情況:

[root@FC3 DEMO]# ls -ltr

total 1159048

-rw------- 1 oracle oracle 5251072 Nov 28 20:05 bftbs01.dbf

-rw------- 1 oracle oracle 1932735291392 Nov 28 20:49 bftbs02.dbf

[root@FC3 DEMO]#

哇,我們真的能觀察到Oracle在創(chuàng)建“超大”文件呢,接近1.8T 的文件 :-) 要過一會(huì)兒,Oracle 才會(huì)報(bào)告錯(cuò)誤(畢竟1800G 的大文件):

CREATE BIGFILE TABLESPACE bftbs02

*

ERROR at line 1:

ORA-19502: write error on file '/u01/app/oracle/oradata/DEMO/bftbs02.dbf',

blockno 898048 (blocksize=8192)

ORA-27072: File I/O error

Additional information: 898047

可見,在本例中,由于操作系統(tǒng)文件系統(tǒng)的限制,我們只可以創(chuàng)建2T以下的 BFT。

你需要BFT么?

應(yīng)用 BFT 的話,優(yōu)點(diǎn)缺點(diǎn)都存在。根據(jù) Oracle 官方的文檔,DB_FILES 和 MAXDATAFILES 這兩個(gè)參數(shù)的值給 SGA 帶來的壓力會(huì)減輕(原來的壓力就很大么?)。數(shù)據(jù)庫中最大數(shù)據(jù)文件數(shù)是有限的 (64K files),BFT 的出現(xiàn)的確對(duì)海量數(shù)據(jù)庫有一定的積極意義。從一定程度上來說,BFT 簡化了管理,但是在恢復(fù)的時(shí)候可能是一場災(zāi)難。

在筆者看來,至少我們現(xiàn)在在大多數(shù)情況下不需要用BFT。

標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 天天干狠狠操 | 午夜av电影| 国产精品日韩欧美一区二区三区 | 日韩一区二区在线视频 | 狠狠ri| 精品亚洲一区二区三区 | 亚洲导航深夜福利涩涩屋 | 天堂色综合 | 欧美国产视频 | 一级毛片视频在线观看 | 视频一区二区在线观看 | 久久久久国产一区二区三区四区 | 欧美成人一区二区三区 | 中文字幕免费视频 | 观看av| 又爽又黄axxx片免费观看 | 国产精品无码久久久久 | 亚洲成人精品在线 | 福利视频大全 | 91在线视频免费观看 | 国产丝袜一区二区三区免费视频 | 福利在线观看 | 一区二区三区视频在线免费观看 | h漫在线观看 | 日韩中文字幕在线不卡 | 日本一区二区高清不卡 | 综合久| 天天操狠狠操 | 中文字幕精品一区二区三区在线 | 亚洲444kkkk在线观看最新 | 黄色网址在线播放 | 1级毛片 | 中文字幕av一区 | 欧美一区二区免费 | 国产一区免费视频 | 精品欧美色视频网站在线观看 | 国产成人精品一区二区三区在线观看 | 久久在线 | 国产精品久久av | 精品欧美一区二区在线观看视频 | 蜜桃av一区二区三区 |