2009/06/25

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やらサードベンダの監視ツールやら でも十二分に見えるんだけど、コマンドラインで実行できた方が都合よく加工 できるからね。

そんなわけで、軽く手元にあったメモから記事を起こしてみた次第。もっと洗 練されたやり方をご存知の方があれば、ご教示いただけると幸いなんである。

blog comments powered by Disqus