Oracle DBA的なTIPS - データベースの大きさを知る
メールでのポストを実験するついでに、たまにはOracle DBA的なTIPSを2つほ ど。お題は、データベースの現状のサイズ見積り。
特に二つ目のヤツをスクリプト化してcronで自動実行, 結果をEXCELでグラフ にすると日々の増加具合が可視化されて面白い。万年、ディスク不足な我が データベースサーバ側から見ると、顔が青くなるような状態でもあるけれど。
各データファイルの使用率を知りたい
Oracleデータベースの管理ユーザとしてログインし、次のコマンドを実行する。
connect / as sysdba set LINESIZE 32767 set PAGESIZE 50 select a.tablespace_name "Tablespace_Name", round(100-sum(a.bytes)/b.bytes*100,1) "Use(%)", a.file_id "File_ID" from dba_free_space a, dba_data_files b where b.FILE_ID = a.FILE_ID group by a.FILE_ID, b.bytes, a.tablespace_name order by a.tablespace_name, a.FILE_ID;
いまどき、テーブルスペースの拡張(データファイルの追加)を手動でやってる DBAも多くはないと思うけれど。色々と事情(主にディスクが常にピーキーだか ら)があって、我がデータベースたちはみな、手動拡張してる。その関係で、 このSQLでモニタする必要があったりする次第。
特定のテーブルスペース上のTABLE/INDEXのサイズを知りたい
Oracleデータベースの管理ユーザとしてにログインし、次のコマンドを実行する。
connect / as sysdba set LINESIZE 32767 set PAGESIZE 50 select SEGMENT_TYPE "SEGMENT TYPE", sum(BYTES)/1024/1024/1024 "TABLE SIZE Gbyte" from DBA_SEGMENTS where TABLESPACE_NAME = 'Tablespace name' group by SEGMENT_TYPE order by SEGMENT_TYPE;
- Tablespace Name
- 対象のテーブルスペース 名。
こっちの方がまだ実用性は高いかな。結果をグラフに落とすと、日々の増加の 割合が目に見えてプロビジョニングの助けになる。
もちろん、Oracle Enterprise Managerやらサードベンダの監視ツールやら でも十二分に見えるんだけど、コマンドラインで実行できた方が都合よく加工 できるからね。
そんなわけで、軽く手元にあったメモから記事を起こしてみた次第。もっと洗 練されたやり方をご存知の方があれば、ご教示いただけると幸いなんである。