Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не распределяется место в датафайле, если есть место в другом / 25 сообщений из 25, страница 1 из 1
29.11.2017, 05:38
    #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
29.11.2017, 08:25
    #39561016
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распределяется место в датафайле, если есть место в другом
Вячеслав Любомудров,

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

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

Так может это с вашей точки зрения l_dblob03.dbf - "середина" ТП, а для Oracle здесь такого понятия вообще нет. Распределяет, как ему удобнее, по только ему известному алгоритму.
...
Рейтинг: 0 / 0
29.11.2017, 10:07
    #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
29.11.2017, 13:57
    #39561261
oracloud
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распределяется место в датафайле, если есть место в другом
Вячеслав Любомудров,
сделайте bigfile, если хочется красоты
...
Рейтинг: 0 / 0
29.11.2017, 15:30
    #39561342
ык
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распределяется место в датафайле, если есть место в другом
Вячеслав ЛюбомудровНу как бы везде декларируется именно round-robin...
Добавьте в сл.раз не один а 2-3 файла, посмотрите на работу round-robin... будут они параллельно расти или по очереди...
...
Рейтинг: 0 / 0
29.11.2017, 15:50
    #39561361
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распределяется место в датафайле, если есть место в другом
Куча ТП с недозаполненными файлами (правда, не LOB с SECUREFILE) -- растут параллельно, поочередно выделяя экстенты во всех файлах с доступным местом (не пропорционально доступному месту, а просто при его наличии)
Оно всегда так было и именно поэтому текущая ситуация меня удивила
...
Рейтинг: 0 / 0
01.12.2017, 02:07
    #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
22.12.2017, 08:25
    #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
23.12.2017, 07:33
    #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
23.12.2017, 07:34
    #39574767
orac_list
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распределяется место в датафайле, если есть место в другом
orac_list,

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

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

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

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

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

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

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

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


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