表空間(TableSpace)

来源:http://www.cnblogs.com/qianyuliang/archive/2017/08/10/7339406.html
-Advertisement-
Play Games

我們知道Oracle資料庫真正存放數據的是數據文件(Data File),oracle表空間(tablespace)實際上是一個邏輯的概念,在物理上是並不存在的,那麼把一組data files捻在一起就成為一個表空間。表空間屬性:一個資料庫可以包含多個表空間,一個表空間只能屬於一個資料庫一個表空間包 ...


我們知道Oracle資料庫真正存放數據的是數據文件(Data File),oracle表空間(tablespace)實際上是一個邏輯的概念,在物理上是並不存在的,那麼把一組data files捻在一起就成為一個表空間。

表空間屬性:
一個資料庫可以包含多個表空間,一個表空間只能屬於一個資料庫
一個表空間包含多個數據文件,一個數據文件只能屬於一個表空間
表空間可以劃分成更細的邏輯存儲單元:

Oracle資料庫的存儲空間結構:


從邏輯的角度來看,一個資料庫(database)下麵可以分多個表空間(tablespace);一個表空間下麵有可以分多個段(segment);一個數據表要占一個段(segment),一個索引也要占一個段(segment)。一個段(segment)由多個區間(extent)組成,那麼一個區間又由一組連續的數據塊(data block)組成,這連續的數據塊是在邏輯上是連續的,有可能是物理邏輯上是分散
那麼從物理的角度上看,一個表空間由多個數據文件組成,數據文件是實實在在存在的磁碟文件,這些文件是由oracle資料庫操作系統的block組成的

Segment(段):段是指占用數據文件空間的通稱,或資料庫對象使用的空間的稽核;段可以由表段、索引段、回滾段、臨時段、和高速緩存段等。
Extent(區間):分配給對象的任何連續塊就叫區間;區間也叫擴展,因為當它用完已經分配的區間後,再有新的記錄插入就必須在分配新的區間(即擴展一些塊);一旦區間分配某個對象(表,索引或簇),則該區間就不能再分配給其它的對象

1,查看表空間的名稱及大小

select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name


2、查看表空間物理文件的名稱及大小

select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from dba_data_files
order by tablespace_name;

select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from dba_temp_files
order by tablespace_name;


3、查看表空間的使用情況
select sum(bytes) / (1024 * 1024) as free_space, tablespace_name
from dba_free_space
group by tablespace_name;
SELECT * from DBA_TEMP_FREE_SPACE;

SELECT UPPER(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') "使用比",
F.TOTAL_BYTES "空閑空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC;

 

 
4、查看/修改Database的Default Temporary Tablespace
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE
PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

5,--查看表空間是否具有自動擴展的能力  

SELECT T.TABLESPACE_NAME,
D.FILE_NAME
D.AUTOEXTENSIBLE,
D.BYTES,
D.MAXBYTES,
D.STATUS
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME, FILE_NAME;


當資料庫剛建立起來,系統會建立一個叫做SYSTEM的系統的TableSpace,存放SYS,SYSTEM等User重要的系統數據(ex:數據字典與預存儲程式等)建立oracle User時,不指定預設的TableSpace,則此User則會以System TableSpace 作為預設的TableSpace,這造成管理上的混亂與嚴重的效能問題,這是必須註意的

TableSpace的類型:Permanent、Undo、Temporary
Permanent TableSpace:創建給AP使用的都是。裡面的對象的生命周期不會隨著交易或者用戶的session結束而消失
Undo TableSpace:是兄用的特殊的tablespace,用來取代過去的rollback segement的機制,主要的功能是提供用戶修改數據未commit之前的read consistency的功能以及rollback交易的功能。也因為undo tablespace主要是取代過去的rollback segement的機制,所以不能存放其他種類的segement。只能是local managed。
創建undo 類型的表空間:

create undo tablespace  undo1 datafile '/oracle/product/oradata/ora10/paul01.dbf' size 20m;

 

 
Temporary Tablespace
  Temporary Tablespace也是系統用的特殊的Tablespace。當使用者需要做排序時,有時就會使用Temporary Tablespace,因此裡面的Segement的生命周期都很短,可能交易結束或者User的Session結束就會消失。每個系統都必須要有一個預設的Temporary Tablespace(Default Temporary Tablespace),The DEFAULT TEMPORARY TABLESPACE clause of the CREATE DATABASE statement creates a default temporary tablespace for the database. 如果沒有Default Temporary Tablespace,Create User的時候又忘了指定使用哪個Temporary Tablespace,會以SYSTEM tablespace來當作Temporary Tablespace
以下列出幾個Temporary Tablespace的特性:
       1. Temporary Tablespace是NOLOGGING模式,因此若資料庫損毀,做Recovery不需要恢復Temporary Tablespace。
       2. Temporary最好是使用Local managed Tablespace
       3. 若使用local managed模式,UNIFORM. SIZE參數最好是Sort_Area_Size的參數,這樣效能比較好。
       4. Uniform. size預設1024K,而Sort_area_size預設是512K
       5. Temporary Tablespace不能使用local managed的AUTOALLOCATE參數。
創建臨時表空間:

create temporary tablespace  temp datafile '/oracle/product/oradata/ora10/paul01.dbf' size 20m  
extent management local uniform size 4m;


TableSpace的Extent空間管理:Local Managed與Dictionary Managed
  Local Managed與Dictionary Managed最主要的分別,在於空間管理方式的不同。Local managed的管理方式是讓每個TableSpace自己利用bitmaps去管理他自己的空間,而Dictionary Managed則是利用SYSTEM TableSpace的數據字典來做空間管理。這兩者最大的不同在於Local managed大大的改善了Oracle做空間管理(例如:產生新的Exten或釋放Extent...等)時,搶奪SYSTEM TableSpace資源的問題。所以Oracle從8i以後已經朝Local managed的方向去走了,所以我們應該儘量使用Local managed的方式才對
Local managed tablespace:
1. Local managed使用bitmaps做空間管理。
2. bitmaps中每個bit代表一個data block或者一堆相鄰的data block(extent)
3. 從10g開始,SYSTEM Tablespace預設使用local managed-->Oracle建議使用local managed的證據。
4. 假如SYSTEM TableSpace是local managed,那麼其他TableSpace必須是local managed。
5. 若沒指定使用local managed或者dictionary managed,則預設使用local managed。
6. 使用local managed可以增進效能,因為減少了SYSTEM TableSpace的效能競爭。
7. 使用local managed則不需要做空間縫合(loalescing),因為相鄰的不同大小的extent,辨識extent使用狀態的bits也在一起,Oracle可以直接使用這些相鄰的extent。不需要先進行縫合才可以使用。這也可以增進部份效能。

local managed的extent空間管理(Extent Management):AUTOALLOCATE與UNIFORM
  AUTOALLOCATE與UNIFORM這兩個參數,是用來設定Local managed的extent大小的參數。AUTOALLOCATE是讓Oracle自己來決定extent的大小;而UNIFORM則是強制規定TableSpace中extent的為固定的大小。通常若明確的知道extent必須多大,才會使用UNIFORM,使用UNIFORM的好處是每個extent的大小都相同,不會產生空間破碎的問題。但是如果無法預知extent必須多大,使用AUTOALLOCATE會比較好,讓Oracle自己決定使用extent的大小,可以比較符合實際的需求,因此會比較節省空間,但是這可能會產生部分空間破碎的問題。使用AUTOEXTENT,Oracle會使用的extent大小為64k、1M、8M、64M。根據系統上使用的結果,99.95%的extent都是使用64k、只有少部分使用1M的extent,所以其實破碎的情況不嚴重,使用AUTOALLOCATE在系統上其實就夠用了。想知道你的TableSpace所使用的Extent有幾種,
請用下列的語法:

Select bytes,count(*) from dba_extents where tablespace_name='your_tablespace_name' group by bytes;
Select tablespace_name,bytes, count(*)
from dba_extents
group by bytes,tablespace_name;


Local managed中的Segment的空間管理(Segment Space Management ):AUTO與MANUAL
  Tablespace中的Segment的空間管理上,可以設置的參數為AUTO與MANUAL。MANUAL是使用我們熟悉的PCTUSED、FREELISTS、FREELIST GROUPS的方式來管理Segment中的data block;而AUTO則是使用bitmaps來管理data block。使用AUTO來管理的話,以往create tablespace或create table時設定的storage的參數設定都不需要再設定了,因為data block的管理已經是bitmaps了,不再是free list了。如果沒有特別的需求話,使用AUTO會比使用MANUAL有更好的空間利用率,與效能上的提升。

1、創建表空間
創建表空間的完整命令:

Create [undo] tablespace <ts_name>
datafile <file_spec1> [,<file_spec2>]
mininum extent <m> k|m
blocksize <n> [k]
logging clause
force logging
default storage_clause
online | offline
permanent | temporary
extent_manager_clause
segment_manager_clause

1)、undo指定系統將創建一個回滾表空間
 
2)、tablespace指定表空間名稱
 
3)、datafile指定數據文件的路徑、名稱、大小及自增長狀況:具體形如
'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 50M autoextend on next 10M maxsize 500M,
也可以指定on為off,就沒有後面的遞增和最大尺寸了,也可以在maxsize後面指定最大尺寸unlimited說明表空間無限大。 4)、mininum extent <m> k|m指出在表空間的extent的最小值,這個參數可以減少空間碎片,保證在表空間的extent是這個數值的整數倍; 5)、blocksize <n> [k]設置塊的大小,如果要設置這個參數,必須設置成db_block_size的整數倍; 6)、logging cluse指示這個表空間上所有用戶對象的日誌屬性,預設是logging; 7)、force logging指示表空間進入強制日誌模式。此時系統將記錄表空間上對象的所有改變,除了臨時段的改變。這個參數高於logging參數中的nologging選項; 8)、default storage_clause聲明預設的存儲子句; 9)、online|offline指定表空間狀態; 10)、permanent | temporary指出表空間的屬性,是永久表空間還是臨時表空間。永久表空間存放的是永久對象,
臨時表空間存放的是session生命期中存在的臨時對象。這個參數生成的臨時表空間創建後一直都是字典管理,不能使用extent management local選項。
如果要創建本地管理表空間,必須使用create temporary tablespace。聲明瞭這個參數就不能聲明block size。 11)、extent_manager_clause說明表空間如何管理extent。一旦聲明瞭這個子句,就只能通過移植的方式改變這些參數。
如果希望表空間本地管理的話,聲明local選項。本地管理表空間是通過點陣圖管理的。Autoallocate說明表空間自動分配extent,用戶不能指定extent的大小。
只有9.0以上的版本具有這個功能。Uniform說明表空間的範圍的固定大小,預設是1M。不能將本地管理的資料庫的SYSTEM表空間設置成字典管理。
ORACLE推薦使用本地管理表空間。如果沒有設置這個子句,oracle會進行預設設置。如果初始化參數compatible小於9.0.0,那麼系統創建字典管理表空間,如果大於9.0.0,那麼按如下設置: 如果沒有指定default storage_clause,oracle創建一個自動分配的本地管理表空間;否則如果指定了mininum extent,
那麼oracle判斷mininum extent、initial、next是否相等,以及pctincrease是否為0,
如果滿足這2個條件,oracle吃醋昂就一個本地管理表空間,extent size是initial,
如果不滿足,那麼oracle將創建一個自動分配的本地管理表空間;
如果沒有指定mininum extent,那麼oracle判斷initial和next是否相等,以及pctincrease是否為0,
如果滿足這2個條件,那麼oracle創建一個本地管理表空間並制定uniform,否則oracle將創建一個自動分配的本地管理表空間。
(本地管理表空間只能存儲永久對象。如果你聲明瞭local,則不能聲明default storage_clause,mininum extent,temporary); 12)、segment_management_clause : segment space management auto。

 

 
2、表空間的狀態:

Tablespace的狀態有3種:ONLINE、OFFLINE、READ ONLY。
ONLINE是正常工作的狀態,OFFLINE狀態下,是不允許訪問數據的,
SYSTEM tablespace和DEFAULT temp tablespace是不能被OFFLINE的,且帶有active undo segments的tablespace也不能被OFFLINE。
切換ONLINE和OFFLINE狀態的命令是alter tablespace <ts_name> offline/online。當狀態變成READ-ONLY時,會產生一個checkpoint,此時數據只能讀不能寫,但是可以drop對象,相關命令是alter tablespace <ts_name> read only和alter tablespace <ts_name> read write。

3、表空間的存儲設置
修改tablespace和datafiles的存儲設置。這項工作是指修改tablespace的大小和datafile的存放位置。
在修改tablespace的大小之前,我們需要先知道tablespac的當前存儲情況。可以用下麵的SQL語句實現:

SELECT a.tablespace_name,
a.bytes bytes_used,
b.largest,
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) percent_used
FROM (SELECT tablespace_name, SUM(bytes) bytes
FROM Dba_Data_Files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) bytes, MAX(bytes) largest
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;

 


上面這條SQL語句中,有2條子查詢,第一條取得的是表空間的總位元組數,第二條取得的是表空間中餘下的位元組數,最終得到的結果是已經使用的位元組數和百分比。

修改tablespace的大小,主要是通過datafile的大小來實現的,修改datafile的大小又有3種方法:
1)、使數據文件自增長;
2)、改變數據文件大小;
3)、添加數據文件。
 
使數據文件自增長:表DBA_DATA_FILES中有一個欄位AUTOEXTENSIBLE與這個方法對應,它指示數據文件是否自增長,也就是數據文件不能滿足存儲需求時,是否自動增加大小來滿足需求。先運行下列命令創建一個datafile大小為5M的表空間—TEST:create tablespace test datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 5M;這個時候,AUTOEXTENSIBLE是no,也就是數據文件的大小是固定的,不會自增長(當然,我們也可以在創建命令中加入指令設置自增長)。下麵我們手動來修改數據文件為自增長alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' autoextend on next 5M maxsize 50M;這條命令將TEST.DBF數據文件設置為按5M大小進行自增長,最大為50M。(臨時表空間用alter database tempfile...,下同)
 
改變數據文件大小:以前面的數據文件為例,我想將數據文件設置為100M大小,可以執行命令:

 

alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' resize 100M;

 


添加數據文件:這應該是最好的一種方式,便於管理。以TEST表空間為例,添加數據文件的命令如下:

 

alter tablespace test add datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' size 5M 
autoextend on next 5M maxsize 50M;

這條命令就直接指定了數據文件自增長。
 
除了修改表空間的大小,存儲設置中還可以進行的一項工作就是移動數據文件。
移動數據文件有2種方法,一種是使用alter tablespace命令,一種是使用alter database命令。
 
使用alter tablespace移動數據文件前,需要先將表空間OFFLINE,然後目標數據文件必須存在(也就是將需要移動的數據文件複製到目的地)。以將數據文件TEST01.DBF移動到上一層目錄為例。先執行命令:alter tablespace test offline;然後將TEST01.DBF複製到上一級目錄,再執行命令:

 

alter tablespace test rename datafile E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\TEST01.DBF';

然後再將表空間ONLINE就可以了:alter tablespace test online;。
 
使用alter database移動數據文件時,同樣,目標數據文件必須存在(原文件的副本),且資料庫需要處於MOUNTED狀態。

 

第一種方法,已經將數據文件移動到了父一級目錄,下麵再將它移回來。先關閉資料庫:
shutdown immediate;
然後啟動資料庫,
啟動選項為mount:startup mount;
然後執行移動命令:
alter database rename file 'E:\oracle\product\10.2.0\oradata\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF';
再打開資料庫:alter database open

報錯了:
 
ORA-01113:文件7需要介質恢復
 
ORA-01110:數據文件7:’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’,細節還不明白,只知道資料庫認為這個數據文件收到破壞,需要使用備份、日誌信息來恢復。這本來是個比較嚴重的問題,但是在這個實例中,還是很好解決的,執行命令:
 
recover datafile ’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’。提示完成介質恢復,再打開資料庫:alter database open;一切就正常了。


4、刪除表空間
刪除表空間,使用命令drop tablespace <ts_name>。但是有3個選項需要註意:
 
INCLUDING CONTENTS:指示刪除表空間中的segments;
 
INCLUDING CONTENTS AND DATAFILES:指示刪除segments和datafiles;
 
CASCADE CONSTRAINTS:刪除所有與該空間相關的完整性約束條件。
 
Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
 
需要註意的是SYSTEM表空間以及具有active segments的表空間是無法刪除的。


a)TableSpace管理準則
1、使用多個TableSpace
* 用戶數據與數據字典數據分離,減少競爭
* 應用程式之間的數據分離,防止某個TableSpace離線後對多個程式造成影響
* 不同磁碟驅動器上存儲數據,減少I/O競爭
* 回滾段數據與用戶數據分離,防止單磁碟故障造成數據永久丟失
* 可以控制單個TableSpace離線,提供更高的整體可用性
* 為特定類型資料庫使用保留TableSpace,可優化TableSpace的使用
* 可以備份單獨的TableSpace

2、指定表空間預設的存儲參數
為TableSpace設置合適的參數,下文中詳細介紹。
 
3、為用戶指定表空間限額
可以有效控制TableSpace的大小,限制用戶許可權防止發生意外。
 
b)創建TableSpace
1、創建本地管理TableSpace
Oracle創建的TableSpace預設均是本地管理的,明確的表述應該是:
在CREATE TABLESPACE 語句中EXTENT MANAGEMENT 子句中指定LOCAL。然後可以用AUTOALLOCATE 選項(預設)來使Oracle自動管理盤區

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

也可以使用一個指定大小(UNIFORM SIZE)的同意盤區來管理該TableSpace

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

如果未指定盤區大小,則預設為1M,說明數據文件至少要大於1MB
 
註:如果TableSpace被期望用於包含需要不同盤區大小和擁有很多盤區的大小變動的對象,那選擇AUTOALLOCATE是最好的選擇。AUTOALLOCATE是一種管理TableSpace的簡便方法,只是有可能會對一些空間造成浪費。如果需要準確控制未用空間,並能夠精確預計為一個或多個對象要非配的空間和盤區大小,那就可以使用UNIFORM。

2、在本地管理TableSpace中指定段空間管理
可使用SEGMENT SPACE MANAGEMENT子句來設置端控制項的管理模式,有以下幾種模式:
MANUAL(預設):使用段中管理空閑空間的空閑列表。
AUTO:使用點陣圖來管理段中的空閑空間。又稱為自動段空間管理。
AUTO立功了一種更加簡單、有效的管理方法,完全消除了為表空間中創建的段指定和調整PCTUSED、FREELISTS、FREELISTS GROUPS屬性的任何必要。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

註:LOB類型不能指定自動段空間管理。
 
3、修改本地管理TableSpace
* 不能講本地管理TableSpace改為本地管理的temp TableSpace
* 不能改變TableSpace的段空間管理辦法
* 本地管理TableSpace沒有必要合併空閑盤區
* 可以添加數據文件
* 可以改變TableSpace狀態(ONLINE/OFFLINE)
* 修改TableSpace為只讀or只寫
* rename數據文件
* 啟用/禁用該TableSpace數據文件的自動盤區大小
 
 
4、創建字典管理的TableSpace

CREATE TABLESPACE tbsb
DATAFILE '/u02/oracle/data/tbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (
INITIAL 50K
NEXT 50K
MINEXTENTS 2
MAXEXTENTS 50
PCTINCREASE 0);

使用ALTER TABLESPACE語句可以進行以下操作:
* 添加一個新的文件
* 改變預設的存儲參數
* 合併TableSpace的空閑空間
* 可以改變TableSpace狀態(ONLINE/OFFLINE)
* 修改TableSpace為只讀or只寫
* rename數據文件
* 啟用/禁用該TableSpace數據文件的自動盤區大小
 
5、臨時表空間
臨時表空間主要用於提高多個排序操作的併發能力、減小開銷,或避免Oracle空間管理操作在一起進行。臨時表空間創建之後,可以被多個用戶共用。
一個給定實例和表空間的所有排序操作共用一個單一的排序段。即排序段為一個給定表空間的每個執行排序操作的實例而存在。
排序段由使用臨時表空間用於排序的第一個語句創建,併在關閉時釋放,一個盤區不能被多個事務共用。
 
可以使用V$SORT_SEGMENT視圖來查看臨時表空間排序段的空間分配和回收情況
用V$SORT_USAGE視圖查看這些段的當前排序用戶
 
註:臨時表空間中不能創建明確對象。
 
6、創建本地管理的臨時表空間

CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

 


註1:臨時數據文件信息查詢與數據文件不同,需要查詢V$TEMPFILE和DBA_TEMP_FILES,但結構與V$DATAFILE和DBA_DATA_FILES類似。
註2:臨時表空間在初次使用時才分配空間,可以更快創建和修改大小,但要註意磁碟大小。
 
7、本地管理臨時表空間的修改

* 添加臨時文件
ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 20M REUSE;
 
* 改變臨時文件狀態
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' ONLINE|OFFLINE;
 
* 更改臨時文件大小
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 4M;
 
* 取消臨時文件並刪除相應操作系統文件
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP
INCLUDING DATAFILES;
 

 

 
8、創建字典管理的臨時表空間

CREATE TABLESPACE sort
DATAFILE '/u02/oracle/data/sort01.dbf' SIZE 50M
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MINEXTENTS 1
PCTINCREASE 0)
EXTENT MANAGEMENT DICTIONARY
TEMPORARY;

 

 
註1:不能以這種方式創建EXTENT MANAGEMENT LOCAL的臨時表空間。
註2:可以使用ALTER TABLESPACE tbsa TEMPORARY;語句將一個現有的字典管理永久表空間改為臨時表空間。

本文摘自:http://www.2cto.com/database/201110/109560.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,效果圖。 二,代碼。 ViewController.m ...
  • 當遇到資料庫占用空間很大的情況下,可以用以下語句查找大數據量的表 運行結果 ...
  • 索引分析 單表 創建表並插入數據 查詢語句(查詢category_id為1 且comments大於1的情況下view最多的author_id) sql分析 結果:type為All(變數全表)即最壞的情況,Extra里還出現了using filesor(文件排序)即使用一個外部的索引排序情況也是最壞所 ...
  • DDL(data definition language)創建和管理表 1.創建表 1.直接創建 2.通過子查詢的方式創建 2.修改表 1.增加新的列 2.修改現有的列 3.重命名現有的列 4.刪除現有的列 3.清空表中的數據 4.重命名錶 5.刪除表 DML(data manipulation l ...
  • 事務是資料庫進行併發控制非常重要的機制,通過本文來系統的瞭解一下事務到底是怎麼回事。 1、什麼是事務? 事務是作為單個邏輯工作單元執行的一系列操作,它由一條或者一組語句組成,它們麽全部成功,要麼全部失敗。 舉個例子,比如在12306訂火車票,要麼你訂票成功,餘票顯示就減少一張;要麼你訂票失敗,餘票顯 ...
  • 用c++簡單封裝了redis的基本操作(hiredis) 介面包括:①鏈接和斷開連接、②設置鍵值對(set)、③查詢鍵值對(get)、④刪除鍵值對(del)、⑤將所有鍵顯示出來 若任何一處發生錯誤,返回對應的錯誤狀態碼,同時可以調用getErrorMsg()查看錯誤信息 所有碼包括: M_REDIS ...
  • 最近在做MySQL主從資料庫同步測試,發現了一些問題,其中主從同步延遲問題是其中之一,下麵內容是從網上找到的一些講解,記錄下來以便自己學習; MySQL的主從同步是一個很成熟的架構,優點為:①在從伺服器可以執行查詢工作(即我們常說的讀功能),降低主伺服器壓力;②在從主伺服器進行備份,避免備份期間影響 ...
  • 上周拿到了我的第一個工作任務,統計一個按天分區每天都有百億條數據條的hive表中account欄位的非重用戶數(大概兩千萬)。後來又更改為按id欄位分別統計每個id的用戶數。 按照我資料庫老師的教導,我很輕易的跳出來了count(distinct account)這個句子。然後寫上了一行查詢,等待了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...