Tablespaces

Liebe/-r Experte/-in,

Ich benutze ein Oracle 11g r2, unter Oracle Linux.
ich will gern Zeitgesteuert meine Tablespaces erweiteren lassen.
geht das überhaupt? Ich weiss das ich ein Cronjob schreiben kann. Aber ich weiss nicht wie ich die schwellwete auslesen kann?
Gibt es ein View der zeigt wie Voll sind mein Tablespaces?

Danke im Voraus

Sami

Hallo Sami,

Ich benutze ein Oracle 11g r2, unter Oracle Linux.
ich will gern Zeitgesteuert meine Tablespaces erweiteren
lassen.

Hmmmm… warum?

geht das überhaupt?

Das geht, aber es ist ein wenig widersinnig. Wenn Du dei Dinge automatisieren willst, dann kannst Du gleich die Eigenschaft AUTOEXTEND ON setzen, dann wächst das Tablespace bei Bedarf.

Ich weiss das ich ein Cronjob schreiben
kann. Aber ich weiss nicht wie ich die schwellwete auslesen
kann?
Gibt es ein View der zeigt wie Voll sind mein Tablespaces?

Select tablespace_name,
Sum(bytes/(1024*1024)) "Total Free (MB) ",
Max(bytes/(1024*1024)) "Largest Free Extent (MB) "
From dba_free_space
Group By tablespace_name;

Das zeigt Dir die verbleibende Menge an Platz pro Tablespace. Du kannst kombinieren mit DBA_TABLESPACES, wo Du die jeweilige Grösse siehst. Aber nochmal: wozu?

Gruss

Sancho

Hallo,

Oracle bietet die Möglichkeit des Autoextends. Damit wird der TS erweitert, wenn der Platzt auch gebraucht wird. Dabei kann man angeben, um wie viel der TS jeweils erweitert werden soll. Dies sollte man in Abhängigkeit der Inhalte/Nutzen machen.

Das ganze zeitgesteuert zu machen, ist nicht sinnvoll, weil man ggf. Platz verschwendet, den man nicht nutzt, und/oder zu wenig Platz bereitstellt, wenn er gebraucht wird…

Viele Grüße
Karsten

Hi,

wenn Du das automatisch machen willst, setzt du den Tablespace auf autoextend, dann wird er automatisch erweitert, wenn nichts mehr verfügbar ist.
Es gibt keinen View für den Füllgrad, aber zahllose viele sql-Skripte, um das einfach abzufragen. Oder über die webbasierende DBconsole.

Viele Grüße

Andreas

Hallo Sami

Warum verwendest du nicht autoextend ?
Die Werte findest du unter dba_tablespaces.
Wenn du schauen willst, was es alles für Views gibt, schau einfach mit Select * from dict;

Gruss Jürg

Hi,

ich weiß nicht, was du mit Schwellwerte meinst, aber den Freiplatz kannst du z.B. mittels

Select tablespace_name,
Sum(bytes/(1024*1024)) "Total Free (MB) "
From dba_free_space
Group By tablespace_name;

ermitteln.

Alternativ gibts auch die Möglichkeit Tablespaces per Autoextend zu erweitern und die Möglichkeit BIG FILE Tablespaces anzulegen. Da gibts dann nur noch 1 Datenfile pro Tablespace.

Grüße

Du nutzt ein hochmodernes Datenbanksystem und moechtest Routinearbeiten muehsam und fehlertraechtig nachbauen?
Schalte automatisches Tablespacemanagement ein und vergiss die Experimente mit manueller Vergroesserung! Die Datenbank kann das besser!

Gruss
Guido

Hi!

Gibt es ein View der zeigt wie Voll sind mein Tablespaces?

Natürlich gibt es die bzw. sind es mehrere, allerdings nicht direkt die Werte der Tablespaces, sonderen dessen Objekte:
sys.dba_segments und/oder sys.dba_data_files usw.

Ein schönes Beispiel wäre das hier (irgendwo gefunden, nur kopiert, ohne es auszuprobieren - aber sowas ähnliches hab ich schon mal gemacht, und es sah ungefähr auch so aus):

select (select decode(extent_management,‚LOCAL‘,’*’,’ ') ||
decode(segment_space_management,‚AUTO‘,'a ','m ')
from dba_tablespaces where tablespace_name = b.tablespace_name) ||
nvl(b.tablespace_name,
nvl(a.tablespace_name,‚UNKOWN‘)) name,
kbytes_alloc kbytes,
kbytes_alloc-nvl(kbytes_free,0) used,
nvl(kbytes_free,0) free,
((kbytes_alloc-nvl(kbytes_free,0))/
kbytes_alloc)*100 pct_used,
nvl(largest,0) largest,
nvl(kbytes_max,kbytes_alloc) Max_Size,
decode( kbytes_max, 0, 0, (kbytes_alloc/kbytes_max)*100) pct_max_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 1

Grüße,
Tomh

PS: Natürlich benötigst Du die Berechtigungen für das Repository.
PPS: Die Größe der Tablespaces sollten eigentlich schon bei der Anlage entsprechend gewählt werden - Vergrößern im Nachhinein ist mehr eine Krücke als „schöne“ Administration.

Gibt es ein View der zeigt wie Voll sind mein Tablespaces?

Nicht direkt, aber die dba_data_files enthalten solche Werte und die kann man dann auch zu den zugehörigen tablespaces aufkommulieren.

Ein Skript habe ich hier gefunden:
http://www.vinodsr.com/myblog/2009/05/how-to-get-the…

select a.TABLESPACE_NAME,ROUND(a.BYTES/1024000) UsedMB,ROUND(b.BYTES/1024000) FreeMB,round(((a.BYTES-b.BYTES)/a.BYTES)*100,2) PRC
from (select TABLESPACE_NAME,sum(BYTES) BYTES from dba_data_files group by TABLESPACE_NAME) a,
(select TABLESPACE_NAME, sum(BYTES) BYTES , max(BYTES) largest from dba_free_space group by TABLESPACE_NAME) b
where a.TABLESPACE_NAME=b.TABLESPACE_NAME
and a.TABLESPACE_NAME like ‚%‘
order by ((a.BYTES-b.BYTES)/a.BYTES) desc;

Die Zeile
and a.TABLESPACE_NAME like ‚%‘
Kannst Du auch weglassen oder statt dessen nue bestimme Tablespaces angeben.

Viele Grüße

Burkhard

Hallo Sami,

warum umständlich, wenn es auch einfach geht: Die Größe des Tablespaces einfach ORACLE überlassen mit AUTOALLOCATE .

Viele Grüße
Peter

Hallo Peter,
Danke für dein Antwort. Der Gründ ist: Ich will vermeiden, dass mein Tablespaces in der Nacht vergrößert werden, deswegen ich will die Schwellwert auslesen (oder wie voll ist mein TB) dann schreibe ich ein script der außerhalb der zeit(Nacht) die tablespace vergrößert wird.
Ich hoffe ich konnte gut erklären
Danke im Voraus!
VG
Rachid

warum umständlich, wenn es auch einfach geht: Die Größe des
Tablespaces einfach ORACLE überlassen mit AUTOALLOCATE .

Viele Grüße
Peter

Hallo Burkhard,
Vielen vielen Dank!

Hallo Tom,
Vielen Dank!

Hallo Jürg,
Vielen Dank!

Hallo Andreas,
Vielen Dank.

Hallo Karsten,
Vielen Dank!

Hallo Sancho,
Danke für dein Antwort. Der Gründ ist: Ich will vermeiden, dass mein Tablespaces in der Nacht vergrößert werden, deswegen ich will die Schwellwert auslesen (oder wie voll ist mein TB) dann schreibe ich ein script der außerhalb der zeit(Nacht) die tablespace vergrößert wird.
Ich hoffe ich konnte gut erklären
Danke im Voraus!
VG
Rachid

Sorry ich betreibe Oracle unter Windows. Hier kann ich angeben, ab welchem Wert ich den Tablespace erweitern will und auch um welchen Wert.

lg
Gabriele

Hallo Sami,

googel sagt dazu https://forums.oracle.com/forums/thread.jspa?threadI…
ich empfehle die Antwort von Scott Zheng.

MfG Georg V.