欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle臨時(shí)表空間管理和優(yōu)化操作

 更新時(shí)間:2024年07月11日 09:36:06   作者:V1ncent Chen  
Oracle臨時(shí)表空間(Temporary Tablespace)主要用來存儲數(shù)據(jù)庫運(yùn)行中產(chǎn)生的臨時(shí)對象,例如SQL排序結(jié)果集,臨時(shí)表等,這些對象的生存周期只有會話,本文總結(jié)了Oralce中涉及臨時(shí)表空間的管理和優(yōu)化操作,需要的朋友可以參考下

一、臨時(shí)表空間簡介

在執(zhí)行SQL時(shí),經(jīng)常會遇到排序操作,當(dāng)結(jié)果集無法放在內(nèi)存中時(shí),Oracle就會使用臨時(shí)表空間來排序。臨時(shí)表空間中不能創(chuàng)建持久性對象,用戶唯一能創(chuàng)建的就是臨時(shí)表,而且隨著用戶會話退出,臨時(shí)表也會被刪除。

當(dāng)Oracle安裝完成時(shí),默認(rèn)就已經(jīng)創(chuàng)建了1個(gè)臨時(shí)表空間TEMP,且所有未顯式指定使用其他臨時(shí)表空間的用戶,都會使用這個(gè)臨時(shí)表空間,使用下面的SQL可以查詢數(shù)據(jù)庫的默認(rèn)臨時(shí)表空間:

select property_name, property_value
from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';

在這里插入圖片描述

臨時(shí)表空間的底層使用的是臨時(shí)文件(tempfile),通常采用本地管理策略(Locally Management),臨時(shí)表空間不會生成redo日志,根據(jù)其服務(wù)的實(shí)例數(shù)量還可以分為:

  • 本地臨時(shí)表空間,通常保存在本地磁盤,只能給一個(gè)實(shí)例訪問
  • 共享臨時(shí)表空間:通常保存在共享存儲上,可以被多個(gè)實(shí)例同時(shí)訪問

二、臨時(shí)表空間管理

雖然Oracle初始已經(jīng)建立了一個(gè)臨時(shí)表空間,但用戶也可以根據(jù)自身需求對臨時(shí)表空間進(jìn)行定制。

2.1 創(chuàng)建臨時(shí)表空間

使用create temporary tablespace語句創(chuàng)建臨時(shí)表空間,語法和創(chuàng)建普通表空間類似,不同點(diǎn)在于其需要指定temporary和tempfile關(guān)鍵字。

示例:創(chuàng)建一個(gè)臨時(shí)表空間temptbs01,文件大小20M,reuse關(guān)鍵字指示如果文件已存在則重用:

create temporary tablespace temptbs01 
tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' size 20m reuse;

在這里插入圖片描述

如果開啟了OMF特性,可以不指定文件屬性,只提供表空間名稱即可:

create temporary tablespace temptbs02;

在這里插入圖片描述

創(chuàng)建好的臨時(shí)表空間及其臨時(shí)文件信息可以通過dba_temp_files查看:

select tablespace_name, file_name,status, autoextensible from dba_temp_files;

在這里插入圖片描述

2.2 修改臨時(shí)表空間

可以用alter tablespace語句修改表空間屬性,例如添加,刪除臨時(shí)文件,修改在線/離線狀態(tài),調(diào)整臨時(shí)文件大小等。

示例:為temptbs01添加一個(gè)數(shù)據(jù)文件,大小10M,自動(dòng)擴(kuò)展:

alter tablespace temptbs01 
add tempfile '/u01/app/oracle/oradata/PROD/temptbs01_2.dbf' size 10M 
autoextend on next 10m; 

在這里插入圖片描述

示例:將上面添加的數(shù)據(jù)文件刪除:

alter tablespace temptbs01 
drop tempfile '/u01/app/oracle/oradata/PROD/temptbs01_2.dbf';

在這里插入圖片描述

示例:修改temptbs01臨時(shí)文件的在線/離線狀態(tài)(不能修改臨時(shí)表空間的在線/離線狀態(tài)):

alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' offline;
alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' online;

在這里插入圖片描述

示例:修改臨時(shí)文件的大小,將temptbs01的臨時(shí)文件修改為30m:

alter database tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' resize 30m;

在這里插入圖片描述

2.3 查看空間使用情況

查詢dba_temp_free_space視圖可以查看當(dāng)前臨時(shí)表空間的使用情況,free_space字段指示了可用空間:

select * from dba_temp_free_space;

在這里插入圖片描述

2.4 收縮臨時(shí)表空間

對于文件可以自動(dòng)擴(kuò)展的臨時(shí)表空間,當(dāng)空間不夠時(shí),Oracle會自動(dòng)擴(kuò)展文件大小,一個(gè)很大的任務(wù),就可以導(dǎo)致臨時(shí)表空間消耗很多磁盤。如果日常用不到這么大的表空間,可以手動(dòng)收縮以回收磁盤空間。

回收表空間是一個(gè)在線操作,正在使用的會話可以正常分配空間,不受影響。

示例:用alter tablespace … shrink space …; 可以回收可用空間,keep子句指示盡量收縮到25m:

alter tablespace temptbs01 shrink space keep 25m;

在這里插入圖片描述

或:用alter tablespace … shrink tempfile …; 指定收縮某個(gè)臨時(shí)文件:

alter tablespace temptbs01 shrink tempfile '/u01/app/oracle/oradata/PROD/temptbs01.dbf' keep 20m;

在這里插入圖片描述

2.5 刪除臨時(shí)表空間

使用alter tablespace … drop…;語句可以刪除臨時(shí)表空間,你可以選擇是否保留臨時(shí)文件,如果保留臨時(shí)文件,下次再次指定同名文件時(shí)需要用reuse關(guān)鍵字重用文件。

示例:刪除臨時(shí)表空間temptbs01及其臨時(shí)文件,省略including contents and datafiles子句則會保留臨時(shí)文件:

drop tablespace temptbs01 including contents and datafiles;

在這里插入圖片描述

三、使用臨時(shí)表空間組

臨時(shí)表空間組是一個(gè)邏輯概念,它由1或多個(gè)臨時(shí)表空間組成,可以作為一個(gè)整體分配給數(shù)據(jù)庫或用戶使用。在高并發(fā)環(huán)境,多個(gè)臨時(shí)表空間可以更好的減少爭用現(xiàn)象,并且Oracle的并行執(zhí)行特性也可以利用多個(gè)臨時(shí)表空間提升執(zhí)行性能。

臨時(shí)表空間組不需要顯式創(chuàng)建,只需要使用alter tablespace … tablespace group …; 將某個(gè)臨時(shí)表空間加入組即可(創(chuàng)建表空間時(shí)也可加入)。

第一步,將temptbs01加入組group1,這會隱式創(chuàng)建group1:

alter tablespace temptbs01 tablespace group group1;

在這里插入圖片描述

第二步(可選),可以繼續(xù)將其他臨時(shí)表空間加入組,組成員的數(shù)量沒有限制:

alter tablespace temptbs02 tablespace group group1;

在這里插入圖片描述

通過dba_tablespace_groups可以看到目前group1中已經(jīng)有2個(gè)表空間:

select * from dba_tablespace_groups;

在這里插入圖片描述

第三步:將組指定為數(shù)據(jù)庫默認(rèn)臨時(shí)表空間(alter database)或指定給用戶(alter user):

alter database default temporary tablespace group1;
alter user hr temporary tablespace group1;

在這里插入圖片描述

使用alter database指定空的組名可以將臨時(shí)表空間移出組,當(dāng)最后一個(gè)表空間移出組時(shí),組自動(dòng)刪除(先取消引用):

alter tablespace temptbs01 tablespace group '';

在這里插入圖片描述

以上就是Oracle臨時(shí)表空間管理和優(yōu)化操作的詳細(xì)內(nèi)容,更多關(guān)于Oracle臨時(shí)表空間的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論