iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

IT工作中曾遇到的問題系列 第 1

Oracle DB:ORA-1652: unable to extend temp segment by 6400 in tablespace

  • 分享至 

  • xImage
  •  

第一次參加鐵人賽,難免忐忑不安,也不知道自己有沒有辦法堅持30天,所以選擇自我挑戰組來初試。內容也不確定要寫些什麼?也許會用AI幫忙撰文也不一定,單純就是分享一下我自己曾經遇到過的問題。

因為有管理過Database、作業系統、網路、硬體,也有寫過程式,所以分享的種類可能比較多元,其實也是給自己更多的空間來完成這30天的挑戰。

第一天先來發表幾天前才發生過的Oracle Database問題,有一個剛上線沒多久的人事系統DB,出現了ORA-1652: unable to extend temp segment by 6400 in tablespace

就是說Temporary Tablespace空間滿了,因為當時我人在國外,所以其他人有聯絡廠商幫忙解決這個問題,因為之前我也有遇過相同的問題,我的做法是如下:

首先執行下列的SQL,檢查是哪一個SQL佔用過多的Temporary,如果這個SQL只是使用者下錯條件造成的,那只要刪除該Session即可

select 
     vs.sid,vs.serial#,vs.status,
     vtu.segtype, vtu.blocks,(vtu.blocks * 8192 /1024/1024) as "Use MB",
     vs.process,vs.machine,
     vs.terminal,vs.program,vs.module,vs.action,
     vs.logon_time,
     vtu.sql_id,vtu.tablespace,vtu.contents
    from V$TEMPSEG_USAGE vtu, V$SESSION vs
     where vtu.session_addr = vs.saddr;

但是如果這段SQL之後還是一樣需要執行,那就表示空間真的是太小了。另外執行下列的SQL,確認Temporary的Datafile

select a.name,b.name, (a.bytes/1024/1024) "MB" from v$tempfile a, v$tablespace b where a.ts#=b.ts#;

從上述的SQL找到Datafile,例如找的是D:\ORACLE\ORADATA\TEMP01.DBF
用sys as sysdba登入DB,執行下列的語法將Temporary Datafile的容量擴大成12GB

ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEMP01.DBF' RESIZE 12G

今天就到這裡,感謝


下一篇
EBS 11i AP Tier CPU使用率偏高(Solaris系統)
系列文
IT工作中曾遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言