企業名稱:重慶科祿德科技有限公司
聯系人:冷老師
手機:17754917523
郵箱:93865813@qq.com
網址:www.healthcareerhelp.com
地址:重慶石橋鋪高創錦業
回收數據文件空間時報ORA-03297的解決方法
當我們回收數據庫空間時,常用的方法是:
ALTER DatabaSe DATAFE '/Oracle/u01/app/Oracle/ora DATA/EMRep/user。DBF的RESZE 3M
但一執行報以下錯誤
ORA-03297:文件包含超出請求的調整大小值的已用數據
ORA-03297文件包含超出請求的調整大小值的已用數據
原因:要修剪的區域中文件的某些部分當前正被數據庫對象使用。
操作:在調整文件大小之前,刪除或移動該區域中包含范圍的段,或者選擇一個調整大小的值,以便在修剪后的區域中只有可用空間。
使用如下腳本可以獲得分配到高位頂部_塊的對象信息
結構化查詢語言從數據庫管理員擴展中選擇不同的所有者、段名、段類型,其中文件id=文件id和(塊id top_blocks)(從數據庫管理員擴展中選擇max(block_id),其中file_id=file_id)
頂部_塊可以通過以下方法得出;
結構化查詢語言從五美元數據文件中選擇文件#、名稱;
文件#名稱
- -
1/Oracle/u01/app/Oracle/ora數據/EMrep/系統。DBF
2/Oracle/u01/app/Oracle/ora數據/EMrep/撤銷待定。DBF
3/Oracle/u01/app/Oracle/ora data/EMrep/sysaux。DBF
5/Oracle/u01/app/Oracle/ora數據/EMrep/用戶。DBF
文件從數據庫管理員擴展中選擇max(block_id),其中file _ id=12
Z大值(塊標識)
-
2913
SQL顯示參數數據庫塊大小
名稱類型值
- - -
數據庫塊大小整數8192
從雙重的中選擇2913 * 8/1024;
2913*8/1024
-
22.7578125
該塊位于22M與23M之間
通過上面sql查出來的對象信息
SQL> select distinct owner,segment_name,segment_type from dba_extents where file_id = &file_id and (block_id + &top_blocks) >(select max(block_id) from dba_extents where file_id=&file_id)
OWNER SEGMENT_NA SEGMENT_TYPE
---------- ---------- ------------------
SCOTT T2 TABLE
SCOTT M1 TABLE
file_id=5
top_blocks=2913
移動表空間,回收高水位
alter table t2 move tablespace users;
alter table m1 move tablespace users;
重新更改測試
ALTER DATABASE DATAFILE '/oracle/u01/app/oracle/oradata/EMREP/user.dbf' RESIZE 3M
Database altered.
對于分區表信息:
ALTER TABLE "TEST"."TB_ACCESS"
MOVE PARTITION "TB_ACCESS_P200608"
TABLESPACE "new_tablespace_name"
再進行回收表空間
整合出來的sql語句如下:
select distinct owner, segment_name, segment_type,tablespace_name
from dba_extents
where file_id =
(select file#
from v$datafile
where name = '/oradata/ora9i/GAME_LARGE_2006_4_1.dbf')
and (block_id + (select max(block_id)*8/1024 from dba_extents where file_id=(select file#
from v$datafile
where name = '/oradata/ora9i/GAME_LARGE_2006_4_1.dbf'))) >
(select max(block_id)
from dba_extents
where file_id =
(select file#
from v$datafile
where name = '/oradata/ora9i/GAME_LARGE_2006_4_1.dbf'));