Discussion:
Abfrage der Tablespacebelegung (Oracle)
(zu alt für eine Antwort)
Dirk79
2004-01-29 07:24:02 UTC
Permalink
Hallo!
Bei uns passiert es in der letzten Zeit immer öfter, dass ein
Tablespace voll läuft...
Ich bin jetzt dabei ein Skript zu schreiben, mit dem man die
Belegung/Auslastung der TS abfragen kann. Meine Datenbanken laufen
unter AIX.
Hat da jemand schonmal was gemacht und kann mir ein paar Tipps geben?

Danke!!
Urs Metzger
2004-01-29 16:41:10 UTC
Permalink
Post by Dirk79
Hallo!
Bei uns passiert es in der letzten Zeit immer öfter, dass ein
Tablespace voll läuft...
Ich bin jetzt dabei ein Skript zu schreiben, mit dem man die
Belegung/Auslastung der TS abfragen kann. Meine Datenbanken laufen
unter AIX.
Hat da jemand schonmal was gemacht und kann mir ein paar Tipps geben?
Bei Tom "Ask" Kyte so oder ähnlich gefunden:

SELECT a.tablespace_name "TS-Name", kbytes_alloc "Size (KB)",
(kbytes_alloc - NVL(kbytes_free, 0)) "Used (KB)",
NVL(kbytes_free, 0) "Free (KB)",
ROUND(((kbytes_alloc - NVL(kbytes_free, 0)) / kbytes_alloc) *
100, 2) "% Used"
FROM (SELECT SUM(BYTES) / 1024 Kbytes_free, MAX(BYTES) / 1024
largest, tablespace_name
FROM SYS.dba_free_space
GROUP BY tablespace_name) a,
(SELECT SUM(BYTES) / 1024 Kbytes_alloc, SUM(maxbytes) / 1024
Kbytes_max, tablespace_name
FROM SYS.dba_data_files
GROUP BY tablespace_name
UNION ALL
SELECT SUM(BYTES) / 1024 Kbytes_alloc, SUM(maxbytes) / 1024
Kbytes_max, tablespace_name
FROM SYS.dba_temp_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name(+) = b.tablespace_name
ORDER BY 5 DESC


hth, Urs
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Kay Kanekowski
2004-01-29 11:22:10 UTC
Permalink
Hallo Dirk,

versuch doch mal das:


PROMPT
PROMPT Syntax: @frag_bytes Tablespacename(1)
PROMPT
PROMPT Freier Speicherplatz in den Tablespaces in MB
PROMPT

COMPUTE SUM OF "Anzahl" ON tablespace_name
COMPUTE SUM OF "Summe" ON tablespace_name
COMPUTE SUM OF "Anzahl" ON report
COMPUTE SUM OF "Summe" ON report

BREAK ON tablespace_name ON REPORT

SELECT
tablespace_name,
file_id,
COUNT(*) "Anzahl",
TRUNC(MAX(bytes/1024/1024)) "Max",
TRUNC(MIN(bytes/1024/1024)) "Min",
TRUNC(AVG(bytes/1024/1024)) "Durch.",
TRUNC(SUM(bytes/1024/1024)) "Summe"
FROM
sys.dba_free_space
WHERE
tablespace_name LIKE UPPER( '&1' )
GROUP BY
tablespace_name , file_id;

SELECT 'alter tablespace ' || tablespace_name || ' coalesce;' "Coalesce-Syntax"
FROM
sys.dba_tablespaces
WHERE
tablespace_name LIKE UPPER( '&1' )
UNION
SELECT '@frag_bytes'
FROM dual
ORDER BY 1 asc;


schönen Gruss von Troisdorf nach Ziegenhain
Kay

Loading...