select 'max' as status,
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
tablespace_name,
sum(bytes_cached) / 1024 / 1024 as usage
from v$temp_extent_pool
group by tablespace_name
union all
select 'current' as status,
ss.tablespace_name,
sum((ss.used_blocks * ts.blocksize)) / 1024 / 1024 as usage
from gv$sort_segment ss, sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name;
查看臨時(shí)表空間當(dāng)前的占用情況,以及歷史最大使用情況。
1、Oracle臨時(shí)表分兩種,事務(wù)級(jí)臨時(shí)表和會(huì)話級(jí)臨時(shí)表
2、事務(wù)級(jí)臨時(shí)表在事務(wù)結(jié)束后會(huì)被清空,會(huì)話級(jí)臨時(shí)表在事務(wù)結(jié)束后不會(huì)清空而是在回話結(jié)束會(huì)自動(dòng)清空。
3、如果是在存儲(chǔ)過程用臨時(shí)表并不需要從臨時(shí)表里把數(shù)據(jù)返回到存儲(chǔ)過程之外的用事務(wù)級(jí)臨時(shí)表即可;如果要從臨時(shí)表里把數(shù)據(jù)返回到存儲(chǔ)過程之外則需要用會(huì)話級(jí)臨時(shí)表(這個(gè)跟mssql不一樣,mssql用事務(wù)級(jí)臨時(shí)表也可以返回結(jié)果)
注:存儲(chǔ)過程里使用會(huì)話級(jí)臨時(shí)表時(shí),往臨時(shí)表里插入數(shù)據(jù)前要先清空臨時(shí)表內(nèi)的數(shù)據(jù)
Oracle中的臨時(shí)表用法匯總
說明:下文中的一些說明和示例代碼摘自CSDN,恕不一一指明出處,在此一并對(duì)相關(guān)作者表示感謝! 如果作者有異議,請(qǐng)來信說明
1 語法 在Oracle中,可以創(chuàng)建以下兩種臨時(shí)表:
1) 會(huì)話特有的臨時(shí)表
CREATE GLOBAL TEMPORARY TABLE_NAME (column specification )
ON COMMIT PRESERVE ROWS;
2) 事務(wù)特有的臨時(shí)表
CREATE GLOBAL TEMPORARY TABLE_NAME (column specification )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的臨時(shí)表雖然是存在的,但是如果insert 一條記錄然后用別的連接登上去select,記錄是空的。
--ON COMMIT DELETE ROWS 說明臨時(shí)表是事務(wù)指定,每次提交后ORACLE將截?cái)啾恚▌h除全部行)
--ON COMMIT PRESERVE ROWS 說明臨時(shí)表是會(huì)話指定,當(dāng)中斷會(huì)話時(shí)ORACLE將截?cái)啾怼?/p>
2 動(dòng)態(tài)創(chuàng)建
create or replace procedure pro_temp(v_col1 varchar2,v_col2 varchar2) as
v_num number;
begin
select count(*) into v_num from user_tables where table_name='T_TEMP';
--create temporary table
if v_num1 then
execute immediate 'CREATE GLOBAL TEMPORARY TABLE T_TEMP (
COL1 VARCHAR2(10),
COL2 VARCHAR2(10)
) ON COMMIT delete ROWS';
end if;
--insert data
execute immediate 'insert into t_temp values('''||v_col1||''','''||v_col2||''')';
execute immediate 'select col1 from t_temp' into v_num;
dbms_output.put_line(v_num);
execute immediate 'delete from t_temp';
commit;
execute immediate 'drop table t_temp';
end pro_temp;
測(cè)試:
15:23:54 SQL set serveroutput on
15:24:01 SQL exec pro_temp('11','22');
11
PL/SQL 過程已成功完成。
已用時(shí)間: 00: 00: 00.79
15:24:08 SQL desc t_temp;
ERROR:
ORA-04043: 對(duì)象 t_temp 不存在
3 特性和性能(與普通表和視圖的比較) 臨時(shí)表只在當(dāng)前連接內(nèi)有效臨時(shí)表不建立索引,
所以如果數(shù)據(jù)量比較大或進(jìn)行多次查詢時(shí),不推薦使用數(shù)據(jù)處理比較復(fù)雜的時(shí)候時(shí)表快,
反之視圖快點(diǎn)在僅僅查詢數(shù)據(jù)的時(shí)候建議用游標(biāo): open cursor for 'sql clause';
臨時(shí)表的創(chuàng)建
創(chuàng)建Oracle臨時(shí)表,可以有兩種類型的臨時(shí)表:會(huì)話級(jí)的臨時(shí)表和事務(wù)級(jí)的臨時(shí)表。
1)會(huì)話級(jí)的臨時(shí)表因?yàn)檫@這個(gè)臨時(shí)表中的數(shù)據(jù)和你的當(dāng)前會(huì)話有關(guān)系,當(dāng)你當(dāng)前SESSION不退出的情況下,臨時(shí)表中的數(shù)據(jù)就還存在,而當(dāng)你退出當(dāng)前SESSION的時(shí)候,臨時(shí)表中的數(shù)據(jù)就全部沒有了,當(dāng)然這個(gè)時(shí)候你如果以另外一個(gè)SESSION登陸的時(shí)候是看不到另外一個(gè)SESSION中插入到臨時(shí)表中的數(shù)據(jù)的。即兩個(gè)不同的SESSION所插入的數(shù)據(jù)是互不相干的。當(dāng)某一個(gè)SESSION退出之后臨時(shí)表中的數(shù)據(jù)就被截?cái)啵╰runcate table,即數(shù)據(jù)清空)了。會(huì)話級(jí)的臨時(shí)表創(chuàng)建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2...) On Commit Preserve Rows;舉例create global temporary table Student(Stu_id Number(5),Class_id Number(5),Stu_Name Varchar2(8),Stu_Memo varchar2(200)) on Commit Preserve Rows ;
2)事務(wù)級(jí)臨時(shí)表是指該臨時(shí)表與事務(wù)相關(guān),當(dāng)進(jìn)行事務(wù)提交或者事務(wù)回滾的時(shí)候,臨時(shí)表中的數(shù)據(jù)將自行被截?cái)?,其他的?nèi)容和會(huì)話級(jí)的臨時(shí)表的一致(包括退出SESSION的時(shí)候,事務(wù)級(jí)的臨時(shí)表也會(huì)被自動(dòng)截?cái)啵?。事?wù)級(jí)臨時(shí)表的創(chuàng)建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2...) On Commit Delete Rows;舉例:create global temporary table Classes(Class_id Number(5),Class_Name Varchar2(8),Class_Memo varchar2(200)) on Commit delete Rows ;
3)、兩種不通類型的臨時(shí)表的區(qū)別:語法上,會(huì)話級(jí)臨時(shí)表采用on commit preserve rows而事務(wù)級(jí)則采用on commit delete rows;用法上,會(huì)話級(jí)別只有當(dāng)會(huì)話結(jié)束臨時(shí)表中的數(shù)據(jù)才會(huì)被截?cái)啵沂聞?wù)級(jí)臨時(shí)表則不管是commit、rollback或者是會(huì)話結(jié)束,臨時(shí)表中的數(shù)據(jù)都將被截?cái)唷?/p>
例子:
1)、會(huì)話級(jí)(Session關(guān)閉掉之后數(shù)據(jù)就沒有了,當(dāng)Commit的時(shí)候則數(shù)據(jù)還在,當(dāng)Rollback的時(shí)候則數(shù)據(jù)也是一樣被回滾):
insert into student(stu_id,class_id,stu_name,stu_memo) values(1,1,'張三','福建');
insert into student(stu_id,class_id,stu_name,stu_memo) values(2,1,'劉德華','福州');
insert into student(stu_id,class_id,stu_name,stu_memo) values(3,2,'S.H.E','廈門');
SQL select *from student ;
STU_ID CLASS_ID STU_NAME STU_MEMO
------ -------- -------- --------------------------------------------------------------------------------
1 1 張三 福建
2 1 劉德華 福州
3 2 S.H.E 廈門
4 2 張惠妹 廈門
SQL commit;
Commit complete
SQL select * from student ;
STU_ID CLASS_ID STU_NAME STU_MEMO
------ -------- -------- --------------------------------------------------------------------------------
1 1 張三 福建
2 1 劉德華 福州
3 2 S.H.E 廈門
4 2 張惠妹 廈門
SQLinsert into student(stu_id,class_id,stu_name,stu_memo) values(4,2,'張惠妹','廈門');
1 row inserted
SQL select * from student ;
STU_ID CLASS_ID STU_NAME STU_MEMO
------ -------- -------- --------------------------------------------------------------------------------
1 1 張三 福建
2 1 劉德華 福州
3 2 S.H.E 廈門
4 2 張惠妹 廈門
4 2 張惠妹 廈門
SQL rollback ;
Rollback complete
SQL select * from student ;
STU_ID CLASS_ID STU_NAME STU_MEMO
------ -------- -------- --------------------------------------------------------------------------------
1 1 張三 福建
2 1 劉德華 福州
3 2 S.H.E 廈門
4 2 張惠妹 廈門
SQL
2)、事務(wù)級(jí)(Commit之后就刪除數(shù)據(jù)):本例子將采用以下的數(shù)據(jù):
insert into classes(Class_id,Class_Name,Class_Memo) values(1,'計(jì)算機(jī)','9608');
insert into classes(Class_id,Class_Name,Class_Memo) values(2,'經(jīng)濟(jì)信息','9602');
insert into classes(Class_id,Class_Name,Class_Memo) values(3,'經(jīng)濟(jì)信息','9603');
在一個(gè)SESSION中(比如SQLPLUS登陸)插入上面3條記錄,然后再以另外一個(gè)SESSION(用SQLPLUS再登陸一次)登陸,當(dāng)你select * from classes;的時(shí)候,classes表是空的,而你再第一次登陸的SQLPLUS中select的時(shí)候可以查詢到,這個(gè)時(shí)候你沒有進(jìn)行commit或者rollback之前你可以對(duì)剛才插入的3條記錄進(jìn)行update、delete等操作,當(dāng)你進(jìn)行commit或者rollback的時(shí)候,這個(gè)時(shí)候由于你的表是事務(wù)級(jí)的臨時(shí)表,那么在插入數(shù)據(jù)的session也看不到數(shù)據(jù)了,這個(gè)時(shí)候數(shù)據(jù)就已經(jīng)被截?cái)嗔恕?/p>
運(yùn)行結(jié)果如下:
SQL insert into classes(Class_id,Class_Name,Class_Memo) values(1,'計(jì)算機(jī)','9608');
1 row inserted
SQL insert into classes(Class_id,Class_Name,Class_Memo) values(2,'經(jīng)濟(jì)信息','9602');
1 row inserted
SQL insert into classes(Class_id,Class_Name,Class_Memo) values(3,'經(jīng)濟(jì)信息','9603');
1 row inserted
SQL update classes set class_memo ='' where class_id=3 ;
1 row updated
SQL select * from classes ;
CLASS_ID CLASS_NAME CLASS_MEMO
-------- ---------- --------------------------------------------------------------------------------
1 計(jì)算機(jī) 9608
2 經(jīng)濟(jì)信息 9602
3 經(jīng)濟(jì)信息
SQL delete from classes where class_id=3 ;
1 row deleted
SQL select * from classes ;
CLASS_ID CLASS_NAME CLASS_MEMO
-------- ---------- --------------------------------------------------------------------------------
1 計(jì)算機(jī) 9608
2 經(jīng)濟(jì)信息 9602
SQL commit;
Commit complete
SQL select *from classes ;
CLASS_ID CLASS_NAME CLASS_MEMO
-------- ---------- --------------------------------------------------------------------------------
SQL
再重復(fù)插入一次,然后rollback。
SQL Rollback ;
Rollback complete
SQL select * from classes ;
CLASS_ID CLASS_NAME CLASS_MEMO
-------- ---------- --------------------------------------------------------------------------------
SQL
臨時(shí)表的應(yīng)用
1)、當(dāng)某一個(gè)SQL語句關(guān)聯(lián)的表在2張及以上,并且和一些小表關(guān)聯(lián)??梢圆捎脤⒋蟊磉M(jìn)行分拆并且得到比較小的結(jié)果集合存放在臨時(shí)表中。
2)、程序執(zhí)行過程中可能需要存放一些臨時(shí)的數(shù)據(jù),這些數(shù)據(jù)在整個(gè)程序的會(huì)話過程中都需要用的等等。
5、注意事項(xiàng):
1)、臨時(shí)表的索引以及對(duì)表的修改、刪除等和正常的表是一致的。
2)、Oracle的臨時(shí)表是Oracle8i才支持的功能特性,如果你的Oracle版本比較低的話,那么就可能沒有辦法用到了,如果你的Oracle版本是8i的話,你還需要把$ORACLE_HOME/admin/${ORACLE_SID}/pfile目錄下的initORACLE_SID.ora初始參數(shù)配置文件的compatible修改為compatible = "8.1.0",我的服務(wù)器上就是這樣子配置的。當(dāng)然也可以修改為compatible = "8.1.6"
查看臨時(shí)表空間的使用情況(GV_$TEMP_SPACE_HEADER視圖必須在sys用戶下才能查詢)
GV_$TEMP_SPACE_HEADER視圖記錄了臨時(shí)表空間的使用大小與未使用的大小
dba_temp_files視圖的bytes字段記錄的是臨時(shí)表空間的總大小:
SELECT?temp_used.tablespace_name,
total?-?used?as?"Free",
total?as?"Total",
round(nvl(total?-?used,?0)?*?100?/?total,?3)?"Free?percent"
FROM?(SELECT?tablespace_name,?SUM(bytes_used)?/?1024?/?1024?used
FROM?GV_$TEMP_SPACE_HEADER
GROUP?BY?tablespace_name)?temp_used,
(SELECT?tablespace_name,?SUM(bytes)?/?1024?/?1024?total
FROM?dba_temp_files
GROUP?BY?tablespace_name)?temp_total
WHERE?temp_used.tablespace_name?=?temp_total.tablespace_name
ORDER?BY?B.TABLESPACE,?B.SEGFILE#,?B.SEGBLK#,?B.BLOCKS;
臨時(shí)表就是用來暫時(shí)保存臨時(shí)數(shù)據(jù)(亦或叫中間數(shù)據(jù))的一個(gè)數(shù)據(jù)庫(kù)對(duì)象,它和普通表有些類似,然而又有很大區(qū)別。它只能存儲(chǔ)在臨時(shí)表空間,而非用戶的表空間。ORACLE臨時(shí)表是會(huì)話或事務(wù)級(jí)別的,只對(duì)當(dāng)前會(huì)話或事務(wù)可見。每個(gè)會(huì)話只能查看和修改自己的數(shù)據(jù)。
ORACLE臨時(shí)表有兩種類型:會(huì)話級(jí)的臨時(shí)表和事務(wù)級(jí)的臨時(shí)表。
1)ON COMMIT DELETE ROWS
它是臨時(shí)表的默認(rèn)參數(shù),表示臨時(shí)表中的數(shù)據(jù)僅在事物過程(Transaction)中有效,當(dāng)事物提交(COMMIT)后,臨時(shí)表的暫時(shí)段將被自動(dòng)截?cái)啵═RUNCATE),但是臨時(shí)表的結(jié)構(gòu) 以及元數(shù)據(jù)還存儲(chǔ)在用戶的數(shù)據(jù)字典中。如果臨時(shí)表完成它的使命后,最好刪除臨時(shí)表,否則數(shù)據(jù)庫(kù)會(huì)殘留很多臨時(shí)表的表結(jié)構(gòu)和元數(shù)據(jù)。
2)ON COMMIT PRESERVE ROWS
它表示臨時(shí)表的內(nèi)容可以跨事物而存在,不過,當(dāng)該會(huì)話結(jié)束時(shí),臨時(shí)表的暫時(shí)段將隨著會(huì)話的結(jié)束而被丟棄,臨時(shí)表中的數(shù)據(jù)自然也就隨之丟棄。但是臨時(shí)表的結(jié)構(gòu)以及元數(shù)據(jù)還存儲(chǔ)在用戶的數(shù)據(jù)字典中。如果臨時(shí)表完成它的使命后,最好刪除臨時(shí)表,否則數(shù)據(jù)庫(kù)會(huì)殘留很多臨時(shí)表的表結(jié)構(gòu)和元數(shù)據(jù)。
1:會(huì)話級(jí)的臨時(shí)表的數(shù)據(jù)和你當(dāng)前會(huì)話有關(guān)系,當(dāng)前SESSION不退出的情況下,臨時(shí)表中的數(shù)據(jù)就還存在,臨時(shí)表的數(shù)據(jù)只有當(dāng)你退出當(dāng)前SESSION的時(shí)候才被截?cái)啵═RUNCATE TABLE),如下所示:
會(huì)話級(jí)別的臨時(shí)表創(chuàng)建:
復(fù)制代碼
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT PRESERVE ROWS;
或
CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT PRESERVE ROWS
AS
SELECT * FROM TEST;
操作示例:
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT PRESERVE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------
1 kerry
SQL INSERT INTO TMP_TEST
SELECT 2, 'rouce' FROM DUAL;
1 row inserted
SQL ROLLBACK;
Rollback complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------------
1 kerry
SQL
復(fù)制代碼
2:事務(wù)級(jí)的臨時(shí)表(默認(rèn)),這種類型的臨時(shí)表與事務(wù)有關(guān),當(dāng)進(jìn)行事務(wù)提交或者事務(wù)回滾的時(shí)候,臨時(shí)表的數(shù)據(jù)將自行截?cái)?,即?dāng)COMMIT或ROLLBACK時(shí),數(shù)據(jù)就會(huì)被TRUNCATE掉,其它的特性和會(huì)話級(jí)的臨時(shí)表一致。
事務(wù)級(jí)臨時(shí)表的創(chuàng)建方法:
復(fù)制代碼
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
或
CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT DELETE AS SELECT * FROM TEST;
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------------
1 kerry
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ------------------------
SQL
復(fù)制代碼
3:關(guān)于臨時(shí)表只對(duì)當(dāng)前會(huì)話或事務(wù)可見。每個(gè)會(huì)話只能查看和修改自己的數(shù)據(jù)。
用DM用戶登錄數(shù)據(jù)庫(kù),打開SESSION 1后,創(chuàng)建臨時(shí)表TMP_TEST
復(fù)制代碼
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
或
CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT DELETE AS SELECT * FROM TEST;
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ---------------------
1 kerry
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- -----------------------
SQL
復(fù)制代碼
用sys用戶登錄數(shù)據(jù)庫(kù),打開SESSION 2
SELECT * FROM DBA_TABLES WHERE TABLE_NAME='TMP_TEST' --可以查到臨時(shí)表數(shù)據(jù)
SELECT * FROM DM.TMP_TEST; --查不到數(shù)據(jù),即使TMP_TEST臨時(shí)表存在數(shù)據(jù)。
臨時(shí)表與永久表區(qū)別
復(fù)制代碼
SQL SELECT TABLE_NAME, TABLESPACE_NAME,"LOGGING",
"TEMPORARY", DURATION, "MONITORING"
FROM DBA_TABLES WHERE TABLE_NAME IN ('TMP_TEST', 'TEST') ;
TABLE_NAME TABLESPACE_NAME LOGGING TEMPORARY DURATION MONITORING
------------- -------------- ------- --------- ----------- ---------
TEST TBS_EDS_DATA YES N YES
TMP_TEST NO Y SYS$SESSION NO
復(fù)制代碼
1、查看臨時(shí)表空間 (dba_temp_files視圖)(v_$tempfile視圖)
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用戶查看
2、縮小臨時(shí)表空間大小
alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF' resize 100M;
3、擴(kuò)展臨時(shí)表空間:
方法一、增大臨時(shí)文件大小:
SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;
方法二、將臨時(shí)數(shù)據(jù)文件設(shè)為自動(dòng)擴(kuò)展:
SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
方法三、向臨時(shí)表空間中添加數(shù)據(jù)文件:
SQL alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;
4、創(chuàng)建臨時(shí)表空間:
SQL create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;
5、更改系統(tǒng)的默認(rèn)臨時(shí)表空間:
--查詢默認(rèn)臨時(shí)表空間
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
--修改默認(rèn)臨時(shí)表空間
alter database default temporary tablespace temp1;
所有用戶的默認(rèn)臨時(shí)表空間都將切換為新的臨時(shí)表空間:
select username,temporary_tablespace,default_ from dba_users;
--更改某一用戶的臨時(shí)表空間:
alter user scott temporary tablespace temp;
6、刪除臨時(shí)表空間
刪除臨時(shí)表空間的一個(gè)數(shù)據(jù)文件:
SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;
刪除臨時(shí)表空間(徹底刪除):
SQL drop tablespace temp1 including contents and datafiles cascade constraints;
7、查看臨時(shí)表空間的使用情況(GV_$TEMP_SPACE_HEADER視圖必須在sys用戶下才能查詢)
GV_$TEMP_SPACE_HEADER視圖記錄了臨時(shí)表空間的使用大小與未使用的大小
dba_temp_files視圖的bytes字段記錄的是臨時(shí)表空間的總大小
SELECT temp_used.tablespace_name,
total - used as "Free",
total as "Total",
round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
FROM GV_$TEMP_SPACE_HEADER
GROUP BY tablespace_name) temp_used,
(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
FROM dba_temp_files
GROUP BY tablespace_name) temp_total
WHERE temp_used.tablespace_name = temp_total.tablespace_name
ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;
希望能幫到您!