日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ORACLE DBA学习笔记--表空间的管理(tablespace)

發(fā)布時間:2024/8/26 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE DBA学习笔记--表空间的管理(tablespace) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

表空間是個邏輯概念。

表空間是ORACLE的最大邏輯結(jié)構(gòu)。表空間是組織數(shù)據(jù)和分配空間的邏輯結(jié)構(gòu)。

特性:

一個表空間有多個數(shù)據(jù)文件組成,但一個數(shù)據(jù)文件只屬于一個表空間

一個數(shù)據(jù)庫可以有多個表空間,可以在數(shù)據(jù)庫中創(chuàng)建,刪除表空間。

一個表空間只屬于一個數(shù)據(jù)庫,

一個表空間的大小等于所有數(shù)據(jù)文件的大小之和。

表空間可以聯(lián)機,脫機(系統(tǒng)表空間和帶有回滾段的表空間不能OFFLINE

數(shù)據(jù)庫對象、表、索引的數(shù)據(jù)被存儲在表空間的數(shù)據(jù)文件中。

一個用戶默認使用一個表空間

作用:

控制數(shù)據(jù)庫所占的磁盤空間。

表是SEGMENT的一種。

表空間分類:

表空間

作用

系統(tǒng)表空間(SYSTEMSYSAUX

此表空間必須存在,一般用戶存放數(shù)據(jù)字典表

臨時表空間(TEMP

用戶排序,分組,索引等

撤消表空間(UNDO

用戶ROLLBACK,從邏輯中恢復(可以創(chuàng)建多個表空間,但只能激活一個表空間)


表空間的區(qū),段管理方式

表空間是按區(qū)和段空間進行管理。

表空間的管理方式

1.??字典管理方式:使用數(shù)據(jù)字典來管理存儲空間的分配,當表空間分配新的區(qū)、或者回收已分配的區(qū)時,ORACLE會對數(shù)據(jù)字典對應的表進行查詢、更新。且使用單線程,速度慢,并且回產(chǎn)生回退和重做信息。

(注意:在字典管理方式下,如果對某個表進行更新,這是回產(chǎn)生存儲操作,而該操作又回產(chǎn)生回滾和重做操作,導致對回滾段和重做日志文件進行讀寫,從而又產(chǎn)生存儲管理操作,因此形成遞歸現(xiàn)象)

2.??本地管理方式:ORACLE 9i默認方式,表空間中區(qū)分配和區(qū)回收的管理信息都被存儲在表空間的數(shù)據(jù)文件中,而與數(shù)據(jù)字典無關(guān)。表空間為每個數(shù)據(jù)文件維護一個位圖結(jié)構(gòu),用于記錄表空間的區(qū)分配情況。當表空間分配新的區(qū)、或者回收已分配的區(qū)時,ORACLE會對文件中的位圖進行更新,所以不會產(chǎn)生回滾和重做信息。

優(yōu)點:

(1)???????提高存儲管理的速度和并發(fā)性。

(2)???????產(chǎn)生磁盤碎片

(3)???????不產(chǎn)生遞歸管理

(4)???????沒有系統(tǒng)回滾段

?

通過dba_tablespaces可以查看各個表空間的區(qū)、段管理方式;

select TABLESPACE_NAME,STATUS,EXTENT_MANAGEMENT,ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces


表空間的狀態(tài):

1.?讀寫狀態(tài)

只讀(READ-ONLY):任何人無法寫入數(shù)據(jù),無法修改數(shù)據(jù)。

讀寫(READ-WRITE):任何有權(quán)限的用戶都可以讀寫。

修改為只讀:

ALTER TABLESPACE WORKDATA01 READ ONLY(此TABLESPACE過程在下次啟動時候依然為只讀)


如果此時插入數(shù)據(jù)則出現(xiàn)如下錯誤:


1.?脫機狀態(tài)

正常模式(NORMAL):進入脫機時,必須保證該表空間的數(shù)據(jù)文件處于聯(lián)機,ORACLE會執(zhí)行一個CHECKPOINT,以便SGA區(qū)中的臟數(shù)據(jù)都能寫入數(shù)據(jù)文件中。然后在關(guān)閉表空間的所有文件。下一次啟動時候就不用進行數(shù)據(jù)庫恢復了。

臨時模式(TEMPORARY):不須保證該表空間的數(shù)據(jù)文件處于聯(lián)機,如果某個數(shù)據(jù)文件不可用,則回忽略錯誤,進入TEMPORARY?模式,ORACLE會執(zhí)行一個CHECKPOINT,下一次啟動時候可能需要進行數(shù)據(jù)庫恢復

立即模式(IMMEDIATE):ORACLE會執(zhí)行一個CHECKPOINT,直接將該表空間的所有數(shù)據(jù)文件都設(shè)置為脫機狀態(tài),恢復為聯(lián)機時必須進行數(shù)據(jù)庫恢復

用于恢復模式(FOR RECOVER):如果要對表空間進行基于時間的恢復,可以使用這模式,

然后DBA就可以進行備份的數(shù)據(jù)文件來覆蓋原有的數(shù)據(jù)文件,而后根據(jù)這些數(shù)據(jù)文件上,利用歸檔日志,就可以將表空間恢復為某個時間點的狀態(tài)。

演示將表空間脫機:

ALTER TABLESPACE USERS OFFLINE NORMAL(默認)


從圖可以看出IMMEDIATE無須表空間處于聯(lián)機狀態(tài),就能實現(xiàn)脫機


OFFLINE之后無法在該表空間做任何操作。

表空間的管理準則

表空間的管理主要是:確定其大小、創(chuàng)建、刪除,修改表空間、設(shè)置狀態(tài)等。

確定表空間的大小:

1.??確定表的大小。

PCTFREE—空閑百分比

表的大小=最大行數(shù)*行數(shù)*1+PCTFREE/100*預留的百分比

2.??確定表空間的大小:

表空間的大小=表的大小*表的數(shù)量

對于撤消表空間:

UNDO_RETENTION(表示在UNDO表空間保留多長時間的撤消信息,如果表空間不足,則未完成的或撤消事務有可能被新的事務覆蓋)參數(shù)的限制。

UNDO表空間大小=

(UNDO_PETENTION*每秒的撤消塊*DB_BLOCK_SIZE)+DB_BLOCK_SIZE

?

顯示UNDO_RETENTION參數(shù)


顯示DB_BLOCK_SIZE參數(shù)


表空間的創(chuàng)建

使用autoallocate分配方式:自動給存放對象分配相應大小的區(qū)的方式,可能造成磁盤空間的浪費。

create tablespace workdata01

datafile 'd:\oracle\oradata\work\workdata01_01.dbf' size?1M,

'd:\oracle\oradata\work\workdata01_02.dbf' size?1M?autoallocate;


使用uniform方式:給所有對象分配相同的大小的區(qū),最小1K

create tablespace workdata02

datafile 'd:\oracle\oradata\work\workdata02_01.dbf' size?1M

uniform size 128K;

查看表空間的數(shù)據(jù)文件:

select file_name,tablespace_name from dba_data_files where tablespace_name='WORKDATA01'


指定數(shù)據(jù)文件的的擴展方式

使用此方式時候,一般需要指定數(shù)據(jù)文件的最大SIZE,以免數(shù)據(jù)文件無限制擴展。


?

CREATE TABLESPACE WORKDATA01

DATAFILE ' D:\ORACLE\ORADATA\WORK\WORKDATA01_01.DBF' SIZE?1M

AUTOEXTEND ON NEXT?2M?MAXSIZE?10M;

創(chuàng)建臨時表空間(區(qū)分配無法指定為AUTOALLOCATE)

如果數(shù)據(jù)庫經(jīng)常有大量排序操作,則為了提高性能就需要創(chuàng)建多個臨時表空間。

CREATE TEMPORARY TABLESPACE TEMP_WORKDATA01

TEMPFILE ' D:\ORACLE\ORADATA\WORK\TEMP_WORKDATA01_01.DBF ' SIZE?1M

UNIFORM SIZE 64K;


創(chuàng)建撤消表空間(只能使用本地管理方式而不是數(shù)據(jù)字典管理方式,無法指定統(tǒng)一區(qū)的大小的選項):

正在使用的UNDO表空間無法刪除。當UNDO表空間沒有未提交的事務時候才能刪除。

通過select * from v$transaction來查詢:



指定UNIFORM時出現(xiàn)的錯誤。


修改表空間

為表空間增加數(shù)據(jù)文件

ALTER TABLESPACE WORKDATA01

ADD DATAFILE 'D:\ORACLE\ORADATA\WORK\WORKDATA01_02.DBF' SIZE?1m


修改數(shù)據(jù)文件:

ALTER DATABASE

'D:\ORACLE\ORADATA\WORK\WORKDATA01_02.DBF'

RESIZE?4M


刪除表空間:

DROP TABLESPACE WORKDATA02 INCLUDING CONTENTS AND DATAFILES;

此語句刪除非空的表空間以及對應的數(shù)據(jù)文件。


查詢表空間信息:

數(shù)據(jù)字典

作用

V$TABLESPACE

表空間的標號和信息

DBA_TABLESPACES

表空間的標號和信息

USER_TABLESPACES

表空間的標號和信息

DBA_TABLESPACE_GROUPS

?

DBA_SEGMENT

表空間段的信息

USER_SEGMENT

表空間段的信息

DBA_EXTENTS

表空間的數(shù)據(jù)盤區(qū)的信息

USER_EXTENTS

表空間的數(shù)據(jù)盤區(qū)的信息

DBA_FREE_SPACE

表空間的空閑信息

USER_FREE_SPACE

表空間的空閑信息

V$DATAFILE

數(shù)據(jù)文件以及所屬表空間的信息

V$TEMPFILE

臨時文件以及臨時表空間的信息

?DBA_DATA_FILES

數(shù)據(jù)文件以及所屬表空間的信息

DBA_TEMP_FILES

臨時文件以及臨時表空間的信息

V$TEMP_SPACE_HEADER

臨時文件的空閑信息

V$SORT_SEGMENT

每個排序段的信息

V$SORT_USER

用戶使用的臨時排序信息


查詢表空間的空閑信息:

SELECT TABLESPACE_NAME ,SUM(BYTES/1024/1024) FREESPACE FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME=’WORKDATA01’

GROUP BY TABLESPACE_NAME



實際中可能有如下錯誤:
ORA-01653:此錯誤表明表空間數(shù)據(jù)文件設(shè)置小了。
使用上面的為表空間增加數(shù)據(jù)文件的命令即可。

總結(jié)

以上是生活随笔為你收集整理的ORACLE DBA学习笔记--表空间的管理(tablespace)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。