>> i's SQUARE >> Oracleのノウハウ >> DBA/パフォーマンス・チューニング

DBA/パフォーマンス・チューニング




DBAの重要なポイントの一つが「エクステント管理」や「表領域管理」です!
そこで基本的な管理方法を以下に記述します☆


【セグメントが拡張しすぎて、エクステント数が多くなっていないかの確認】
エクステントが最大に達して拡張できなくなると次のようなエラーが発生します。⇒ORA-01632
最悪の場合、システムが落ちたり固まったりしますので、 常にエクステント数を管理・把握しておく事が重要です!

▼以下はエクステント数が「20」を超えたものを表示させるSQL
select
owner,segment_name,segment_type,
tablespace_name,blocks,extents
from dba_segments where extents >= 20;

▼以下はエクステント数が最大値の50%を超えたものを表示させるSQL
select * from dba_segments
where (extents/max_extents)*100 >= 50
and max_extents !='0'

■対処方法
エクステント数が多くなると、エクステントの最大値を増やす処置が必要になります!
エクステントを増やすには以下のコマンド(オンラインで実行可能)を実行すればOKです☆

・エクステント数の最大値を「500」にする
ALTER TABLE table名 STORAGE( MAXEXTENTS 500 );

・エクステントを無制限にする
ALTER TABLE table名 STORAGE( MAXEXTENTS UNLIMITED );

恒久策としては、やはりテーブルサイズを見積もり直すのが一番ですネ☆


【セグメントが拡張する際、次に割当てるエクステントをとる領域が空いているかの確認】
空き容量がなくて表領域が拡張きなくなると次のようなエラーが発生します。⇒ORA-01653

▼表領域の空き容量チェックSQL
SELECT TABLESPACE_NAME, SUM(BYTES)/(1024*1024) "空容量(MB)"
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
ORDER BY 2;

▼次回の拡張がその表領域の最大空き領域より大きいものがあるかどうかチェックするSQL
select owner,t.tablespace_name,segment_name seg_name,
initial_extent/1024 ini_kb,next_extent/1024 next_kb,
pct_increase pctinc ,extents,bytes/1024 cur_Kb
from dba_segments t
where t.next_extent >
( select max(bytes) from dba_free_space f where f.tablespace_name=t.tablespace_name )

▼自動拡張を考慮したSQL
select owner,s.tablespace_name,segment_name,
initial_extent/1024 ini_kb,next_extent/1024 next_kb,
((maxblocks-d.blocks)*2048)/1024 extend_kb
from dba_segments s,dba_data_files d
where s.next_extent > ( select max(bytes) from dba_free_space f
where f.tablespace_name=s.tablespace_name )
and d.tablespace_name=s.tablespace_name

■対処方法
SYSDBA権限(system/manager)でOracleに接続した後に以下のコマンド(オンラインで実行可能)を実行する。

・表領域のサイズを変更する(例:サイズを1000Mに拡張)
ALTER DATABASE DATAFILE 'データファイル名.dbf' RESIZE 1000m;

・表領域を新規に追加
ALTER TABLESPACE 表領域名 ADD DATAFILE 'データファイル名.dbf' SIZE 500m;

新規に表領域を追加する場合には、実ファイルを置くサーバ側の空き容量にも注意!
サーバ側で以下のコマンドで十分に空き容量があるか事前に調べる必要があります!
df -k ディレクトリ名
で使用率、空容量(K)などの情報が表示されます!


そなたのために、たとえ世界を失うことがあっても、世界のためにそなたを失いたくない。
by バイロン