首頁 > 軟體

oracle臨時表空間的作用與建立及相關操作詳解

2022-07-25 14:04:35

1.1 臨時表空間作用

用來存放使用者的臨時資料,臨時資料就是在需要時被覆蓋,關閉資料庫後自動刪除,其中不能存放永久臨時性資料。

如:

當用戶對大量資料進行排序時,排序在PGA中進行,若資料過多,導致記憶體不足,oracle會把需要排序的資料分為多份,每次取一份在PGA中排序,其餘部分放在臨時表空間,直至所有資料排序完成,不過臨時表空間在硬碟上,資料交換降低效能

1.2 臨時表空間和臨時表空間組

臨時表空間組是由一組臨時表空間組成的組,臨時表空間組和臨時表空間不能同名。臨時表空間組不能顯式地被建立和刪除;當把第一個臨時表空間分配某個臨時表空間組時,會自動建立臨時表空間組;當把臨時表空間組內最後一個臨時表空間刪除時,會自動刪除臨時表空間組;

1.3 臨時表空間操作

(1) 檢視表空間

select * from v$tablespace;

(2) 檢視表空間詳細資訊

select * from dba_tablespaces;

CONTENTS欄位值為TEMPORARY,即臨時表空間

(3) 檢視除臨時表空間外 表空間對應的資料檔案

select * from dba_data_files;

(4) 檢視臨時表空間對應的資料檔案

select * from dba_temp_files;

select * from v$tempfile;

(5) 檢視臨時表空間組資訊

select * from dba_tablespace_groups;

(6) 檢視預設的臨時表空間

select * from database_properties where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

1.4 建立臨時表空間

(1) 建立不屬於組的臨時表空間

create temporary tablespace temp2 tempfile 'D:softwareoracleoradataorcltemp2a.dbf' size 10m autoextend on ;

(2) 屬於組的臨時表空間

create temporary tablespace temp3 tempfile 'D:softwareoracleoradataorcltemp3a.dbf' size 10m autoextend on
	tablespace group temp_group ;

(2) 臨時表空間加入或移除臨時表空間組

把temp2加入到temp_group 中

alter tablespace temp2 tablespace group temp_group;

把temp2移除emp_group

alter tablespace temp2 tablespace group '';

(3)給臨時表空間新增一個臨時檔案

alter tablespace temp2 add tempfile 'D:softwareoracleoradataorcltemp2b.dbf' size 10m autoextend on;

(4)修改系統預設的臨時表空間

修改為一個組

alter  database default temporary tablespace temp_group ;

修改為一個臨時表空間

alter  database default temporary tablespace temp2;

補充:對臨時檔案進行刪除

alter  tablespace temp drop tempfile '/m/oracle/oradata4/temp05.dbf';
alter  tablespace temp drop tempfile '/m/oracle/oradata5/temp06.dbf';
alter  tablespace temp drop tempfile '/m/oracle/oradata5/temp07.dbf';
alter tablespace temp add tempfile '/m/oracle/oradata4/temp05.dbf' size 1G reuse;
alter tablespace temp add tempfile '/m/oracle/oradata5/temp06.dbf' size 1G reuse;
alter tablespace temp add tempfile '/m/oracle/oradata5/temp07.dbf' size 1G reuse;

刪除過程:

SQL> alter database tempfile '/u01/app/oracle/oradata/temp2' drop including datafiles;
alter database tempfile '/u01/app/oracle/oradata/temp2' drop including datafiles
*
ERROR at line 1:
ORA-25152: TEMPFILE cannot be dropped at this time

通過檢視官方針對ORA-25152的描述資訊,發現如下:

ORA-25152: TEMPFILE cannot be dropped at this time
Cause: An attempt was made to drop a TEMPFILE being used by online users
Action: The TEMPFILE has been taken offline. Try again, later

可能是臨時表空間被佔用,執行以下指令碼,查詢出佔用臨時表空間的對談資訊,使用alter system kill命令殺掉對談程序,即可解決問題。

也可以等待一段時間之後,對臨時表空間臨時檔案進行刪除即可 。

總結

到此這篇關於oracle臨時表空間的作用與建立及相關操作的文章就介紹到這了,更多相關oracle臨時表空間建立內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com