oracle的臨時表空間寫滿磁碟空間,解決改問題的具體步驟
oracle的臨時表空間寫滿磁碟空間,一般在資料庫的alert_sid.log日誌中發生這樣的錯誤:
Wed Oct 22 17:13:40 2008
ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
解決改問題的具體步驟
在檢查aix5.3系統的磁碟空間時,發現臨時表空間所在臨時資料檔案已經達到20G,已經佔用了100%。
因為是正式資料庫伺服器,不能隨便重啟資料庫。
以下的操作是用資料庫的sys超級使用者操作
剛開始打算把臨時表空間的資料檔案重新縮小就好了
執行:
SQL> alter database tempfile
2 '/oracle/oms/oradata/temp/temp01.dbf' resize 10240M;
資料庫報錯,重新設定的空間大小不能滿足需要。
看來需要重新建立新的臨時表空間替換當前的表空間了
1、首先檢視當前的資料庫預設表空間:
SQL>select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';
確認當前的臨時表空間為TEMP
2、檢視目前臨時表空間的大小:
SQL>select file_name,tablespace_name,bytes/1024/1024 "MB",autoextensible from dba_temp_files;
3、建立新的臨時表空間:(先在其他的磁碟空間借用一下空間)
SQL> create temporary tablespace temp02
2 tempfile '/oracle/oms/oradata/undo/temp02.dbf'
3 size 512M;
4、把新建的臨時表空間卻換成資料庫的預設臨時表空間
SQL> alter database default temporary tablespace temp02;
5、確認目前資料庫的預設臨時表空間
SQL>select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';
確認temp02為當前的資料庫預設表空間
6、在刪除temp臨時表空間之前,先把執行在temp臨時表空間的sql語句kill掉,這樣的sql語句多為排序的語句
SQL>Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,
tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;
查詢出來之後,kill掉這些sql語句:
SQL>alter system kill session '524,778'; (假如某一條執行的sql語句的SID為524,serial#為778)
確認在temp臨時表空間中沒有執行的sql語句之後,則可以刪除temp臨時表空間資料檔案了
7、刪除temp臨時表空間
SQL> drop tablespace temp including contents and datafiles;
這樣很快就可以刪除了臨時表空間的資料檔案
8、現在temp02臨時表空間佔據了別人的磁碟空間,需要重新把臨時表空間建立在原來的位置,重新建立temp臨時表空間
SQL> create temporary tablespace temp
2 tempfile '/oracle/oms/oradata/temp/temp01.dbf'
3 size 512M autoextend on maxsize 15G;
新建一個512M的自動擴充套件臨時表空間,最大的擴充套件為15G。
檢視新建的temp臨時表空間是否正確:
SQL>select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024,autoextensible from dba_temp_files;
9、把新建的temp臨時表空間卻換成資料庫的預設臨時表空間
SQL> alter database default temporary tablespace temp;
10、確認目前資料庫的預設臨時表空間
SQL>select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';
確認temp為當前的資料庫預設表空間
11、目前把原來的temp臨時表空間變成了512M,把剩餘的磁碟空間空了出來,temp02臨時表空間就沒有用了,刪除temp02臨時表空間
SQL> drop tablespace temp02 including contents and datafiles;
至此,完畢!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-450257/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle的還原表空間UNDO寫滿磁碟空間,解決該問題的具體步驟Oracle
- oracle的臨時表空間解決問題的步驟Oracle
- 解決Oracle臨時表空間佔滿的問題Oracle
- ORACLE 臨時表空間滿了的原因解決方案Oracle
- 臨時表空間已滿的解決方法
- 【實驗】重建臨時表空間解決臨時表空間過大問題
- 轉:Oracle 臨時表空間過大問題解決Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- oracle的臨時表空間Oracle
- oracle 臨時表空間的增刪改查Oracle
- ORACLE 臨時表空間的增刪改查:Oracle
- oracle臨時表空間的增刪改查Oracle
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- 解決FRA空間滿的問題
- Oracle 臨時表空間的概念Oracle
- ORACLE臨時表空間的清理Oracle
- 臨時表空間ORA-1652問題解決
- oracle 9i 臨時表空間問題Oracle
- Oracle undo表空間爆滿的解決Oracle
- 臨時表空間的增刪改查
- 表空間滿的解決方法
- Oracle 臨時表空間概念Oracle
- oracle臨時表空間組Oracle
- Oracle Temp 臨時表空間Oracle
- 臨時表空間過大的解決方法
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- ORACLE預設的臨時表空間Oracle
- oracle的臨時表空間temporary tablespaceOracle
- oracle 表空間,臨時表空間使用率查詢Oracle
- Oracle rman 備份與恢復 臨時表空間的檔案問題解決Oracle
- 系統臨時表空間不足問題
- 【實驗】RESIZE方法解決臨時表空間過大問題
- 臨時表空間被佔滿的原因查詢
- oracle臨時表空間相關Oracle
- Oracle TEMP臨時表空間概念Oracle
- ORACLE臨時表空間總結Oracle
- oracle 重建臨時表空間 tempfileOracle