Jak zmniejszyć temperaturę w oracle?

Jak zmniejszyć temperaturę w oracle? I dlaczego rośnie tak bardzo jak do 25 GB, ponieważ w bazie danych jest tylko jeden schemat dla aplikacji, a rozmiar przestrzeni tabeli danych wynosi 2 GB, a rozmiar przestrzeni tabeli indeksowej wynosi 1 GB.

 31
Author: APC, 2009-12-01

6 answers

O Mój Boże! Spójrz na rozmiar mojego tymczasowego miejsca na stole! Albo... jak zmniejszyć tymczasowe przestrzenie tabel w Oracle.

Tak uruchomiłem zapytanie, aby zobaczyć, jak duża jest moja tymczasowa tablespace:

SQL> SELECT tablespace_name, file_name, bytes
2  FROM dba_temp_files WHERE tablespace_name like 'TEMP%';

TABLESPACE_NAME   FILE_NAME                                 BYTES
----------------- -------------------------------- --------------
TEMP              /the/full/path/to/temp01.dbf     13,917,200,000

Pierwsze pytanie, jakie musisz zadać, to dlaczego tymczasowa łyżka stołowa jest tak duża. Możesz znać odpowiedź na to z głowy. Może to być spowodowane Duże zapytanie, które po prostu uruchamiasz z rodzajem, który był błędem (zrobiłem to więcej niż raz.) Może wynikać z innych wyjątkowe okoliczności. Jeśli to czy w takim przypadku wszystko, co musisz zrobić, aby oczyścić, to zmniejszyć tymczasowy łyżka stołowa i iść dalej w życiu.

A jeśli nie wiesz? Zanim zdecydujesz się na zmniejszenie, możesz potrzebować zrobić kilka dochodzenie w sprawie przyczyn dużej łyżki stołowej. Jeśli dzieje się tak na regularnie wtedy jest możliwe, że Twoja baza danych po prostu potrzebuje tyle miejsca.

Dynamiczny widok wydajności

V$TEMPSEG_USAGE

Może być bardzo przydatne w określeniu przyczyny.

Może po prostu nie dbasz o przyczynę i musisz ją zmniejszyć. To twój trzeci dzień w pracy. Dane w bazie to tylko 200MiB jeśli data i tymczasowa tablespace to 13gib - wystarczy ją zmniejszyć i przejść dalej. Jeśli znowu się rozrośnie, przyjrzymy się przyczynie. In the mean time I am nie ma miejsca na tym woluminie i potrzebuję tylko miejsca z powrotem. Przyjrzyjmy się temu. Będzie zależeć trochę od tego, jaka wersja Oracle, którą prowadzisz i jak powstała tymczasowa łyżka stołowa.
Oracle zrobi to najlepiej, aby nie popełniać żadnych horrendalnych błędów więc po prostu wypróbujemy polecenia i jeśli nie zadziałają, zmniejszymy się w nowy sposób.

Najpierw spróbujmy zmniejszyć plik danych. Jeśli to zrobimy, to wrócimy. przestrzeń i możemy się martwić o to, dlaczego rosła jutro.

SQL>
SQL> alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M; 
alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M
*   
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

W zależności od Komunikatu o błędzie możesz spróbować tego z różnymi rozmiarami które są mniejsze niż bieżąca strona pliku. I miały ograniczone sukces z tym. Oracle zmniejszy plik tylko wtedy, gdy tymczasowa przestrzeń tabel jest w nagłówku pliku i jeśli jest on mniejszy niż rozmiar, który sprecyzuj. Jakaś stara dokumentacja Oracle (poprawili to) mówiła, że możesz wydać polecenie, a Komunikat o błędzie powie Ci, co rozmiar, do którego możesz się zmniejszyć. Zanim zacząłem pracować jako DBA to było nieprawda. Po prostu trzeba było odgadnąć i ponownie uruchomić polecenie kilka razy i sprawdź, czy zadziałało.

W porządku. To nie zadziałało. Co ty na to?
SQL> alter tablespace YOUR_TEMP_TABLESPACE_NAME shrink space keep 256M;

Jeśli jesteś w 11g (może w 10g też) to jest to! Jeśli to działa, możesz chcieć aby wrócić do poprzedniej komendy i dać jej kilka kolejnych prób.

Ale co jeśli to zawiedzie? Jeśli tymczasowa przestrzeń tabel jest domyślną tymczasową który został skonfigurowany, gdy baza danych została zainstalowana, może być konieczne wykonanie dużo więcej pracy. W tym momencie Zwykle ponownie oceniam, czy naprawdę tego potrzebuję miejsce. W końcu miejsce na dysku kosztuje tylko $X. XX A GiB. Zwykle I don ' t want aby wprowadzić takie zmiany w godzinach produkcji. Czyli praca o 2 nad ranem Jeszcze raz! (Nie żebym się sprzeciwiał do pracy o 2 w nocy - tak właśnie jest... Ja też lubię spać. I moja żona lubi mieć mnie w domu o 2 w nocy... nie włócząc się po ulicach śródmieścia o 4 nad ranem próbując żeby pamiętać, gdzie zaparkowałem samochód 3 godziny wcześniej. Słyszałem o tym " telecommuting" rzecz. Martwię się tylko, że dostanę się w połowie drogi, a potem moja łączność z Internetem will fail - then I have to rush centrum, aby to wszystko naprawić, zanim ludzie pojawią się w rano korzystać z bazy danych.) Ok... Wracając do poważnych spraw... Jeśli tymczasowa powierzchnia stołu, którą chcesz zmniejszyć, jest domyślna tymczasowe tablespace, trzeba będzie najpierw utworzyć nowy tymczasowy tablespace, ustaw go jako domyślną tymczasową tablespace, a następnie upuść Twoja stara domyślna tymczasowa tablespace i odtworzyć go. Afterwords upuść drugą utworzoną tabelę tymczasową.
SQL> CREATE TEMPORARY TABLESPACE temp2
2  TEMPFILE '/the/full/path/to/temp2_01.dbf' SIZE 5M REUSE
3  AUTOEXTEND ON NEXT 1M MAXSIZE unlimited
4  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;

Database altered.

SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.


SQL> CREATE TEMPORARY TABLESPACE temp
2  TEMPFILE '/the/full/path/to/temp01.dbf' SIZE 256M REUSE
3  AUTOEXTEND ON NEXT 128M MAXSIZE unlimited
4  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

Database altered.

SQL> DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

Mam nadzieję, że jedna z tych rzeczy pomoże!

 97
Author: Philip Schlump,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-24 19:27:28

Opcje zarządzania przestrzeniami tabel są o wiele lepsze w porównaniu z wersjami zaczynającymi się od 8i. jest to szczególnie ważne, jeśli używasz odpowiednich typów plików dla tymczasowej przestrzeni tabel (np. lokalnie zarządzanych plików tempfiles).

Więc może to być tak proste, jak to polecenie, które zmniejszy twoją łyżkę stołową do 128 meg...

alter tablespace <your_temp_ts> shrink space keep 128M;

Dokumentacja Oracle online jest całkiem dobra. dowiedz się więcej.

Edit

Wygląda na to, że OP ma wcześniejsza wersja bazy danych. We wcześniejszych wersjach musimy zmienić rozmiar poszczególnych plików danych. Więc, przede wszystkim, znajdź nazwy plików. Jedno lub inne z tych zapytań powinno to zrobić...

select file_name from dba_data_files where tablespace_name = '<your_temp_ts>'
/

select file_name from dba_temp_files where tablespace_name = '<your_temp_ts>'
/ 

Następnie użyj tej ścieżki w tym poleceniu:

alter database datafile '/full/file/path/temp01.dbf'  resize 128m
/
 6
Author: APC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-01 14:56:58

Powinieneś napisać jakiej wersji Oracle używasz. Najprawdopodobniej używasz czegoś innego niż Oracle 11g, dlatego nie możesz zmniejszyć temp.

Alternatywy:

1) alter database tempfile '[your_file]' resize 128M; który prawdopodobnie zawiedzie
2) upuść i odtworzyć łyżkę stołową. Jeśli tymczasowa przestrzeń table, którą chcesz zmniejszyć, jest domyślną tymczasową przestrzenią table, być może będziesz musiał najpierw utworzyć nową tymczasową przestrzeń table, ustawić ją jako domyślną tymczasową przestrzeń table, a następnie porzucić starą domyślną tymczasową przestrzeń table łyżka stołowa i odtworzyć go. Następnie upuść drugą tymczasową tabelę utworzoną. 3) dla Oracle 9i i wyższych można po prostu upuścić plik(y) tempfile i dodać nowy(y)

Wszystko jest opisane proszę. bardzo szczegółowo.


Zobacz ten link: http://databaseguide.blogspot.com/2008/06/resizing-temporary-tablespace.html
To było już połączone, ale może to przegapiłeś, więc znowu to samo.

 2
Author: Marius Burz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 01:26:11

Będzie wzrastać, ponieważ potrzeba miejsca do tymczasowego przechowywania, być może z powodu produktu kartezjańskiego lub dużej operacji sortowania.

Dynamiczny widok wydajności V$TEMPSEG_USAGE pomoże zdiagnozować przyczynę.

 1
Author: David Aldridge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-01 10:55:36
alter database datafile  'C:\ORA_SERVER\ORADATA\AXAPTA\AX_DATA.ORA' resize 40M;

Jeśli to nie pomoże:

  • Utwórz nowy tablespace
  • Przełącz na nową tymczasową przestrzeń tabel
  • Poczekaj, aż Stary tablespace nie będzie używany
  • Usuń stare tablespace
 0
Author: demas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-01 07:50:14

Nie zawracam sobie głowy opuszczeniem alternatywnej temperatury w razie, gdybym musiał odzyskać magazyn w przyszłości...

  1. from temp group set default to stand-alone temp
  2. Poczekaj chwilę, a następnie zmień rozmiar grupy temp
  3. Ustaw domyślną wartość z powrotem do grupy temp
  4. Poczekaj chwilę, zmień rozmiar samodzielnej temp. nie ma pośpiechu, aby zrobić ostatni krok
 0
Author: leinad31,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 06:30:23