Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-01653: unable to extend table  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Вот наткнулся на такой фокус:

Есть табличное пространство, размером 1Гб,
в котором я создал табличку максимального размера,
а затем экспортом вытащил все данные в дамп (8275083 строк) и
и делаю импорт.

Если перед импортом создаю табличку как
create table test storage (initial 931135488)
то импорт заливает в нее все 8275083 строк.

Если создаю табличку как
create table test (...) 
- т.е. без явного указания storage (initial 931135488)
а также в случаях когда делаю
truncate table test
, то импорт заливает только 8273862 строк и обламывается:
IMP-00058: ORACLE error 1653 encountered
ORA-01653: unable to extend table YU.TEST by 1024 in tablespace YU
IMP-00018: partial import of previous table completed: 8273862 rows imported
Import terminated successfully with warnings.

Никаких других объектов в табличном пространстве не присутствует, я проверял.
Табличное пространство создано как extent management local segmant space management auto. Оракл версии 10г.

В чем дело?
11 сен 07, 16:19    [4650559]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
Груня
Member

Откуда:
Сообщений: 227
Превышен MAX_EXTENTS таблицы ...
11 сен 07, 16:28    [4650668]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
DBMS_PAPA_DUMP
Member

Откуда: Hrenaster table
Сообщений: 10
1. Размер блока?
2. AUTOALLOCATE или UNIFORM SIZE?
3. Файловая система или RAW? шутка :)
11 сен 07, 16:30    [4650704]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
DBMS_PAPA_DUMP
Member

Откуда: Hrenaster table
Сообщений: 10
Груня
Превышен MAX_EXTENTS таблицы ...
-1
автор
extent management local
11 сен 07, 16:35    [4650763]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
badm
Member

Откуда: Kazan
Сообщений: 984
Yuri Pudovchenko
Вот наткнулся на такой фокус:

Есть табличное пространство, размером 1Гб,
в котором я создал табличку максимального размера,
а затем экспортом вытащил все данные в дамп (8275083 строк) и
и делаю импорт.

Если перед импортом создаю табличку как
create table test storage (initial 931135488)
то импорт заливает в нее все 8275083 строк.

Если создаю табличку как
create table test (...) 
- т.е. без явного указания storage (initial 931135488)
а также в случаях когда делаю
truncate table test
, то импорт заливает только 8273862 строк и обламывается:
IMP-00058: ORACLE error 1653 encountered
ORA-01653: unable to extend table YU.TEST by 1024 in tablespace YU
IMP-00018: partial import of previous table completed: 8273862 rows imported
Import terminated successfully with warnings.

Никаких других объектов в табличном пространстве не присутствует, я проверял.
Табличное пространство создано как extent management local segmant space management auto. Оракл версии 10г.

В чем дело?


база не восьмерка случаем?
11 сен 07, 16:51    [4650947]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
badm
Member

Откуда: Kazan
Сообщений: 984
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=58367

интересная статья, помоему ваш случай должен быть

-------------------------------------

Все хрустальные мечты детства разбились о чугунную жопу действительности!
11 сен 07, 16:58    [4651007]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
DBMS_PAPA_DUMP
Member

Откуда: Hrenaster table
Сообщений: 10
badm
база не восьмерка случаем?
Стопудово нет. Но это не имеет значения :)
Если размер блока 8k и AUTOALLOCATE (и в том и в другом сомнений почти нет), то стоит помедитировать над числом и размером экстентов в обоих тестах :)
11 сен 07, 16:59    [4651020]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
DBMS_PAPA_DUMP
badm
база не восьмерка случаем?
Стопудово нет. Но это не имеет значения :)
Если размер блока 8k и AUTOALLOCATE (и в том и в другом сомнений почти нет), то стоит помедитировать над числом и размером экстентов в обоих тестах :)



Что значит помедитировать ? При создании табличного пространства я указал
"'extent management local", значит как ни медитируй, а Оракл должен мои медитации
игнорировать. Т.е. по этой команде Оракл создает в заголовке датафайла битовую карту.
Я всегда считал, что она фиксированного размера = 4М, по два бита карты на каждый блок датафайла.

Подробности:
SQL> select * from user_segments;

SEGMENT_NAME
--------------------------------------------------------------------------------
PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
---------- ---------- ---------- -------------- ----------- -----------
MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_
----------- ------------ ---------- --------------- -------
TEST
TABLE YU
931135488 113664 182 65536 1
2147483645 DEFAULT


select EXTENT_ID ,BYTES,BLOCKS from user_extents;

SQL> select EXTENT_ID ,BYTES,BLOCKS from user_extents;

EXTENT_ID BYTES BLOCKS
---------- ---------- ----------
0 65536 8
1 65536 8
2 65536 8
3 65536 8
4 65536 8
5 65536 8
6 65536 8
7 65536 8
8 65536 8
9 65536 8
10 65536 8
11 65536 8
12 65536 8
13 65536 8
14 65536 8
15 65536 8
16 1048576 128
17 1048576 128
18 1048576 128
19 1048576 128
20 1048576 128
21 1048576 128
...
77 1048576 128
78 1048576 128
79 8388608 1024
80 8388608 1024
81 8388608 1024
82 8388608 1024
83 8388608 1024
84 8388608 1024
85 8388608 1024
86 8388608 1024
87 8388608 1024
...
179 8388608 1024
180 8388608 1024
181 8388608 1024

182 rows selected.
11 сен 07, 17:18    [4651232]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Размер блока БД = 8К.
11 сен 07, 17:19    [4651252]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Полезные ссылки
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=75763
https://www.sql.ru/forum/actualthread.aspx?tid=333381&hl=extent_id
11 сен 07, 17:22    [4651279]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Вообще-то я и раньше замечал такое поведение :
- создаем таблицу в табличном пространстве и заполняем ее строками "под завязку",
т.е чтобы Оракл начал ругаться, что ни одной строки он вставить не может.
- удаляем из этой таблицы одну строку (иногда можно удалить несколько строк)
delete from tab1 where rownum<2;
- insert into tab1 select * from tab1 where rownum<2 - получаем сообщение о невозможности
вставить ни одной строки.

По-видимому причина в segment space management auto.
11 сен 07, 17:29    [4651375]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
Yuri Pudovchenko
Вообще-то я и раньше замечал такое поведение :
- создаем таблицу в табличном пространстве и заполняем ее строками "под завязку",
т.е чтобы Оракл начал ругаться, что ни одной строки он вставить не может.
- удаляем из этой таблицы одну строку (иногда можно удалить несколько строк)
delete from tab1 where rownum<2;
- insert into tab1 select * from tab1 where rownum<2 - получаем сообщение о невозможности
вставить ни одной строки.

По-видимому причина в segment space management auto.

:)

p.s. читать про pctfree/pctused, второго в ASSM нет, но принцип тот же :)
11 сен 07, 17:39    [4651477]     Ответить | Цитировать Сообщить модератору
 Re: ORA-01653: unable to extend table  [new]
DBMS_PAPA_DUMP
Member

Откуда: Hrenaster table
Сообщений: 10
Yuri Pudovchenko
Что значит помедитировать ?
Ёпть... Это значит посмотреть в тот же user_extents после просто create table и create table ... storage (initial 931135488)


Yuri Pudovchenko
Т.е. по этой команде Оракл создает в заголовке датафайла битовую карту.
Я всегда считал, что она фиксированного размера = 4М, по два бита карты на каждый блок датафайла.
Делаешь дампы первых нескольких блоков файла и убеждаешься в том, что ошибался.

Yuri Pudovchenko
Размер блока БД = 8К.
Это было понятно из by 1024 in tablespace YU Так же как то, что стоит autoallocate.
Yuri Pudovchenko
По-видимому причина в segment space management auto.
Просто нет слов... Пацталом...

P.S.
И эти люди еще не разрешают мне ковырять в носу (c) Вовочка. То бишь пишут статьи...
11 сен 07, 17:45    [4651533]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить