UNDO表空間不足解決方法

2022-03-14 02:47:08 字數 4529 閱讀 4936

確認undo表空間名稱

select name from v$tablespace;

檢查資料庫undo表空間占用空間情況以及資料檔案存放位置;

select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'undotbs1';

undo表空間不夠用,有兩種處理方法,1,擴大表空間大小;2,建立新的undo表空間,刪除原來的

一、擴大undo表空間

alter   database  undotbs1 datafile   '/opt/oracle/oradata/inms/undotbs02.dbf'   resize   4000m;

二、建立新的undo表空間,刪除原來的

1、建立新的undo表空間,並設定自動擴充套件引數;

create undo tablespace undotbs2 datafile '/oradata/oradata/ddptest/undotbs1.dbf' size    2 1000m reuse autoextend on next 800m maxsize unlimited;

2、動態更改spfile配置檔案;

alter system set undo_tablespace=undotbs2 scope=both;

3、刪除原有的undo表空間;

drop tablespace undotbs1 including contents;

4、確認刪除是否成功;

select name from v$tablespace;

5、確定$oracle_home/dbs/spfileoinms.ora內容是否發生變更:

$more spfileoinms.ora

*.undo_management='auto'

*.undo_retention=10800

*.undo_tablespace='undotbs2'

如果沒有發生變更請執行如下語句:

sql> create pfile from spfile;

file created.

6、刪除原undo表空間的資料檔案,其檔名為步驟中執行的結果。

#rm $oracle_base/oradata/$oracle_sid/undotbs01.dbf

如何處理oracle的undo表空間所對應的資料檔案過大

[日期:2011-04-18]

google_protectandrun("render_ads.js::google_render_ad", google_handleerror, google_render_ad); 1 檢視undo的表空間大小和最大值

select   t.file_name,t.tablespace_name,   

t.bytes/1024/1024/1024 "gb",  t.maxbytes/1024/1024/1024   "max gb"  

from     dba_data_files     t     where    t.tablespace_name='undotbs1' 

資料檔案為:/oracle/oradata/undo/undotbs01.dbf   

2 建立乙個新的undo表空間,用來替換原來的undo表空間

create      undo     tablespace    undotbs2   

datafile     '/oracle/oradata/log/undotbs02.dbf'  

size    10m    autoextend     on    maxsize    unlimited;   

3 把新的undo表空間設定成資料庫的undo表空間

alter     system     set undo_tablespace=undotbs2     scope=both;   

4 再次驗證資料庫的undo表空間

show     parameter     undo_tablespace   

5 等待原undo表空間undotbs1 is offline;

select    r.status    "status",   

r.segment_name    "name",   

r.tablespace_name     "tablespace",   

s.extents     "extents",   

to_char((s.bytes/1024/1024),'99999990.000')     "size"  

from     sys.dba_rollback_segs      r, sys.dba_segments    s   

where        r.segment_name = s.segment_name   

and       s.segment_type in ('rollback', 'type2 undo')   

and       r.tablespace_name='undotbs1'      and       status='online'  

如果上面有狀態online的物件,可以查詢具體物件的sid,serial#   

5.1 檢視當前是什麼在使用這個回滾段

select     r.name,s.sid,s.serial# serial,   

s.username ,s.machine ,   

t.start_time,t.status ,   

t.used_ublk ,   

substr(s.program, 1, 15)    "operate"  

from      v$session    s, v$transaction    t, v$rollname    r,v$rollstat    g   

where      t.addr = s.taddr   

and      t.xidusn = r.usn   

and     r.usn = g.usn   

order     by     t.used_ublk desc;   

--比如:物件為:sid  474,serial  6794  

5.2 根據sid查出具體的sql   

select     sql_text    from     v$session a,v$sqltext_with_newlines     b   

where decode(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value   

and      a.sid=&sid    order     by     piece   

如果該sql不重要,可以直接kill該會話。

5.3  kill session   

alter system kill session '474,6794';   

5.4  刪除原undo表空間及其系統的資料問題

drop tablespace undotbs1 including contents and datafiles;   

(在aix系統中,雖然已經刪除了系統所對應的undo表空間的資料檔案,但用df -g檢視,該系統空間不能釋放。

主要是由於oracle的乙個程序在訪問該檔案。可以kill oracle訪問程序,或者重啟資料庫後,即可釋放系統的空間。)

6新建立undotbs1表空間

create     undo     tablespace    undotbs1   

datafile    '/oracle/oradata/undo/undotbs01.dbf'  

size    10m    autoextend   on    maxsize 12g;   

7切換回untotbs1   

alter system set undo_tablespace=undotbs1 scope=both;   

8 等待undo表空間undotbs2 is offline;

select r.status "status",   

r.segment_name "name",   

r.tablespace_name "tablespace",   

s.extents "extents",   

to_char((s.bytes/1024/1024),'99999990.000') "size"  

from sys.dba_rollback_segs r, sys.dba_segments s   

where r.segment_name = s.segment_name   

and s.segment_type in ('rollback', 'type2 undo')   

and r.tablespace_name='undotbs2'  

order by 5 desc;   

9 刪除

drop    tablespace     undotbs2    including    contents    and     datafiles; 

oracle 資料庫表空間不足 解決方法

先補充知識 1.查詢某個表 占用大小 select segment name as tablename,bytes b,bytes 1024 kb,bytes 2014 1024 mb from user segments where segment name upper tablename tab...

瞎折騰導致 usr目錄空間不足解決方法

今天為了使用systemtap,安裝debug info包,導致我的 usr空間不足 沒有辦法,只能解決了,廢話不多說,只說正確的 1 首先在windows分一塊磁碟出來 2 然後將 usr目錄下拷到劃出來的磁碟 比如是 dev sda8 首先臨時建立乙個資料夾 temp 然後將 dev sda8掛...

關於STM8空間不足的解決方法

stm8雖然功能齊全,但是空間不足也是經常出來的情況。要麼.text overflow,要麼.bss overflow,讓人頭疼。這裡把一些優化方案列出來,讓空間得到充分利用 1 在project settings下,c compiler,optimizations選擇customize 重點是把s...