日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

臨時表空間主要用途是在數據庫進行排序運算、管理索引、訪問視圖等操作時提供臨時的運算空間,當運算完成之后系統會自動清理。當oracle里需要用到sort的時候,PGA中sort_area_size大小不夠時,將會把數據放入臨時表空間里進行排序,同時如果有異常情況的話,也會被放入臨時表空間,正常來說,在完成Select語句、create index等一些使用TEMP表空間的排序操作后,Oracle是會自動釋放掉臨時段的。但有些有侯我們則會遇到臨時段沒有被釋放,TEMP表空間幾乎滿的狀況,甚至是我們重啟了數據庫仍沒有解決問題。

排序是很耗資源的,Temp表空間滿了,關鍵是優化你的語句,盡量使排序減少才是上策.

Temp表空間滿時的處理方法:

一、修改參數(僅適用于8i及8i以下版本)

修改一下TEMP表空間的storage參數,讓Smon進程觀注一下臨時段,從而達到清理和TEMP表空間的目的。

SQL>alter?tablespace?temp?increase?1;

SQL>alter?tablespace?temp?increase?0;

二、kill session

1、 使用如下語句a查看一下認誰在用臨時段

SELECT?se.username,?se.SID,?se.serial#,?se.sql_address,?se.machine,?se.program,?su.TABLESPACE,

su.segtype,??su.CONTENTS?FROM?v$session?se,?v$sort_usage?su

WHEREse.saddr=su.session_addr

2、kill正在使用臨時段的進程

SQL>Alter?system?kill?session?'sid,serial#';

3、把TEMP表空間回縮一下

SQL>Alter?tablespace?TEMP?coalesce;

注:

這處方法只能針對字典管理表空間(Dictionary Managed Tablespace)。于本地管理表空間(LMT:Local Managed Tablespace),不需要整理的。9i以后只能創建本地管理的表空間。

CREATE?TABLESPACE?TEST?DATAFILE?'D:\TEST01.dbf'?SIZE?5M?EXTENT?MANAGEMENT?DICTIONARY

CREATE?TABLESPACE?TEST?DATAFILE?'D:\TEST01.dbf'?SIZE?5M?EXTENT?MANAGEMENT?LOCAL;

三、重啟數據庫庫

庫重啟時,Smon進程會完成臨時段釋放,TEMP表空間的清理操作,不過很多的時侯我們的庫是不允許down的,所以這種方法缺少了一點的應用機會,不過這種方法還是很好用的。

四、使用診斷事件的一種方法,也是最有效的一種方法

1、 確定TEMP表空間的ts#

SQL>select?ts#,?name?from?sys.ts$?;

TS#?NAME

----------?------------------------------

0?SYSTEM

1?UNDOTBS1

2?SYSAUX

3?TEMP

4?USERS

5?UNDOTBS2

2、執行清理操作

SQL>alter?session?set?events?'immediate?trace?name?DROP_SEGMENTS?level?4'?;

說明:

temp表空間的TS# 為 3, So TS#+ 1= 4

重建TEMP 表空間:

Temporary tablespace是不能直接drop默認的臨時表空間的,不過我們可以通過以下方法來做。

準備:查看目前的Temporary Tablespace

SQL>select?name?from?v$tempfile;

NAME

———————————————————————

D:\ORACLE\ORADATA\TEST\TEMP01.DBF

SQL>select?username,temporary_tablespace?from?dba_users;

USERNAME????????????????????TEMPORARY_TABLESPACE

------------------------------?------------------------------

MGMT_VIEW??????????????????TEMP

SYS????????????????????????????????TEMP

SYSTEM?????????????????????????TEMP

DBSNMP?????????????????????????TEMP

SYSMAN?????????????????????????TEMP

1.創建中轉臨時表空間

create?temporary?tablespace??TEMP1?TEMPFILE?'E:\ORACLE\ORADATA\ORCL\temp02.DBF'?SIZE?512M?REUSE?AUTOEXTEND?ON?NEXT??1M?MAXSIZE?UNLIMITED;

2.改變缺省臨時表空間 為剛剛創建的新臨時表空間temp1

alter?database?default??temporary?tablespace??temp1;

3.刪除原來臨時表空間

drop?tablespace?temp?including?contents?and?datafiles;

4.重新創建臨時表空間

create?temporary?tablespace??TEMP?TEMPFILE?'E:\ORACLE\ORADATA\ORCL\temp01.DBF'?SIZE?512M?REUSE?AUTOEXTEND?ON?NEXT??1M?MAXSIZE?UNLIMITED;

5.重置缺省臨時表空間為新建的temp表空間

alter?database?default??temporary?tablespace??temp;

6.刪除中轉用臨時表空間

drop?tablespace?temp1?including?contents?and?datafiles;

7.如果有必要,那么重新指定用戶表空間為重建的臨時表空間

alter?user?arbor?temporary?tablespace??temp;

查看表空間語句,不過查不出Temp表空間:

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

WHERED.TABLESPACE_NAME=F.TABLESPACE_NAME

ORDER?BY?4?DESC

以上就是Oracle臨時表空間的處理方法,希望會對讀者帶來幫助。

【編輯推薦】

【責任編輯:趙鵬 TEL:(010)68476606】

總結

以上是生活随笔為你收集整理的oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。