Oracleを使用して、データベースの増加を毎月追跡するにはどうすればよいですか?以下は、SQLサーバーを使用して情報を格納するために使用したクエリの一部です。 Oracleを使用して同じものを複製する方法はありますか?
SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM
sys.tables t
以下のクエリは、DBA_HIST_SEG_STATを使用し、wr SNAPSHOTSとそのピリオドに基づいており、スナップショットごとのデータベースの増加を示しています。月次出力用に変更できます。
set serveroutput on
execute dbms_output.enable(buffer_size => NULL);**
Declare
v_BaselineSize number(20);
v_CurrentSize number(20);
v_TotalGrowth number(20);
v_Space number(20);
cursor usageHist is
select a.snap_id,
SNAP_TIME,
sum(TOTAL_SPACE_ALLOCATED_DELTA) over ( order by a.SNAP_ID) ProgSum
from
(select SNAP_ID,
sum(SPACE_ALLOCATED_DELTA) TOTAL_SPACE_ALLOCATED_DELTA
from DBA_HIST_SEG_STAT
group by SNAP_ID
having sum(SPACE_ALLOCATED_TOTAL) <> 0
order by 1 ) a,
(select distinct SNAP_ID,
to_char(END_INTERVAL_TIME,'DD-Mon-YYYY HH24:Mi') SNAP_TIME
from DBA_HIST_SNAPSHOT) b
where a.snap_id=b.snap_id;
Begin
select sum(SPACE_ALLOCATED_DELTA) into v_TotalGrowth from DBA_HIST_SEG_STAT;
select sum(bytes) into v_CurrentSize from dba_segments;
v_BaselineSize := v_CurrentSize - v_TotalGrowth ;
dbms_output.put_line('SNAP_TIME Database Size(MB)');
for row in usageHist loop
v_Space := (v_BaselineSize + row.ProgSum)/(1024*1024);
dbms_output.put_line(row.SNAP_TIME || ' ' || to_char(v_Space) );
end loop;
end;
/
SYS.DBA_DATA_FILESテーブルがあなたが探しているものだと思います。
IDEこれを使用することもできます。Spotlightfor Oracleと同様に、Toadにはかなり良いモニターがあります。
Oracle SQL Developer(無料のもの)にもモニターツールがあります。
http://nonfunctionaltestingtools.blogspot.com/2012/12/using-sql-developer-to-create-and-view.html ビューに移動-> DBAと作成セッション、次にストレージ->テーブルスペースに移動すると、メインウィンドウに情報が表示されます。
または、[表示]-> [DA]に移動してセッションを作成し、[ストレージ]-> [データファイル]に移動すると、詳細も表示されます。
これをすばやく簡単に行う方法は、データベースファイルのcreation_date列によるチェックとグループ化です。このクエリを見てください:
col growth_gb format 999G999D99
col month format a20
select to_char(creation_time, 'YYYY MM') month, sum(bytes)/1024/1024/1024 growth_gb
from v$datafile
where creation_time > SYSDATE - 720
group by to_char(creation_time, 'YYYY MM')
order by 1 desc
このスクリプトも良いです。リンクを確認してください: http://amitpawardba.blogspot.com/2015/10/Oracle-script-to-check-database-growth.html