Oracle 11g Release 1 (11.1) 表空間——簡單管理永久表空間
轉至:https://www.cnblogs.com/liuning8023/archive/2012/07/14/2591644.html
本文內容
- 建立表空間
- 查看錶空間
- 修改表空間可用性/可讀寫性
- 刪除表空間
- Toad 建立表空間
- 參考資料
- 修改記錄
假設資料庫為 Oracle 11g,在 SQL *PLUS 下,用 SYS 使用者登入。本文演示建立(永久)表空間,之後,查看錶空間資訊,再修改表空間的配置,最後,刪除表空間。
建立表空間
Oracle 按照區和段空間進行管理表空間。
區管理方式 - 針對區的分配方式的不同,有兩種方式:字典管理方式(dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。Oracle 10g開始強烈建議使用 LMT 方式。從 Oracle 9i 開始,建立表空間時預設使用 LMT。
其中,LMT 區的分配方式:
- 統一(UNIFORM)- 統一分配。指定表空間中所有區的大小都相同。預設值是 1MB。
- 自動(AUTOALLOCATE 或 SYSTEM)- 自動分配。指定有 Oracle 系統來自動管理區的大小。這是預設設定。
段管理方式 – LMT 方式,除了可以指定區的分配方式外,還可以指定段的管理方式。段空間管理方式主要是指 Oracle 用來管理段中已用資料塊和空閒資料塊的機制。分為兩種:
- 手動(MANUAL)- Oracle 將使用空閒列表(free list)管理段的已用資料塊和空閒資料塊。這是傳統的段空間管理方式,為了與以前的版本相容。
- 自動(AUTO)- Oracle 將使用點陣圖(bitmap)來管理段的已用資料塊和空閒資料塊。通過點陣圖中單元的取值判斷段中的資料塊是否可用。
字典管理方式不存在段管理。
下面示例演示用本地管理方式建立表空間。
示例 1:使用 AUTOALLOCATE 區分配方式建立表空間 mytbs01,資料檔案是 D:\oracledata\mytbs01_1.dbf,大小為 2M。
create tablespace mytbs01
datafile 'D:\oracledata\mytbs01_1.dbf' size 2M
autoallocate;
示例 2:使用 UNIFORM 區分配方式建立表空間 mytbs02,資料檔案是 D:\oracledata\mytbs02_1.dbf 和 D:\oracledata\mytbs02_2.dbf
create tablespace mytbs02
datafile 'D:\oracledata\mytbs02_1.dbf' size 1M,
'D:\oracledata\mytbs02_2.dbf' size 2M
uniform size 128k;
示例 3:建立表空間 mytbs03,並指定資料檔案擴充套件方式為自動增長,每次 1M,最大擴充套件到 11M。
create tablespace mytbs03
datafile 'D:\oracledata\mytbs03_1.dbf' size 1M
autoextend on next 2M maxsize 11M;
此時,就不能再指定 UNIFORM。
示例 4:使用 AUTO 段管理方式。建立表空間 mytbs04,採用 UNIFORM 區分配管理方式,大小為預設值;用 segment space management 指定段管理方式。
create tablespace mytbs04
datafile 'D:\oracledata\mytbs04_1.dbf' size 3M reuse
uniform
segment space management auto;
一個較完整的建立表空間的語句如下所示:
CREATE TABLESPACE mytbs DATAFILE'mytbs01' SIZE 10M AUTOEXTEND ON NEXT 5120M MAXSIZE UNLIMITEDLOGGINGEXTENT MANAGEMENT LOCAL AUTOALLOCATEBLOCKSIZE 8KSEGMENT SPACE MANAGEMENT AUTOFLASHBACK ON;
查看錶空間
可以通過下面 Oracle 系統表檢視上面建立的表空間的相關資訊。
- dba_tablespaces - 資料庫表空間管理資訊。
- dba_data_files - 資料庫表空間檔案管理資訊。
- dba_free_space - 資料庫表空間檔案使用資訊。
示例 5:表空間使用情況,包括表空間名稱、DBF 檔案個數、總大小、剩餘/佔用大小等等。
select a.tablespace_name as "表空間名稱",
c.pieces as "DBF檔案個數",
a.totalspace || 'M' as "總大小",
b.freespace || 'M' as "剩餘大小",
a.totalspace - nvl(b.freespace, 0) || 'M' as "佔用大小",
c.max_blocks as "最大塊",
c.min_blocks as "最小塊",
c.avg_blocks as "平均塊",
c.sum_blocks as "塊總數"
from (select t1.tablespace_name, sum(t1.bytes) / 1024 / 1024 as totalspace
from dba_data_files t1
group by t1.tablespace_name) a,
(select t2.tablespace_name, sum(t2.bytes) / 1024 / 1024 as freespace
from dba_free_space t2
group by t2.tablespace_name) b,
(select t.tablespace_name,
count(*) as pieces,
max(t.blocks) as max_blocks,
min(t.blocks) as min_blocks,
avg(t.blocks) as avg_blocks,
sum(t.blocks) as sum_blocks
from dba_free_space t
group by t.tablespace_name) c
where a.tablespace_name = b.tablespace_name
and b.tablespace_name = c.tablespace_name
示例 6:表空間資訊參看,包括表空間名稱、路徑、型別、管理方式、區管理方式、段管理方式和是否自動增長。
select t1.tablespace_name as "表空間名稱",
t2.file_name as "檔名",
t1.contents as "型別",
t1.extent_management as "管理方式",
t1.allocation_type as "區管理方式",
t1.segment_space_management as "段管理方式",
t2.autoextensible as "是否自動擴充套件",
t1.status as "是否聯機"
from dba_tablespaces t1, dba_data_files t2
where t1.tablespace_name = t2.tablespace_name
修改表空間可用性/可讀寫性
示例 7:修改表空間可用性——聯機/離線。
SQL> alter tablespace mytbs01 offline;
表空間已更改。
SQL> alter tablespace mytbs01 online;
表空間已更改。
SQL>
表空間是否聯機,表明了表空間是否可用。
讓表空間離線,是為了提高資料檔案的 I/O 效能,可能需要移動特定表空間的資料檔案。為了確保表空間中資料檔案的一致性,在移動資料檔案之前,需要將該表空間修改為離線狀態,以防止其中的資料檔案被修改。
完成對錶空間的維護操作後,應該立即將表空間轉變為 ONLINE 狀態,以便該表空間可以被訪問。
示例 8:修改表空間可讀寫性——只讀/讀寫。
SQL> alter tablespace mytbs01 read only;
表空間已更改。
SQL> alter tablespace mytbs01 read write;
表空間已更改。
SQL>
如果表空間只用於存放靜態資料,或是要將表空間移動到其他資料庫,就應該先將表空間修改為只讀狀態。
刪除表空間
示例 9:刪除表空間,並刪除所有相關的作業系統的資料檔案。
SQL> CREATE TABLESPACE mytbs05
2 DATAFILE 'd:\oracledata\mytbs05_1.dbf' size 1M REUSE
3 AUTOALLOCATE;
表空間已建立。
SQL> ALTER TABLESPACE mytbs05 offline;
表空間已更改。
SQL> DROP TABLESPACE mytbs05 INCLUDING CONTENTS AND DATAFILES;
表空間已刪除。
SQL>
若表空間非空,則必須加 INCLUDING 子句。INCLUDING CONTENTS AND DATAFILES 表明刪除表空間的內容和資料檔案。也可以是 INCLUDING CONTENTS AND DATAFILES cascade constraints 表明除了刪除表空間的內容和資料檔案外,還要刪除其約束。
Toad 建立表空間
以上是關於表空間最簡單的操作。當使用 Toad 建立表空間時,會直觀地看到表空間基本資訊和資料檔案的相關選項。如圖所示。
圖 1 Toad 表空間基本資訊相關選項
圖 2 Toad 表空間資料檔案相關選項
參考資料
- CREATE TABLESPACE http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7003.htm#SQLRF01403
- ALTER TABLESPACE http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3002.htm#SQLRF01002
- DROP TABLESPACE http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9004.htm#SQLRF01807
搜尋
複製