中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

表空間和數據文件的管理

發布時間:2020-08-15 21:47:16 來源:ITPUB博客 閱讀:206 作者:llnnmc 欄目:關系型數據庫

本文概要介紹了Oracle數據庫表空間存儲分配和管理的主要特性及操作。

一、表空間的物理關系和邏輯關系

表空間和數據文件的管理 database:數據庫。
users:用戶,一個數據庫包含多個用戶。
schema:數據庫對象根據用戶與對象的從屬關系組織為不同的模式,一個數據庫用戶所擁有的所有對象稱為一個模式,模式名與用戶名相同,一個用戶模式下的所有數據庫對象是通過多個類型的段來存儲的。
tablespace:表空間,從性能和管理上做邏輯劃分,總體上可劃分為系統表空間、撤銷表空間、臨時表空間、用戶表空間。應盡量減少系統表空間的負擔,用戶數據不要放在系統表空間。10g之后多了SYSAUX表空間(輔助系統表空間),主要用于記錄大量的自調整、優化分析的數據等。
data file:數據文件,大塊數據順序訪問用一個,小塊數據隨機訪問用多個。
segment:段,一種存儲結構,不同類型的數據庫對象以不同的段形式存在,如數據段、索引段、臨時段、撤銷段等。
extent:范圍,Oracle表空間內部分配和回收空間的最小單位,由若干連續的數據塊構成。范圍的大小分配由創建表空間時指定,未指定時則采用Oracle的默認存儲參數。
data block:Oracle數據塊,Oracle的最小IO單位,由多個操作系統塊(os block)組成。主塊大小由初始化參數db_block_size指定(一般默認8K),從塊大小在創建表空間時指定。設定db_nk_cache_size參數為1,在SGA中可分配非標準的DB塊內存,如db_2k_cache_size、db_4k_cache_size、db_32k_cache_size等。
os block:操作系統塊,大小由操作系統決定。

二、表空間存儲參數的設置

1、文件屬性的設置

大文件(bigfile)與小文件(smallfile):大文件是Oracle 10g開始引進的特性,大文件表空間建立在單個數據文件上,文件大小可達32TB。而小文件表空間由一至多個數據文件構成。大文件特性主要為超大型數據庫設計,為了克服在數據變更時Oracle要更新所有數據文件頭信息而可能帶來的效率問題。要使用大文件表空間,在創建表空間時使用bigfile或smallfile關鍵字,create [bigfile | smallfile] tablespace,省略時默認為小文件表空間。

自動擴展(autoextend):autoextend on | off

文件狀態信息:online | offline

表空間的數據文件可以同時創建多個
create [bigfile | smallfile] tablespace mytbs
datafile 'd:\oradata\mes\mytbs01.dbf' size 100m autoextend on next 10m [maxsize 500m | unlimited],
'd:\oradata\mes\mytbs02.dbf' size 100m autoextend off;

2、空間管理的方式

Oracle提供兩類參數設置:范圍管理,段空間管理。

范圍管理(extent management):決定范圍分配信息的存儲位置,有數據字典管理(dictionary)和本地管理(local)兩種方式。前者將表空間的范圍分配信息存儲于系統表空間的數據字典中,后者將范圍分配信息以bitmap形式存儲于表空間數據文件頭部的特殊區域。Oracle推薦并默認使用本地管理的表空間,以提高表空間的操縱性能,Oracle保留數據字典方式管理的表空間只是為了向后兼容。如果system表空間是本地管理的,則不允許創建數據字典管理的表空間。

段空間管理(segment space management):指定段內空間的管理方式,有auto和manual兩種。Oracle推薦使用auto管理方式,manual方式為向后兼容所保留,這需要手動設置段空間的使用參數pct_free和pct_used等。

創建表空間時指定范圍管理和段空間管理方式
create [bigfile | smallfile] tablespace mytbs
datafile 'd:\oradata\mes\mytbs01.dbf' size 100m autoextend on next 10m [maxsize 500m | unlimited],
'd:\oradata\mes\mytbs02.dbf' size 100m autoextend off
extent management [local | dictionary] autoallocate | uniform size 512k
segment space management [auto | manual];

為了減少不必要的額外I/O操作,uniform size的最佳大小應為參數db_block_size和參數db_file_multiblock_read_count設定值兩者的乘積。

3、內部存儲參數的設置

創建表空間時如果指定用老式的數據字典范圍管理方式,則可進一步設置默認的存儲參數(default storage),以控制段內空間的范圍分配。
另可通過關鍵字blocksize指定表空間的非標準數據塊大小,否則按標準數據塊大小(db_block_size參數指定)來設置。創建非標準數據塊大小的表空間,需要事先在SGA中分配非標準數據塊的內存區域,可通過參數db_nk_cache_size = 1來設定。

default storage(
[initial n K|M]
[next n K|M]
[minextents n]
[maxextents n|unlimited]
[pctincrease n]

initial:段空間分配的第一個范圍的字節數。當用戶創建模式對象時,Oracle為范圍分配空間。
next:分配下一個范圍的字節數。
minextents:指定當創建對象時分配范圍的最小數目,默認為1,含義是Oracle僅分配初始范圍,最大值取決于操作系統。如果minextents大于1,則Oracle根據initial、next、pctincrease的值計算下一個范圍的大小。
maxextents:指定Oracle可以分配給一個段結構范圍的最大數目,包括第一個范圍。最小值為1,默認值和最大值取決于操作系統。unlimited表示按需要自動分配范圍數目。
pctincrease:指定第三個和以后的范圍比前一個范圍增大的百分比。早期默認值是50,表示每個擴展比前一個大50%,最小值為0,表示第一個范圍之后的所有范圍的大小都相同。pctincrease參數設定大于0,可令表空間中的小段擁有小的范圍,大段擁有大的范圍并使范圍的數目盡可能少。

使用舉例
create tablespace mytbs
datafile 'd:\oradata\mes\mytbs01.dbf' size 100m
blocksize 4096
default storage(
initial 256k
next 256k
minextents 2
maxextents 100
pctincrease 50);

此代碼創建前需要對非標準數據塊數據緩沖區db_4k_cache_size進行設置
alter system set db_4k_cache_size=1;

之后可看到Oracle實際分配的緩沖區大小
show parameter db_4k_cache_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_4k_cache_size                     big integer 32M

從Oracle 10g開始,創建表空間時自動設置為extent management local autollocate和segment space management auto,此時create tablespace語句將忽略default storage子句。

三、表空間的維護管理

1、更改表空間的狀態

表空間脫機,如在做系統恢復、數據文件移位等操作時。system表空間、默認的臨時表空間、包含活動回滾段的表空間(當前的撤銷表空間)不能脫機。
alter tablespace … offline;

offline包括三種模式:
offline normal:默認,所有數據文件做檢查點,有脫機的數據文件時則無法正常脫機。
offline immediate:立即,脫機時不做檢查點,用于基于時間點的恢復。
offline temporary:臨時,所有聯機的數據文件做檢查點,數據文件可分聯機和脫機,未聯機的不管,則恢復時可能需要介質恢復。

表空間聯機
alter tablespace … online;

對于一些用來專門存儲歷史或靜態數據的表空間,可將其設置為只讀狀態,可以防止對數據的意外更新、刪除。只讀表空間不必周期性備份,只需備份一次即可。

表空間設置為只讀
alter tablespace … read only;

表空間設置為默認的可讀寫
alter tablespace … read write;

2、表空間重命名

alter tablespace … rename to …;

3、刪除表空間

drop tablespace … [including contents [and datafiles]];

當表空間中包含有永久的數據庫對象時,必須顯示指定including contents子句。若要一并刪除磁盤上的操作系統文件,可同時指定and datafiles子句,否則僅將表空間從數據字典中刪除。

表空間一旦刪除,其中數據將永久丟失,因此在正式刪除表空間前,最好先將其設置為offline狀態,經時間考驗確認不再需要后再刪除。

4、表空間的擴容

三種方法:

1)打開表空間數據文件的自動擴展屬性。
alter database datafile 'd:\oradata\mes\mytbs01.dbf' autoextend on;

2)手動調整已有數據文件的大小,使用alter database語句,如
alter database datafile 'd:\oradata\mes\mytbs01.dbf' resize 200m;

對于臨時表空間文件
alter database tempfile 'd:\oradata\mes\temp01.dbf' resize 200m;

resize也可以將數據文件尺寸調小,前提是已有的數據能夠被新的大小容納。

3)為表空間添加新的數據文件,使用alter tablespace語句,如
alter tablespace mytbs add datafile 'd:\oradata\mes\mytbs02.dbf' size 200m;

對于臨時表空間文件
alter tablespace temp add tempfile 'd:\oradata\mes\temp02.dbf' size 200m;

表空間數據文件一旦添加,則不能從中去除,除非刪除整個表空間。

5、合并自由空間

基于數據字典管理的表空間,在經過一段時間的使用后,由于不斷的分配和釋放空間,表空間中的碎片會逐漸增多,此時可以對自由空間做合并。
alter tablespace … coalesce;

本地管理的表空間對此做了改善,不需要該操作。

6、臨時表空間

主要用于存放臨時排序數據等,數據首先會存放在PGA內存的排序區中,排序區大小由參數sort_area_size指定。
show parameter sort_area_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sort_area_size                       integer     65536

創建臨時表空間
create temporary tablespace ... tempfile '...';

修改數據庫默認的臨時表空間
alter database default temporary tablespace ...;

查看數據庫默認的臨時表空間
col property_value for a30
select property_value from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
------------------------------
TEMP

7、撤銷表空間

數據庫當前的UNDO表空間由參數undo_tablespace指定
show parameter undo_tablespace;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1

創建撤銷表空間
create undo tablespace UNDOTBS2 datafile 'd:\oradata\mes\undotbs02.dbf' size 200m autoextend on;

將數據庫的默認UNDO表空間切換到新創建的表空間
alter system set undo_tablespace = UNDOTBS2;

查看更改結果
show parameter undo_tablespace;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS2

四、數據文件的管理

管理數據文件需要考慮以下幾方面的問題:

1、數據文件的數量

操作系統會限制每個過程可同時打開的文件數量。
Oracle會限制每個數據庫實例可打開的數據文件的數量,該限制由初始化參數db_files決定。
在創建數據庫時,參數maxdatafiles決定了在控制文件中用于記錄數據文件的部分的大小,這也限制了數據庫可擁有的數據文件數量。
少量的大數據文件要優于大量的小數據文件,因為這樣可以減少同時打開的文件個數,減少對數據文件頭部的更新數。

2、數據文件的尺寸

除SYSTEM、SYSAUX、UNDO、TEMP等幾個系統必要的表空間需要保證其大小外,其余表空間根據數據量需要確定大小,無特殊限制。

3、數據文件的位置

數據文件的物理位置將影響數據庫性能。
應考慮將數據文件和索引文件分別放在不同的磁盤上以改善性能。
應考慮將數據文件和日志文件放在不同的磁盤上,避免讀寫數據文件和寫日志文件的I/O競爭。
出于安全考慮也應將數據文件和日志文件分磁盤存放,若日志組有多個日志成員,這些成員應分別置于不同的物理磁盤上,以保證日志文件的安全性。

4、OMF的數據文件

Oracle管理的數據文件,由Oracle來管理定義文件名和路徑,不再需要手工指定數據文件。可以OMF的文件包括:
Datafiles
Tempfiles
Redo log files
Control files
Block change tracking files

通過設定參數db_create_file_dest來指定目標文件位置
alter system set db_create_file_dest='d:\oradata';

不再需要指定數據文件
create tablespace …;
此時Oracle在指定路徑下的<SID>\DATAFILE\下自動創建了數據文件,如d:\oradata\mes\DATAFILE\O1_MF_MYTBS_FV8S2RLX_.DBF,默認大小100M,且autoextend屬性為unlimited。

可以自定義文件大小
create tablespace ... datafile size 200m;

增加數據文件
alter tablespace ... add datafile;

五、數據文件的維護操作

1、為表空間添加數據文件
alter tablespace mytbs add datafile 'd:\oradata\mes\mytbs02.dbf' size 200m;

2、改變數據文件大小,這里的操作同前面描述的給表空間擴容的操作類似。

1)通過允許或禁止數據文件的自動擴展
alter database datafile 'd:\oradata\mes\mytbs01.dbf' autoextend on;

2)通過手工改變數據文件的大小
alter database datafile 'd:\oradata\mes\mytbs01.dbf' resize 200m;

3、改變數據文件的可用性

1)數據文件聯機
alter database datafile 'd:\oradata\mes\mytbs01.dbf' online;

2)數據文件脫機
alter database datafile 'd:\oradata\mes\mytbs01.dbf' offline [drop];

數據庫打開時被脫機的數據文件,在回到聯機狀態時,需要介質恢復。對于非歸檔模式的數據庫來說,脫機需使用drop選項,脫機后如果進行了日志切換,文件將無法恢復。

4、重定位數據文件

方法1:重定位表空間的數據文件,需要表空間脫機。

1)alter tablespace … offline;
2)將數據文件復制到新的位置,按需要重命名
3)alter tablespace … rename datafile '…' to '…';
或 alter database rename file '…' to '…';
4)alter tablespace … online;

方法2:重定位數據庫文件,適用于不能脫機的表空間,該方法同樣適用于對聯機日志文件的重定位。

1)啟動數據庫到mount狀態
2)復制或移動數據庫文件到新位置,按需要重命名
3)alter database rename file '…' to '…';
4)打開數據庫

六、沒有備份情況下數據文件的恢復實驗

在歸檔模式下實驗:

1)創建一個表空間mytbs(mytbs01.dbf)
2)在mytbs表空間內創建一張表t1(insert into)
3)shutdown immediate
4)手工刪除表空間mytbs的數據文件
5)startup
6)將數據文件mytbs01.dbf脫機
7)alter database open;
8)alter database create datafile '…\mytbs01.dbf';
9)recover datafile '…\mytbs01.dbf';
10)將數據文件mytbs01.dbf聯機
11)檢查數據是否恢復


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沁源县| 永顺县| 双峰县| 龙陵县| 出国| 元阳县| 江门市| 类乌齐县| 梁平县| 东莞市| 建宁县| 历史| 梅河口市| 水富县| 五家渠市| 长乐市| 墨脱县| 大城县| 屯留县| 德惠市| 五莲县| 泸定县| 昭通市| 上林县| 汤阴县| 上栗县| 清镇市| 监利县| 淄博市| 满洲里市| 大安市| 平阴县| 东海县| 伊宁县| 渑池县| 定陶县| 昌吉市| 海阳市| 吉木萨尔县| 雷波县| 高尔夫|