OSコマンドによるデフラグ
UNIXやLinuxなどではファイルの断片化はあまり気にする必要はないと言われていますし、Windows系OSでもひどくないレベルの断片化はパフォーマンスへの影響はほとんどありません。ただ、システム構築後一度もデフラグを実施したことがないのであれば最低限断片化具合の調査くらいはした方がいいかもしれません。Windows系OS上でOracleを構築する場合はデフラグツールでファイルレベルの断片化を解消します。例えばWindows2000系のOSの場合だと、「スタートボタン」→「プログラム」→「アクセサリ」→「システムツール」→「ディスクデフラグ」で起動できます。なお、デフラグツール等で最適化を実施する場合はインスタンスは停止してください。
表領域レベルの再編成
Oracle9iからある表領域に格納されているテーブルをまるごとExport/Importすることができるようになりました。この機能を使えば、ある表領域全体をまとめて再編成することが可能です。以下表領域レベルの再編成の手順になります。
(1)Exportを実施
Export時にTABLESPACEオプションに表領域名を指定すると、指定した表領域に存在するオブジェクトがExportされます。EXP_FULL_DATABASE ロールを所有しているユーザーで実施して下さい。
c:\> exp system/manager tablespace=test01 file=c:\temp\test.dmp log=c:\temp\testexp.log
(2)オブジェクトの削除&再作成
表領域のパラメータを変更したい場合は表領域を削除→再作成します。表領域のパラメータをしない場合でも表領域を削除→再作成した方が楽です。TABLESPACEオプションを指定したExportで作成したダンプファイルにはCREATE TABLESPACE文は含まれませんので、表領域は先に作成しておく必要があります。もしExport時と異なるパラメータでテーブルやインデックスを作成したい場合は、空のテーブルやインデックスを新しいパラメータの値で事前に作成してください。
SQL> drop tablespace test01 including contents and datafiles;
SQL> create tablespace test01 datafile ....;
(3)Importを実施
Import時はTABLESPACEオプションは不要です。もし(2)で空のセグメントを作成している場合はIGNOREオプションを「Y」で指定してください。IMP_FULL_DATABASE ロールを所有しているユーザーで実施して下さい。
c:\> imp system/manager tablespace=test file=c:\temp\test.dmp log=c:\temp\testimp.log
実作業例についてはこちらを参照してください。
データファイルの縮小
初期に確保したデータファイルの容量に比して実際にデータが入ってこないと、未使用領域として場合によってはディスク容量を圧迫します。データが入ってくる見込みがない場合などは未使用領域を切り捨てることも可能です。データファイルを縮小する場合は、以下のSQLで行います。
SQL> alter database datafile 'c:\temp\test.dbf' resize 100m;
データファイル名及び縮小後のサイズを指定します。ただし、切り捨てることが出来るのはHWM(ハイウォーターマーク)以降の領域のみです。HWMについては第5部 第2章をご参照ください。仮にHWM以前に断片化された未使用領域があっても縮小の対象にはなりません。縮小というよりはお尻の未使用部分の切捨てという処理になります。ちなみに縮小だけでなく拡張も同様の構文で可能です。
ファイルレベルの断片化の防止策
ファイルレベルの断片化を防ぐためには以下のような方策を採ると有効です
(1)データベース作成前にデフラグを実行する
データベース作成前にデフラグな必要なくらい断片化しているようでは、その後に作成するファイルも断片化する可能性が高いです。表領域を配置する予定のディスク(ドライブ、パーティション)については、新規のものでない限りは事前にデフラグを実行しましょう。
(2)極力専用の物理ディスク、ないしパーティションにデータファイルを配置する
データベースを構成しないファイル群と同じドライブ(パーティション)にデータファイルを配置すると断片化しやすいです。小規模システムでディスクが一つといった場合でも、新たにパーティションを作成して、そこにはデータベースと無関係なファイルを置かないようにして下さい。
(3)事前の見積をきちんと行う
他のレベルの断片化の予防策でもありますが、事前にセグメントやデータファイルの見積を行って必要分を確保しておくと、いざ予想が外れて断片化が発生しても見積もらずに適当に確保した場合より断片化の影響を抑えることが出来ます。
(4)データファイルの自動拡張に頼らない
データファイルが自動拡張すると、そのドライブ(パーティション)に該当のファイルしかない場合以外は断片化が発生し得ます。極力事前見積りして、必要十分なファイル容量を事前に確保してください。 第2部 第2章の最後の項も併せてご参照ください。
|