powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink
12 сообщений из 12, страница 1 из 1
shrink
    #39286495
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
shrink сегмента уменьшает кол-во блоков. Первый вызов показывает, что полу-свободных блоков практически нет (232 штуки). За счет чего уменьшается кол-во блоков?

Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
42.
exec show_space('USER','IND1','INDEX');
Unformatted Blocks .....................               0
FS1 Blocks (0-25)  .....................               0
FS2 Blocks (25-50) .....................             232
FS3 Blocks (50-75) .....................               0
FS4 Blocks (75-100).....................               0
Full Blocks        .....................          85,464
Total Blocks............................          86,144
Total Bytes.............................     705,691,648
Total MBytes............................             673
Unused Blocks...........................               0
Unused Bytes............................               0
Last Used Ext FileId....................              22
Last Used Ext BlockId...................       1,617,673
Last Used Block.........................             256

PL/SQL procedure successfully completed.

Elapsed: 00:00:02.25

alter index user.ind1 shrink space;

Index altered.

Elapsed: 00:02:25.86

exec show_space('USER','IND1','INDEX');

Unformatted Blocks .....................               0
FS1 Blocks (0-25)  .....................               0
FS2 Blocks (25-50) .....................               1
FS3 Blocks (50-75) .....................               0
FS4 Blocks (75-100).....................               0
Full Blocks        .....................          55,737
Total Blocks............................          56,064
Total Bytes.............................     459,276,288
Total MBytes............................             438
Unused Blocks...........................               2
Unused Bytes............................          16,384
Last Used Ext FileId....................              10
Last Used Ext BlockId...................       3,732,497
Last Used Block.........................             638
...
Рейтинг: 0 / 0
shrink
    #39286511
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
or12За счет чего уменьшается кол-во блоков?Например удаление удалённых записей.
...
Рейтинг: 0 / 0
shrink
    #39286526
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Разве удаленные записи не должны учитываться в списке 232 полу-свободных блоков?
...
Рейтинг: 0 / 0
shrink
    #39286534
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
or12Разве удаленные записи не должны учитываться в списке 232 полу-свободных блоков?Сомневаюсь.
...
Рейтинг: 0 / 0
shrink
    #39286544
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Похоже, что учитывается
Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
create table t8 as select level id, 'aaaaaaaaaaaaaaaaaaaaaa' val, 'bbbbbbbbbbbbbbbbbbbbbbbbb' val2 from dual connect by level < 300000;

Table created.

exec show_space(user,'T8');
Unformatted Blocks .....................               0
FS1 Blocks (0-25)  .....................               0
FS2 Blocks (25-50) .....................               0
FS3 Blocks (50-75) .....................               0
FS4 Blocks (75-100).....................               0
Full Blocks        .....................           2,458
Total Blocks............................           2,560
Total Bytes.............................      20,971,520
Total MBytes............................              20
Unused Blocks...........................              54
Unused Bytes............................         442,368
Last Used Ext FileId....................               4
Last Used Ext BlockId...................          23,305
Last Used Block.........................              74

PL/SQL procedure successfully completed.


delete from t8 where rownum < 80000;

79999 rows deleted.

commit;


exec show_space(user,'T8');

Unformatted Blocks .....................               0
FS1 Blocks (0-25)  .....................               0
FS2 Blocks (25-50) .....................               1
FS3 Blocks (50-75) .....................               0
FS4 Blocks (75-100).....................             654
Full Blocks        .....................           1,803
Total Blocks............................           2,560
Total Bytes.............................      20,971,520
Total MBytes............................              20
Unused Blocks...........................              54
Unused Bytes............................         442,368
Last Used Ext FileId....................               4
Last Used Ext BlockId...................          23,305
Last Used Block.........................              74

PL/SQL procedure successfully completed.


alter table t8 shrink space;

Table altered.

exec show_space(user,'T8');
Unformatted Blocks .....................               0
FS1 Blocks (0-25)  .....................               1
FS2 Blocks (25-50) .....................               2
FS3 Blocks (50-75) .....................               0
FS4 Blocks (75-100).....................               0
Full Blocks        .....................           1,801
Total Blocks............................           1,848
Total Bytes.............................      15,138,816
Total MBytes............................              14
Unused Blocks...........................               6
Unused Bytes............................          49,152
Last Used Ext FileId....................               4
Last Used Ext BlockId...................          22,665
Last Used Block.........................              50

PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
shrink
    #39286818
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
tst> create table t8 as select level id, 'aaaaaaaaaaaaaaaaaaaaaa' val, 'bbbbbbbbbbbbbbbbbbbbbbbbb' val2 from dual connect by level < 300000;

Table created.

tst> @space_usage TABLE T8 "" ""
           Unform     0-25%    25-50%    50-75%   75-100%      Full
        --------- --------- --------- --------- --------- ---------
Blocks:         0         0         0         0         0      2458
Bytes:          0         0         0         0         0  20135936

PL/SQL procedure successfully completed.

tst> delete from t8 where rowid not in
  2  (select min(rowid) from t8 group by dbms_rowid.rowid_block_number(rowid));

297541 rows deleted.

tst> commit;

Commit complete.

tst> @space_usage TABLE T8 "" ""
           Unform     0-25%    25-50%    50-75%   75-100%      Full
        --------- --------- --------- --------- --------- ---------
Blocks:         0         0         0         0      2458         0
Bytes:          0         0         0         0  20135936         0

PL/SQL procedure successfully completed.

tst> alter table t8 enable row movement;

Table altered.

tst> alter table t8 shrink space;

Table altered.

tst> @space_usage TABLE T8 "" ""
           Unform     0-25%    25-50%    50-75%   75-100%      Full
        --------- --------- --------- --------- --------- ---------
Blocks:         0         0         0         0         3        20
Bytes:          0         0         0         0     24576    163840

PL/SQL procedure successfully completed.

tst> 
...
Рейтинг: 0 / 0
shrink
    #39287018
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

У вас было всего блоков 2458, после удаления все они стали свободными (практически), за их счет и произошло уменьшение общего кол-ва блоков.

В первом же сообщении, свободных блоков всего 232, а shrink уменьшил сегмент на 30 000 блоков...
...
Рейтинг: 0 / 0
shrink
    #39287044
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
or12Вячеслав Любомудров,

У вас было всего блоков 2458, после удаления все они стали свободными (практически)Вот только карта показала что они все забиты практически под завязку (75-100%), хотя в каждом блоке оставалась только одна запись
...
Рейтинг: 0 / 0
shrink
    #39287075
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудровor12Вячеслав Любомудров,

У вас было всего блоков 2458, после удаления все они стали свободными (практически)Вот только карта показала что они все забиты практически под завязку (75-100%), хотя в каждом блоке оставалась только одна запись
75-100 - это ведь не % заполнения блока ("забиты пол завязку"), а % свободного места (Number of blocks that has at least 75 to 100% free space), если мы используем эту процедуру
...
Рейтинг: 0 / 0
shrink
    #39287105
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, а я все время считал, что это размер занятого пространства (процент заполненности), впрочем, мне это как-то сильно не мешало
Тады ой

PS. Почему-то у тебя Total blocks достаточно сильно расходится с суммой всех остальных

PPS. Удаленные строки могут сразу не учитываться. Пока транзакция не подтверждена -- освободившееся место может быть использовано только той же самой сессий, остальные его не видят. А если этот блок не оказался в числе поучаствовавших в Commit Cleanout, то эта информация обновится только при следущем считывании этого блока.
...
Рейтинг: 0 / 0
shrink
    #39287185
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, что показывает SPACE_USAGE для индекса никто не знает. dbms_space usage
...
Рейтинг: 0 / 0
shrink
    #39287236
or12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wurdu,
Понято. Спасибо всем за участие.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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