powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как уменьшить размер TEMP в Ora9.2?
17 сообщений из 17, страница 1 из 1
Как уменьшить размер TEMP в Ora9.2?
    #32167077
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер temporary tablespace достигает 12 ГБ. Сервер не используется пользователями. Как можно уменьшить его размер?
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167086
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу после старта системы пока не пошли сортировки в TS дать команду на изменение размера tempfile. Или прибить TS и создать с новым размером файлов.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167089
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или прибить TS и создать с новым размером файлов.

Просто и сердито. Спасибо.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167173
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так попробовать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SQL> select name, bytes/ 1024 / 1024  from v$datafile;

NAME                                               BYTES/ 1024 / 1024 
 -------------------------------------------------- ---------------
 
/oracle8i/oradata/ORCL/system01.dbf                             270 
/oracle8i/oradata/ORCL/tools01.dbf                               10 
/oracle8i/oradata/ORCL/rbs01.dbf                                 50 
/oracle8i/oradata/ORCL/temp01.dbf                                20 
/oraback/oradata/ORCL/users01.ora                               550 
/oracle8i/oradata/ORCL/indx01.dbf                                20 
/oracle8i/oradata/ORCL/drsys01.dbf                               20 

 7  rows selected.

SQL> alter database datafile '/oracle8i/oradata/ORCL/temp01.dbf' resize 5M;

Database altered.

SQL> select name, bytes/ 1024 / 1024  from v$datafile;

NAME                                               BYTES/ 1024 / 1024 
 -------------------------------------------------- ---------------
 
/oracle8i/oradata/ORCL/system01.dbf                             270 
/oracle8i/oradata/ORCL/tools01.dbf                               10 
/oracle8i/oradata/ORCL/rbs01.dbf                                 50 
/oracle8i/oradata/ORCL/temp01.dbf                                 5 
/oraback/oradata/ORCL/users01.ora                               550 
/oracle8i/oradata/ORCL/indx01.dbf                                20 
/oracle8i/oradata/ORCL/drsys01.dbf                               20 

 7  rows selected.

...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167198
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не пройдет, если выделен сегмент сортировки на TEMP, или у нас есть default temporary TS. Поэтому я и предлагал давать resize сразу после открытия базы пока не выделен сегмент сортировки, и он не занял весь TS.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167220
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... у нас есть default temporary TS

Так оно и есть.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167275
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я исходил из этого
Код: plaintext
Сервер не используется пользователями


А потом где это написано, что "или у нас есть default temporary TS"???
То есть удалить такой TS можно, а изменить размер нельзя, даже если просто логически рассуждать - как-то не очень логично.

Тем более я же практическим примером показал, этого недостаточно?

Вот юзеры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
   1 * select username, temporary_tablespace from dba_users
SQL> /

USERNAME                       TEMPORARY_TABLESPACE
 ------------------------------ ------------------------------
 
SYS                            TEMP
SYSTEM                         TEMP
OUTLN                          SYSTEM
DBSNMP                         SYSTEM
TRACESVR                       SYSTEM
AURORA$JIS$UTILITY$            SYSTEM
OSE$HTTP$ADMIN                 SYSTEM
AURORA$ORB$UNAUTHENTICATED     SYSTEM
ORDSYS                         SYSTEM
ORDPLUGINS                     SYSTEM
MDSYS                          SYSTEM
CTXSYS                         DRSYS
SCOTT                          SYSTEM
ADAMS                          SYSTEM
JONES                          SYSTEM
CLARK                          SYSTEM
BLAKE                          SYSTEM
TEST                           TEMP

 18  rows selected.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167317
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
default temporary TS просто нельзя удалить, надо создать новый temporary TS, переключиться на него и потом только убивать.

А с временными сегментами на временном TS есть хитрая проблема. На таком TS выделяется один-единственный временный сегмент для всех пользователей. Если этот TS с управлением словарем, что есть идиотизм, то сегмент при первой же сортировке захватывает весь TS. Тогда файлы просто нельзя уменьшать. При локальном управлении ситуация похожая, но сегмент захватывает место по HWM (high water mark) сегмента в "прошлой жизни" - до остановки инстанса. Если до остановки инстанса временный сегмент дорос до конца файла, после старта при первой же сортировке на диске будет создан временный сегмент, захватывающий все табличное пространство. Тогда файлы опять нельзя будет усекать.

Пример 1 (обрезать датафайл можно):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> select tablespace_name,total_blocks from v$sort_segment;

TABLESPACE_NAME                 TOTAL_BLOCKS
 ------------------------------- ------------
 
TEMP                                       64 

SQL> select name, blocks from v$tempfile;

NAME
 -----------------------------------------------------
 
    BLOCKS
 ----------
 
D:\ORACLE\ORADATA\ORCL\TEMP01.DBF
       2560 


Пример 2 (обрезать датафайл нельзя):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   1   select count(*) from
   2      (select d.object_name, d.object_type, d.owner
   3       from dba_objects d, dba_objects b
   4 *     order by  3 , 1  desc,  2 )
SQL> /
    from dba_objects d, dba_objects b
         *
ERROR at line  3 :
ORA- 01652 : unable to extend temp segment by  8  in tablespace TEMP

SQL> alter database tempfile 'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF' resize 4M;
alter database tempfile 'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF' resize 4M
*
ERROR at line  1 :
ORA- 03297 : file contains used data beyond requested RESIZE value


Для второго случая, чтобы обрезать темпфайл, надо остановить инстанс (тогда smon удалит временный сегмент), стартовать его заново (тогда временного сегмента еще нет) и обрезать темпфайл.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167381
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Al:
Я имел виду datafile
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167430
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если этот TS с управлением словарем, что есть идиотизм, то сегмент при первой же сортировке захватывает весь TS

То есть, я так понимаю, при появлении новых сортировок temp-tablespace может только расти?
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167449
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Это сегмент выделяется. А экстенты высвобождаются после завершения сортировки.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167456
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел ввиду что может и не расти.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167474
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С datafile та же история, что и с tempfile. Нельзя обрезать файл ниже занятого блока.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167515
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя обрезать файл ниже занятого блока.

Это о HWM? Т.е. у temp HWM только растет?

Спасибо! Добавили уму разуму.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167520
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Al:
Думаю, что можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
alter tablespace tempf read only;  -- происходит ожидание, пока не будет активных транзакций
 
alter system enable restricted session;  -- все текущие юзеры остаются, но новые не могут коннектиься
 
alter tablespace tempf read write;  -- возвращаем режим записи
 

alter database datafile '/oracle8i/oradata/epsdb01/tempf01.ora' resize 5M;

alter system disable restricted session;  -- разрешаем коннектиться
 
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167527
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder

Вы это проверили в реальной жизни? Я просто не уверен, что можно перевести temporary TS в read only. Всякое, конечно, бывает...

2 AndrewS

У всех объектов позиция HWM только растет. Только для таблиц можно дать truncate, и HWM установится на 0.
...
Рейтинг: 0 / 0
Как уменьшить размер TEMP в Ora9.2?
    #32167540
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to AI:
CREATE TABLESPACE ......TEMPORARY можно.
А CREATE TEMPORARY TABLESPACE нет.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как уменьшить размер TEMP в Ora9.2?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]