- 表領域を縮小したい。
- 通常はエクスポート・インポートする。
- パーティション表の場合は...
- Oracle Enterprise Manager では測定値のテーブル MGMT_METRICS_* がパーティション表
- OEM がデータが肥大してしまう。パッチを当てた。データファイルは増えなくなった。
- パーティション数が異常に多い。
- SYSMAN.MGMT_METRICS_RAW: 11839
- 今回はエキスポート・インポートできない。
- 最終に近いエクステントに含まれるデータを別領域に移動
- 表領域を縮小
- 別領域に移動したデータを元の表領域に戻す
- 最終エクステントに近いテーブル・インデックス・パーティションを把握
- 今回は最終1000ブロック
select e.owner, e.segment_name, e.partition_name,
e.segment_type, e.block_id, e.blocks
from dba_extents e
inner join dba_data_files f
on e.file_id = f.file_id
where file_name = '/opt/oracle/oradata/emrep/emrep.dbf'
and e.block_id > (
select max( e.block_id) -1000
from dba_extents e, dba_data_files f
where e.file_id = f.file_id
and file_name = '/opt/oracle/oradata/emrep/emrep.dbf'
)
order by e.block_id desc
;
alter table sysman.mgmt_task_qtable move tablespace MGMT_TABLESPACE2;
alter index sysman.MGMT_ECM_GEN_SNAP_IDX3 rebuild tablespace mgmt_tablespace2;
alter table sysman.mgmt_metrics_raw move partition "2009-09-06 07:00" tablespace mgmt_tablespace2;
select max( e.block_id)
from dba_extents e, dba_data_files f
where e.file_id = f.file_id
and file_name = '/opt/oracle/oradata/emrep/emrep.dbf'
- 543809
- 543809*8192/1024/1024=4248.507
- 切り上げて 4249M
alter database datafile '/opt/oracle/oradata/emrep/emrep.dbf' resize 4249M