powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не распределяется место в датафайле, если есть место в другом
25 сообщений из 25, страница 1 из 1
Не распределяется место в датафайле, если есть место в другом
    #39560991
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно давно вынес одну таблицу (с большими BLOB-ами) и всеми индексами в отдельное ТП
До этого все это лежало в другом ТП и занимало около 200гиг
Код: 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.
create tablespace l_dblob
	blocksize 16k
	extent management local uniform size 1M
	segment space management auto
	datafile
		'/u/app/oracle/oradata/xxxx/l_dblob01.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob02.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob03.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob04.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob05.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob06.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob07.dbf' size 30720m reuse,
		'/u/app/oracle/oradata/xxxx/l_dblob08.dbf' size 30720m reuse
/

create table dblob_new tablespace l_dblob
	lob(val) store as securefile(tablespace l_dblob)
as select * from dblob where 1=0
/

set serveroutput on
declare n_errs number := 0;
begin
	dbms_redefinition.start_redef_table(user, 'DBLOB', 'DBLOB_NEW');
	dbms_redefinition.copy_table_dependents(user, 'DBLOB', 'DBLOB_NEW', num_errors=>n_errs);
	dbms_output.put_line('copy_table_dependents: num_errors='||n_errs);
end;
/

exec dbms_redefinition.finish_redef_table(user, 'DBLOB', 'DBLOB_NEW')

alter index pk_dblob_id rebuild tablespace l_dblob
/
...


И заметил, что в одном датафайле (как оказалось, тот, в котором лежат заголовки всех сегментов этого ТП) место не распределяется
Т.е. DBMS_REDEFINITION разложил по файликам более-менее ровно, но после этого распределяет автоматом только в другие датафайлы, если в них есть место (после первоначального разбиения уже добавилось 3 новых файла)
Код: 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.
SQL> column name format a30
SQL> with f as (select file_id, substr(file_name, instr(file_name, '/', -1)+1) name, blocks
  2   from dba_data_files where tablespace_name='L_DBLOB'
  3  ), ext as (select /*+ rule */ file_id, sum(blocks) blocks
  4   from dba_extents where file_id in (select file_id from f)
  5   group by file_id
  6  ), fsp as (select /*+ rule */ file_id, sum(blocks) blocks
  7   from dba_free_space where file_id in (select file_id from f)
  8   group by file_id
  9  )
 10  select f.file_id, f.name, f.blocks, nvl(ext.blocks, 0) used, nvl(fsp.blocks, 0) free
 11  from f, ext, fsp
 12  where ext.file_id(+)=f.file_id and fsp.file_id(+)=f.file_id
 13  order by f.name
 14  /

   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
        86 l_dblob01.dbf                     1966080    1966016          0
        87 l_dblob02.dbf                     1966080    1966016          0
        88 l_dblob03.dbf                     1966080    1569984     396032
        89 l_dblob04.dbf                     1966080    1966016          0
        90 l_dblob05.dbf                     1966080    1966016          0
        91 l_dblob06.dbf                     1966080    1966016          0
        92 l_dblob07.dbf                     1966080    1966016          0
        93 l_dblob08.dbf                     1966080    1966016          0
        14 l_dblob09.dbf                     1966080    1966016          0
        82 l_dblob10.dbf                     1966080    1966016          0
        95 l_dblob11.dbf                     1441792    1379072      62656

11 rows selected.

...
-- через некоторое время
...
   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
...
        88 l_dblob03.dbf                     1966080    1569984     396032
...
        95 l_dblob11.dbf                     1441792    1379968      61760

11 rows selected.

И, соответственно, по сегментам
Код: 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.
SQL> column segment_name format a30
SQL> select de.segment_name, de.segment_type, min(ds.header_file) header_file,
  2   de.file_id, nvl(sum(de.blocks), 0) blocks
  3  from dba_segments ds, dba_extents de
  4  where de.owner=ds.owner and de.segment_name=ds.segment_name and de.segment_type=ds.segment_type
  5  and file_id in (88, 95)
  6  group by de.segment_name, de.segment_type, de.file_id
  7  order by 4, 1, 2
  8  /

SEGMENT_NAME                   SEGMENT_TYPE       HEADER_FILE    FILE_ID     BLOCKS
------------------------------ ------------------ ----------- ---------- ----------
PK_DBLOB_ID                    INDEX                       88         88        704
SYS_IL0000816255C00003$$       LOBINDEX                    88         88         64
SYS_LOB0000816255C00003$$      LOBSEGMENT                  88         88    1565120
DBLOB                          TABLE                       88         88       1984
IDX_DBLOB_0                    INDEX                       88         88        832
IDX_DBLOB_10                   INDEX                       88         88        448
IDX_DBLOB_12                   INDEX                       88         88         64
IDX_DBLOB_4                    INDEX                       88         88        768
SYS_LOB0000816255C00003$$      LOBSEGMENT                  88         95    1378752
DBLOB                          TABLE                       88         95        192
IDX_DBLOB_0                    INDEX                       88         95         64
IDX_DBLOB_4                    INDEX                       88         95         64

12 rows selected.

...
-- через время
...

SEGMENT_NAME                   SEGMENT_TYPE       HEADER_FILE    FILE_ID     BLOCKS
------------------------------ ------------------ ----------- ---------- ----------
...
SYS_LOB0000816255C00003$$      LOBSEGMENT                  88         88    1565120
...
SYS_LOB0000816255C00003$$      LOBSEGMENT                  88         95    1379712
...
12 rows selected.

Причем, с помощью ALLOCATE EXTENT (или когда нет места в других файлах) все размещяется в файлике 88 безо всякой ругани.
И безо всяких пропусков
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> select * from (
  2      select block_id, blocks, lead(block_id, 1, -1) over (order by block_id) next_block
  3      from dba_extents
  4      where file_id=88
  5  ) where block_id+blocks != next_block;

  BLOCK_ID     BLOCKS NEXT_BLOCK
---------- ---------- ----------
   1569984         64         -1



Оно как бы пофиг, но не очень красиво дырку в середине оставлять
Да и интересно, что именно может мешать. Вот только как сформулировать запрос тому же металинку не соображу
Может кто уже сталкивался с таким? Или хотя бы есть мысли, что посмотреть?
версия
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Solaris: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561016
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Приветствую, посмотри может это Bug 8941472 - Extents are not allocated round robin across files for securefile segments (Doc ID 8941472.8)
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561019
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, очень похоже
Хоть и указано

This issue is fixed in
12.1.0.1 (Base Release)
11.2.0.3 (Server Patch Set)
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561024
тынц_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно уточнить, правильно ли понимаю - т.е. все-таки, если в других файлах ТП место заканчивается, он в этом особенном датафайле место распределяет в итоге ?
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561025
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561055
Non-Grata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровОно как бы пофиг, но не очень красиво дырку в середине оставлять

Так может это с вашей точки зрения l_dblob03.dbf - "середина" ТП, а для Oracle здесь такого понятия вообще нет. Распределяет, как ему удобнее, по только ему известному алгоритму.
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561060
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как бы везде декларируется именно round-robin
Видно, что изначально выделенные 8 файлов забиты все под завязку кроме одного (почему именно в 3 файле расположены заголовки -- тоже не ясно), скрипт создания ТП приведен, все они создавались одной командой и потом равномерно заполнились через DBMS_REDEFINITION. А вот дальше в один файл перестали добавляться новые экстенты
состояние на сейчас
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
        86 l_dblob01.dbf                     1966080    1966016          0
        87 l_dblob02.dbf                     1966080    1966016          0
        88 l_dblob03.dbf                     1966080    1569984     396032
        89 l_dblob04.dbf                     1966080    1966016          0
        90 l_dblob05.dbf                     1966080    1966016          0
        91 l_dblob06.dbf                     1966080    1966016          0
        92 l_dblob07.dbf                     1966080    1966016          0
        93 l_dblob08.dbf                     1966080    1966016          0
        14 l_dblob09.dbf                     1966080    1966016          0
        82 l_dblob10.dbf                     1966080    1966016          0
        95 l_dblob11.dbf                     1441792    1401664      40704

11 rows selected.

Завтра, скорее всего, забъется файл 95 и только тогда начнет использоваться 88
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561261
oracloud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,
сделайте bigfile, если хочется красоты
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561342
ык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровНу как бы везде декларируется именно round-robin...
Добавьте в сл.раз не один а 2-3 файла, посмотрите на работу round-robin... будут они параллельно расти или по очереди...
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39561361
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куча ТП с недозаполненными файлами (правда, не LOB с SECUREFILE) -- растут параллельно, поочередно выделяя экстенты во всех файлах с доступным местом (не пропорционально доступному месту, а просто при его наличии)
Оно всегда так было и именно поэтому текущая ситуация меня удивила
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39562276
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот безо всяких сообщений/ошибок стало выделяться место и из этого файла (когда все остальные заполнились)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
        86 l_dblob01.dbf                     1966080    1966016          0
        87 l_dblob02.dbf                     1966080    1966016          0
        88 l_dblob03.dbf                     1966080    1571776     394304
        89 l_dblob04.dbf                     1966080    1966016          0
        90 l_dblob05.dbf                     1966080    1966016          0
        91 l_dblob06.dbf                     1966080    1966016          0
        92 l_dblob07.dbf                     1966080    1966016          0
        93 l_dblob08.dbf                     1966080    1966016          0
        14 l_dblob09.dbf                     1966080    1966016          0
        82 l_dblob10.dbf                     1966080    1966016          0
        95 l_dblob11.dbf                     1441792    1441728          0

11 rows selected.

...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39574179
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы, веселье продолжается
Теперь оно не распределяет не только в этот файл, но и во вновь добавленный, пока есть место в предпоследнем
Вчера
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
        86 l_dblob01.dbf                     1966080    1966016          0
        87 l_dblob02.dbf                     1966080    1966016          0
        88 l_dblob03.dbf                     1966080    1958464       7552
        89 l_dblob04.dbf                     1966080    1966016          0
        90 l_dblob05.dbf                     1966080    1966016          0
        91 l_dblob06.dbf                     1966080    1966016          0
        92 l_dblob07.dbf                     1966080    1966016          0
        93 l_dblob08.dbf                     1966080    1966016          0
        14 l_dblob09.dbf                     1966080    1966016          0
        82 l_dblob10.dbf                     1966080    1966016          0
        95 l_dblob11.dbf                     1966080    1557888     408512
        99 l_dblob12.dbf                     1245184          0    1245120

12 rows selected.

Сегодня
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   FILE_ID NAME                               BLOCKS       USED       FREE
---------- ------------------------------ ---------- ---------- ----------
        86 l_dblob01.dbf                     1966080    1966016          0
        87 l_dblob02.dbf                     1966080    1966016          0
        88 l_dblob03.dbf                     1966080    1958464       7552
        89 l_dblob04.dbf                     1966080    1966016          0
        90 l_dblob05.dbf                     1966080    1966016          0
        91 l_dblob06.dbf                     1966080    1966016          0
        92 l_dblob07.dbf                     1966080    1966016          0
        93 l_dblob08.dbf                     1966080    1966016          0
        14 l_dblob09.dbf                     1966080    1966016          0
        82 l_dblob10.dbf                     1966080    1966016          0
        95 l_dblob11.dbf                     1966080    1588864     377152
        99 l_dblob12.dbf                     1245184          0    1245120

12 rows selected.

Становится интересно, после заполнения 95 файла будет только в 99 писать или таки начнет раскидывать по всем свободным
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39574766
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Есть баг похожий на ваше поведение

Bug 8941472 - Extents are not allocated round robin across files for securefile segments (Doc ID 8941472.8)

Extent allocation for securefiles does not use a round robin
allocation (as BASICFILE does)

Rediscovery Notes:
If extent allocation within a securefile segment does not
use round robin across datafiles (like in basicfile segments)
then you have likely hit this bug.
When this problem happens typically a new extent is allocated
from the file AFTER the file containing the segment header.

Правда написано что пофикшен в 11.2.0.3 (Server Patch Set)
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39574767
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_list,

Не заметил что такой коммент уже был
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39574770
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо, я посмотрел его
Но тут ситуация немного изменилась -- не стал подхватываться вновь выделенный файл (до этого распределялась по всем, где есть свободное место кроме 88)

Я бы не сказал, что ситуация меня как-то напрягает
Просто интересно
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39574875
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если забить место в заполняющемся раньше файле какой-нибудь новой таблицей, потом добавить еще файл данных и дропнуть добавленную таблицу (чтобы она в мусорном ведре осталась)? Где будет сначала заполняться: поверх мусора или в новом файле данных?
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584767
Вячеслав Любомудров,

Добрый день.
Как с Вами можно связаться? Я представляю компанию (Владивосток), нам требуются услуги DBA
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584774
Роман Охунов,

услугами DBA можно воспользоваться и удаленно. Для этого не обязательно быть с DBA "односельчанином" ;)
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584777
Ромич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не все готовы предоставить удаленный доступ в корпоративную сеть серому нику. А тут синий, да еще и приехать морду набить можно в случае если сервак положит. )
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584885
Ромич... Роман Охунов....

Вячеслав Любомудров, будьте осторожней =)
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584897
А не тот ли это Роман?,

а что гадать - тот не тот.... пройди в профиль и посмотри....
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39584901
Ромичне все готовы предоставить удаленный доступ в корпоративную сеть серому нику. А тут синий, да еще и приехать морду набить можно в случае если сервак положит. )IMHO, если дело дошло до того, что база есть, обслуживать её надо, а админа - нет, причем до такой степени, что аж в интернете сами предлагаются - то база не так уж и важна, можно её класть, можно "ложить" - хуже чем есть уже не будет.
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39615142
Вячеслав Любомудров, добрый день!
Вы учились на ФРТК в группе 713?
Межов Анатолий.
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39615296
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий МежовВячеслав Любомудров, добрый день!
Вы учились на ФРТК в группе 713?
Межов Анатолий.Толян, привет!
Я же сбежал со второго курса
...
Рейтинг: 0 / 0
Не распределяется место в датафайле, если есть место в другом
    #39615397
Славик, привет!

Да, Давненько я тебя не видел)))!

Я тут собрался во Владивосток. Буду там в субботу 18 марта и воскресенье 19 марта.
Если есть время, давай вечерком увидимся - поужинаем вместе в каком-нибудь кафе.
Мой тел. 8(XXX)XXX-XX-XX.
Остановлюсь я в Гостиничном комплексе кампуса ДВФУ на острове Русский.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не распределяется место в датафайле, если есть место в другом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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