tablespaces

Von: , 11.10.2011 16:37 Uhr

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

12 Antworten zu dieser Frage

  1. Antwort von nach 7 Minuten 0 hilfreich
    Re: tablespaces

    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

    • Antwort von nach 34 Minuten 0 hilfreich
      Re: tablespaces

      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

  2. Antwort von nach einer Stunde 0 hilfreich
    Re: tablespaces

    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

    • Antwort von nach 2 Stunden 0 hilfreich
      Re: tablespaces

      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

  3. Antwort von nach 2 Stunden 0 hilfreich
    Re: tablespaces

    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

  4. Antwort von nach 3 Stunden 0 hilfreich
    Re: tablespaces

    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

  5. Antwort von nach 4 Stunden 0 hilfreich
    Re: tablespaces

    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.

    • Antwort von nach 5 Stunden 0 hilfreich
      Re: tablespaces

      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

    • Antwort von nach 16 Stunden 0 hilfreich
      Re^2: tablespaces

      Hallo Burkhard,
      Vielen vielen Dank!

    • Antwort von nach 14 Stunden 0 hilfreich
      Re: tablespaces

      Hallo Sami,

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

      Viele Grüße
      Peter

      • Antwort von nach 16 Stunden 0 hilfreich
        Re^2: tablespaces

        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

      • Antwort von nach 17 Stunden 0 hilfreich
        Re: tablespaces

        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

        Jetzt auf diese Frage antworten.