powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хранение пустых полей
25 сообщений из 53, страница 1 из 3
Хранение пустых полей
    #33396688
m1rag3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Может мой вопрос и несколько глупый но все же...
Имеется таблица с тремя столбцами: число, дата, текст.
Пусть в ней 10 записей. Вопрос мой в том, резервируется ли место (физически на диске в файле БД) в записи под то поле, которое является пустым. Иными словами, будет ли эта таблица занимать одинаковое место на диске, если во всех десяти записях одно из полей будет NULL, а в другом случае заполнено.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396702
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значения NULL не хранятся и не индексируются.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396715
m1rag3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть таблица с NULLами в одном из полей будет физически весить меньше чем та же таблица с заполненным полем во всех записях? Я правильно понял?
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396717
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396718
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_MaximovЗначения NULL не хранятся и не индексируются.В общем случае неверно ;-)
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396795
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m1rag3Всем доброго времени суток!
Может мой вопрос и несколько глупый но все же...
Имеется таблица с тремя столбцами: число, дата, текст.
Пусть в ней 10 записей. Вопрос мой в том, резервируется ли место (физически на диске в файле БД) в записи под то поле, которое является пустым. Иными словами, будет ли эта таблица занимать одинаковое место на диске, если во всех десяти записях одно из полей будет NULL, а в другом случае заполнено.

Указанная таблица из 10ти строк :o) скорее всего будет занимать одинаковое дисковое пространство, поскольку пространство выделяется блоками фиксированной длинны (точнее экстентами блоков). В пределах блока записи имеют разный размер, в зависимости от фактических значений полей, поэтому в блок может поместиться разное число записей.
Касательно NULL. Если пустое поле последнее в списке колонок таблицы, или все следующие за пустым полем поля тоже пустые, то эти поля места вообще не занимают. Например в записи (V1, NULL, V2, NULL, NULL, NULL) последние три пустых поля места не занимают. Если за пустыми полями есть непустое, то каждое пустое поле занимает 1 байт. Например в записи (V1, NULL, NULL, NULL, V2, NULL) первые три NULL занимают по одному байту. Последний NULL места не занимает.

Такой подход позволяет добавлять в таблицу пустые колонки практически мгновенно.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33396820
Leonid_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
SQL> conn system/system@artz
Connected.
SQL> create table t$ 3 (i int not null, v varchar2( 4000 ), d date not null)
   2   /

Table created.

SQL> begin
   2     for l_i in  1 .. 100000  loop
   3       insert into t$ 3  values(l_i, null , sysdate);
   4     end loop;
   5   end;
   6   /

PL/SQL procedure successfully completed.

SQL> create table t$ 4 (i int not null, d date not null,v varchar2( 4000 ))
   2   /

Table created.

SQL> begin
   2     for l_i in  1 .. 100000  loop
   3       insert into t$ 4  values(l_i, sysdate,null);
   4     end loop;
   5   end;
   6   /

PL/SQL procedure successfully completed.

SQL> 
SQL> select segment_name, sum(bytes) from user_extents where segment_name like 'T$_' group by segment_name;

SEGMENT_NAME  SUM(BYTES)                                                                                                                                         
------------- ----------                                                                      
T$ 3               3145728                                                                       
T$ 4               2097152                                                                       
                                                                                

SQL> 
SQL> drop table t$ 4 ;

Table dropped.

SQL> drop table t$ 3 ;

Table dropped.

SQL> exit

...
Рейтинг: 0 / 0
Хранение пустых полей
    #33397270
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_MaximovЗначения NULL не хранятся и не индексируются.
например bitmap...
...
Рейтинг: 0 / 0
Хранение пустых полей
    #33398835
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров Vadim_MaximovЗначения NULL не хранятся и не индексируются.В общем случае неверно ;-)Знаю. Согласен. :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Хранение пустых полей
    #39401978
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подниму тему, имеется таблица от разработчика порядка 600 столбцов, 500 гиг.

Данные разные из разных отчетов, документов и т.д.
Соответственно запрос с разбиением по типам данных выглядит так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT /*+ parallel(8) */DISTINCT DL.CLASS,DL.TYPE,
SUM(case when DL.X IS NOT NULL THEN 1 ELSE 0 END) X,
SUM(case when DL.Y IS NOT NULL THEN 1 ELSE 0 END) Y,
... 
(выбрано из USER_COLUMNS, упорядочено по COLUMN_ID)
...
FROM DL
GROUP BY DL.CLASS,DL.TYPE





Красное - нед данных, то есть 90% таблицы откровенно пустые, причем есть отчеты за текущий месяц в 90 миллионов строк, у которых последний столбец находится на 430 месте, а всего занятых столбцов 41. До 430 идут порядка 390 пустых столбцов.

В связи с этим возникает ряд вопросов.

Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными?
Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки?

В физическом смысле при движении заполненных столбцов ближе к первому (в тех скриптах, что предлагает редактор) вижу таблица пересоздается в табличном пространстве по умолчанию, то есть места мне для еще одной таблицы даже временно просто не хватит.
Что будет в это время с UNDO, если таблица порядка 500Гб?

Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)?

ПС. Еще есть вероятность, что в этом отчете на 90 миллионов прочистят пустые строки, но остальное то останется.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39401982
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными?
Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки?RTFM Nulls (FAQ)
nata44845Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)?
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39401987
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845Если в последнем столбце есть хоть одна заполненная ячейка данных все все столбцы до этого считаются заполненными?
Или если заполнена ячейка в строке только эта строка доходит до этой ячейки, а все остальные строки записываются каждая до своей последней заполненной ячейки?С таким количеством столбцов уже вступает в дело intra-block chaining
Каждая строка разбивается на куски не более 255 столбцов
Там теоретически все также -- если заполнен последним (не NULL) столбец 40 -- все остальное не хранится, все столбцы до 40 содержащие NULL занимают 1 байт
Если заполнены столбец 40, 300 и 380, то тут первый кусок аналогично предыдущему, а вот остальные -- в зависимости от порядка заполнения -- если первым заполнен столбец 380, то создастся кусок, содержащий (380-256) NULL по одному байту и значение столбца 380. Если потом обновляем столбец 300 -- он будет обновлен в этом куске.
А если первым обновлен столбец 300 -- будет создан второй кусок с (300-256) NULL и значением столбца 300. При обновлении столбца 380 будет создан новый кусок с (380-301) NULL по одному байту и значением столбца 380.

Обсуждалось уже давно, начиная с Chained rows в вторичных таблицах пространственных индексов и далее
Возможно, там и/или тут неточности

nata44845В физическом смысле при движении заполненных столбцов ближе к первому (в тех скриптах, что предлагает редактор) вижу таблица пересоздается в табличном пространстве по умолчанию, то есть места мне для еще одной таблицы даже временно просто не хватит.
Что будет в это время с UNDO, если таблица порядка 500Гб?

Можно ли как-то просчитать не среднюю длину строк, а конкретные длины для каждой строки каждого класса и количество таких строк (это в случае, что все длины строк разные)?

ПС. Еще есть вероятность, что в этом отчете на 90 миллионов прочистят пустые строки, но остальное то останется.Тут я не совсем понял терминологию, но да -- реорганизация такой большой таблицы дело весьма ресурсоемкой.

Но я бы все-таки разбил на 3 таблицы с 1:1 связью и сверху бы повесил VIEW (INSTEAD OF триггер на обновления)
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39401992
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

По столбцам все равно не поняла.
К примеру есть столбец, в нем половина null половина заполнена.
Он занимает полный размер по всем строкам, или в тех строках где есть данные длина равна длине столбца, а там где null 1 байт?

И соответственно как ведут себя в этом случае все предыдущие столбцы?
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39401995
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЕсли заполнены столбец 40, 300 и 380, то тут первый кусок аналогично предыдущему, а вот остальные -- в зависимости от порядка заполнения -- если первым заполнен столбец 380, то создастся кусок, содержащий (380-256) NULL по одному байту и значение столбца 380. Если потом обновляем столбец 300 -- он будет обновлен в этом куске.
А если первым обновлен столбец 300 -- будет создан второй кусок с (300-256) NULL и значением столбца 300. При обновлении столбца 380 будет создан новый кусок с (380-301) NULL по одному байту и значением столбца 380.Вот тут, кстати, скорее всего неточность -- просто в заголовке [под]строки указывается номер первого столбца

Хотя, вроде как Chained rows в вторичных таблицах пространственных индексов намекает на это.

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

По столбцам все равно не поняла.
К примеру есть столбец, в нем половина null половина заполнена.
Он занимает полный размер по всем строкам, или в тех строках где есть данные длина равна длине столбца, а там где null 1 байт?

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

Ндаа, с вьюшкой у нас проблема как и у них, "самонастраиваемое приложение".
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39401998
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Это я тоже условно поняла, что надо отбросить последние нули, но как это сделать запросом пока не продумала.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402000
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Тут как вариант только вынести часть данных те же отчеты в отдельную таблицу.
И попросить больше так не делать...
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402003
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845Это я тоже условно поняла, что надо отбросить последние нули, но как это сделать запросом пока не продумала.Я ж почти готовое выражение дал как способ его генерации.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402672
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вячеслав Любомудров,

Row pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402679
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderRow pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99Хммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402688
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саян, я сам это не проверял, просто дал ссылки, где это обсуждалось
Но там были интересные моменты, но вот комментировать их я не берусь

В любом случае, проблемы девушки -- другого способа я не вижу
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402735
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicХммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак.

Или (как вариант) физически ещё один столбец будет добавлен к 1-99 (который станет 1-99,356).

SY.
...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402783
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ElicxtenderRow pieces разбиваются с последнего поля,а не с первого. Т.е. если 355 столбцов то будут два: 100-355 и 1-99Хммм. Звучит так, что если добавить ещё один столбец, то либо появится третий кусок, либо произойдёт нехилый бессмысленный update. Верится не то что с трудом, а вообще никак.да, появится третий кусок, только уже "уехавший" в другой блок
test1
Код: 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.
alter session set tracefile_identifier='test';

declare
   c varchar2(32000);
   v varchar2(32000);
   cols varchar2(32000):='c_1 number(1,0)';
   vals varchar2(32000):='0';
   
   ndf int;
   nbl int;
begin
   for i in 2..355 loop
      cols:=cols||',c_'||i||' number(1,0)';
      vals:=vals||','||case 
                         when i between 2 and 100 then 1
                         when i between 101 and 350 then 2
                         else 3
                       end;
   end loop;
   c:='create table test('||cols||')';
   v:='insert into test values('||vals||')';
   execute immediate (c);
   execute immediate (v);
   execute immediate '
      select 
          dbms_rowid.rowid_relative_fno(c.rowid) ndf
         ,dbms_rowid.rowid_block_number(c.rowid) nbl
      from test c' into ndf,nbl;
   commit;
   execute immediate 'alter system dump datafile ' || ndf || ' block '||nbl;
end;
/
disc;


дамп к тесту1
Код: 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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
block_row_dump:
tab 0, row 0, @0x1c80
tl: 768 fb: -----L-- lb: 0x1  cc: 255
col  0: [ 2]  c1 03
col  1: [ 2]  c1 03
col  2: [ 2]  c1 03
col  3: [ 2]  c1 03
col  4: [ 2]  c1 03
col  5: [ 2]  c1 03
col  6: [ 2]  c1 03
col  7: [ 2]  c1 03
col  8: [ 2]  c1 03
col  9: [ 2]  c1 03
col 10: [ 2]  c1 03
col 11: [ 2]  c1 03
col 12: [ 2]  c1 03
col 13: [ 2]  c1 03
col 14: [ 2]  c1 03
col 15: [ 2]  c1 03
col 16: [ 2]  c1 03
col 17: [ 2]  c1 03
col 18: [ 2]  c1 03
col 19: [ 2]  c1 03
col 20: [ 2]  c1 03
col 21: [ 2]  c1 03
col 22: [ 2]  c1 03
col 23: [ 2]  c1 03
col 24: [ 2]  c1 03
col 25: [ 2]  c1 03
col 26: [ 2]  c1 03
col 27: [ 2]  c1 03
col 28: [ 2]  c1 03
col 29: [ 2]  c1 03
col 30: [ 2]  c1 03
col 31: [ 2]  c1 03
col 32: [ 2]  c1 03
col 33: [ 2]  c1 03
col 34: [ 2]  c1 03
col 35: [ 2]  c1 03
col 36: [ 2]  c1 03
col 37: [ 2]  c1 03
col 38: [ 2]  c1 03
col 39: [ 2]  c1 03
col 40: [ 2]  c1 03
col 41: [ 2]  c1 03
col 42: [ 2]  c1 03
col 43: [ 2]  c1 03
col 44: [ 2]  c1 03
col 45: [ 2]  c1 03
col 46: [ 2]  c1 03
col 47: [ 2]  c1 03
col 48: [ 2]  c1 03
col 49: [ 2]  c1 03
col 50: [ 2]  c1 03
col 51: [ 2]  c1 03
col 52: [ 2]  c1 03
col 53: [ 2]  c1 03
col 54: [ 2]  c1 03
col 55: [ 2]  c1 03
col 56: [ 2]  c1 03
col 57: [ 2]  c1 03
col 58: [ 2]  c1 03
col 59: [ 2]  c1 03
col 60: [ 2]  c1 03
col 61: [ 2]  c1 03
col 62: [ 2]  c1 03
col 63: [ 2]  c1 03
col 64: [ 2]  c1 03
col 65: [ 2]  c1 03
col 66: [ 2]  c1 03
col 67: [ 2]  c1 03
col 68: [ 2]  c1 03
col 69: [ 2]  c1 03
col 70: [ 2]  c1 03
col 71: [ 2]  c1 03
col 72: [ 2]  c1 03
col 73: [ 2]  c1 03
col 74: [ 2]  c1 03
col 75: [ 2]  c1 03
col 76: [ 2]  c1 03
col 77: [ 2]  c1 03
col 78: [ 2]  c1 03
col 79: [ 2]  c1 03
col 80: [ 2]  c1 03
col 81: [ 2]  c1 03
col 82: [ 2]  c1 03
col 83: [ 2]  c1 03
col 84: [ 2]  c1 03
col 85: [ 2]  c1 03
col 86: [ 2]  c1 03
col 87: [ 2]  c1 03
col 88: [ 2]  c1 03
col 89: [ 2]  c1 03
col 90: [ 2]  c1 03
col 91: [ 2]  c1 03
col 92: [ 2]  c1 03
col 93: [ 2]  c1 03
col 94: [ 2]  c1 03
col 95: [ 2]  c1 03
col 96: [ 2]  c1 03
col 97: [ 2]  c1 03
col 98: [ 2]  c1 03
col 99: [ 2]  c1 03
col 100: [ 2]  c1 03
col 101: [ 2]  c1 03
col 102: [ 2]  c1 03
col 103: [ 2]  c1 03
col 104: [ 2]  c1 03
col 105: [ 2]  c1 03
col 106: [ 2]  c1 03
col 107: [ 2]  c1 03
col 108: [ 2]  c1 03
col 109: [ 2]  c1 03
col 110: [ 2]  c1 03
col 111: [ 2]  c1 03
col 112: [ 2]  c1 03
col 113: [ 2]  c1 03
col 114: [ 2]  c1 03
col 115: [ 2]  c1 03
col 116: [ 2]  c1 03
col 117: [ 2]  c1 03
col 118: [ 2]  c1 03
col 119: [ 2]  c1 03
col 120: [ 2]  c1 03
col 121: [ 2]  c1 03
col 122: [ 2]  c1 03
col 123: [ 2]  c1 03
col 124: [ 2]  c1 03
col 125: [ 2]  c1 03
col 126: [ 2]  c1 03
col 127: [ 2]  c1 03
col 128: [ 2]  c1 03
col 129: [ 2]  c1 03
col 130: [ 2]  c1 03
col 131: [ 2]  c1 03
col 132: [ 2]  c1 03
col 133: [ 2]  c1 03
col 134: [ 2]  c1 03
col 135: [ 2]  c1 03
col 136: [ 2]  c1 03
col 137: [ 2]  c1 03
col 138: [ 2]  c1 03
col 139: [ 2]  c1 03
col 140: [ 2]  c1 03
col 141: [ 2]  c1 03
col 142: [ 2]  c1 03
col 143: [ 2]  c1 03
col 144: [ 2]  c1 03
col 145: [ 2]  c1 03
col 146: [ 2]  c1 03
col 147: [ 2]  c1 03
col 148: [ 2]  c1 03
col 149: [ 2]  c1 03
col 150: [ 2]  c1 03
col 151: [ 2]  c1 03
col 152: [ 2]  c1 03
col 153: [ 2]  c1 03
col 154: [ 2]  c1 03
col 155: [ 2]  c1 03
col 156: [ 2]  c1 03
col 157: [ 2]  c1 03
col 158: [ 2]  c1 03
col 159: [ 2]  c1 03
col 160: [ 2]  c1 03
col 161: [ 2]  c1 03
col 162: [ 2]  c1 03
col 163: [ 2]  c1 03
col 164: [ 2]  c1 03
col 165: [ 2]  c1 03
col 166: [ 2]  c1 03
col 167: [ 2]  c1 03
col 168: [ 2]  c1 03
col 169: [ 2]  c1 03
col 170: [ 2]  c1 03
col 171: [ 2]  c1 03
col 172: [ 2]  c1 03
col 173: [ 2]  c1 03
col 174: [ 2]  c1 03
col 175: [ 2]  c1 03
col 176: [ 2]  c1 03
col 177: [ 2]  c1 03
col 178: [ 2]  c1 03
col 179: [ 2]  c1 03
col 180: [ 2]  c1 03
col 181: [ 2]  c1 03
col 182: [ 2]  c1 03
col 183: [ 2]  c1 03
col 184: [ 2]  c1 03
col 185: [ 2]  c1 03
col 186: [ 2]  c1 03
col 187: [ 2]  c1 03
col 188: [ 2]  c1 03
col 189: [ 2]  c1 03
col 190: [ 2]  c1 03
col 191: [ 2]  c1 03
col 192: [ 2]  c1 03
col 193: [ 2]  c1 03
col 194: [ 2]  c1 03
col 195: [ 2]  c1 03
col 196: [ 2]  c1 03
col 197: [ 2]  c1 03
col 198: [ 2]  c1 03
col 199: [ 2]  c1 03
col 200: [ 2]  c1 03
col 201: [ 2]  c1 03
col 202: [ 2]  c1 03
col 203: [ 2]  c1 03
col 204: [ 2]  c1 03
col 205: [ 2]  c1 03
col 206: [ 2]  c1 03
col 207: [ 2]  c1 03
col 208: [ 2]  c1 03
col 209: [ 2]  c1 03
col 210: [ 2]  c1 03
col 211: [ 2]  c1 03
col 212: [ 2]  c1 03
col 213: [ 2]  c1 03
col 214: [ 2]  c1 03
col 215: [ 2]  c1 03
col 216: [ 2]  c1 03
col 217: [ 2]  c1 03
col 218: [ 2]  c1 03
col 219: [ 2]  c1 03
col 220: [ 2]  c1 03
col 221: [ 2]  c1 03
col 222: [ 2]  c1 03
col 223: [ 2]  c1 03
col 224: [ 2]  c1 03
col 225: [ 2]  c1 03
col 226: [ 2]  c1 03
col 227: [ 2]  c1 03
col 228: [ 2]  c1 03
col 229: [ 2]  c1 03
col 230: [ 2]  c1 03
col 231: [ 2]  c1 03
col 232: [ 2]  c1 03
col 233: [ 2]  c1 03
col 234: [ 2]  c1 03
col 235: [ 2]  c1 03
col 236: [ 2]  c1 03
col 237: [ 2]  c1 03
col 238: [ 2]  c1 03
col 239: [ 2]  c1 03
col 240: [ 2]  c1 03
col 241: [ 2]  c1 03
col 242: [ 2]  c1 03
col 243: [ 2]  c1 03
col 244: [ 2]  c1 03
col 245: [ 2]  c1 03
col 246: [ 2]  c1 03
col 247: [ 2]  c1 03
col 248: [ 2]  c1 03
col 249: [ 2]  c1 03
col 250: [ 2]  c1 04
col 251: [ 2]  c1 04
col 252: [ 2]  c1 04
col 253: [ 2]  c1 04
col 254: [ 2]  c1 04
tab 0, row 1, @0x1b4c
tl: 308 fb: --H-F--- lb: 0x1  cc: 100
nrid:  0x018019f7.0
col  0: [ 1]  80
col  1: [ 2]  c1 02
col  2: [ 2]  c1 02
col  3: [ 2]  c1 02
col  4: [ 2]  c1 02
col  5: [ 2]  c1 02
col  6: [ 2]  c1 02
col  7: [ 2]  c1 02
col  8: [ 2]  c1 02
col  9: [ 2]  c1 02
col 10: [ 2]  c1 02
col 11: [ 2]  c1 02
col 12: [ 2]  c1 02
col 13: [ 2]  c1 02
col 14: [ 2]  c1 02
col 15: [ 2]  c1 02
col 16: [ 2]  c1 02
col 17: [ 2]  c1 02
col 18: [ 2]  c1 02
col 19: [ 2]  c1 02
col 20: [ 2]  c1 02
col 21: [ 2]  c1 02
col 22: [ 2]  c1 02
col 23: [ 2]  c1 02
col 24: [ 2]  c1 02
col 25: [ 2]  c1 02
col 26: [ 2]  c1 02
col 27: [ 2]  c1 02
col 28: [ 2]  c1 02
col 29: [ 2]  c1 02
col 30: [ 2]  c1 02
col 31: [ 2]  c1 02
col 32: [ 2]  c1 02
col 33: [ 2]  c1 02
col 34: [ 2]  c1 02
col 35: [ 2]  c1 02
col 36: [ 2]  c1 02
col 37: [ 2]  c1 02
col 38: [ 2]  c1 02
col 39: [ 2]  c1 02
col 40: [ 2]  c1 02
col 41: [ 2]  c1 02
col 42: [ 2]  c1 02
col 43: [ 2]  c1 02
col 44: [ 2]  c1 02
col 45: [ 2]  c1 02
col 46: [ 2]  c1 02
col 47: [ 2]  c1 02
col 48: [ 2]  c1 02
col 49: [ 2]  c1 02
col 50: [ 2]  c1 02
col 51: [ 2]  c1 02
col 52: [ 2]  c1 02
col 53: [ 2]  c1 02
col 54: [ 2]  c1 02
col 55: [ 2]  c1 02
col 56: [ 2]  c1 02
col 57: [ 2]  c1 02
col 58: [ 2]  c1 02
col 59: [ 2]  c1 02
col 60: [ 2]  c1 02
col 61: [ 2]  c1 02
col 62: [ 2]  c1 02
col 63: [ 2]  c1 02
col 64: [ 2]  c1 02
col 65: [ 2]  c1 02
col 66: [ 2]  c1 02
col 67: [ 2]  c1 02
col 68: [ 2]  c1 02
col 69: [ 2]  c1 02
col 70: [ 2]  c1 02
col 71: [ 2]  c1 02
col 72: [ 2]  c1 02
col 73: [ 2]  c1 02
col 74: [ 2]  c1 02
col 75: [ 2]  c1 02
col 76: [ 2]  c1 02
col 77: [ 2]  c1 02
col 78: [ 2]  c1 02
col 79: [ 2]  c1 02
col 80: [ 2]  c1 02
col 81: [ 2]  c1 02
col 82: [ 2]  c1 02
col 83: [ 2]  c1 02
col 84: [ 2]  c1 02
col 85: [ 2]  c1 02
col 86: [ 2]  c1 02
col 87: [ 2]  c1 02
col 88: [ 2]  c1 02
col 89: [ 2]  c1 02
col 90: [ 2]  c1 02
col 91: [ 2]  c1 02
col 92: [ 2]  c1 02
col 93: [ 2]  c1 02
col 94: [ 2]  c1 02
col 95: [ 2]  c1 02
col 96: [ 2]  c1 02
col 97: [ 2]  c1 02
col 98: [ 2]  c1 02
col 99: [ 2]  c1 02
end_of_block_dump

...
Рейтинг: 0 / 0
Хранение пустых полей
    #39402784
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
тест2
Код: 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.
drop table test purge;
alter session set tracefile_identifier='test2';

declare
   c varchar2(32000);
   v varchar2(32000);
   cols varchar2(32000):='c_1 number(1,0)';
   vals varchar2(32000):='0';
   
   ndf int;
   nbl int;
begin
   for i in 2..355 loop
      cols:=cols||',c_'||i||' number(1,0)';
      vals:=vals||','||case 
                         when i between 2 and 100   then '1'
                         when i between 101 and 300 then '2'
                         else 'null'
                       end;
   end loop;
   c:='create table test('||cols||')';
   v:='insert into test values('||vals||')';
   execute immediate (c);
   execute immediate (v);
   execute immediate 'update test set c_355=3';
   execute immediate '
      select 
          dbms_rowid.rowid_relative_fno(c.rowid) ndf
         ,dbms_rowid.rowid_block_number(c.rowid) nbl
      from test c' into ndf,nbl;
   commit;
   execute immediate 'alter system dump datafile ' || ndf || ' block '||nbl;
end;
/
disc;

дамп к тесту2
Код: 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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
block_row_dump:
tab 0, row 0, @0x1c80
tl: 174 fb: -------- lb: 0x1  cc: 55
nrid:  0x018019f3.0
col  0: [ 2]  c1 02
col  1: [ 2]  c1 02
col  2: [ 2]  c1 02
col  3: [ 2]  c1 02
col  4: [ 2]  c1 02
col  5: [ 2]  c1 02
col  6: [ 2]  c1 02
col  7: [ 2]  c1 02
col  8: [ 2]  c1 02
col  9: [ 2]  c1 02
col 10: [ 2]  c1 02
col 11: [ 2]  c1 02
col 12: [ 2]  c1 02
col 13: [ 2]  c1 02
col 14: [ 2]  c1 02
col 15: [ 2]  c1 02
col 16: [ 2]  c1 02
col 17: [ 2]  c1 02
col 18: [ 2]  c1 02
col 19: [ 2]  c1 02
col 20: [ 2]  c1 02
col 21: [ 2]  c1 02
col 22: [ 2]  c1 02
col 23: [ 2]  c1 02
col 24: [ 2]  c1 02
col 25: [ 2]  c1 02
col 26: [ 2]  c1 02
col 27: [ 2]  c1 02
col 28: [ 2]  c1 02
col 29: [ 2]  c1 02
col 30: [ 2]  c1 02
col 31: [ 2]  c1 02
col 32: [ 2]  c1 02
col 33: [ 2]  c1 02
col 34: [ 2]  c1 02
col 35: [ 2]  c1 02
col 36: [ 2]  c1 02
col 37: [ 2]  c1 02
col 38: [ 2]  c1 02
col 39: [ 2]  c1 02
col 40: [ 2]  c1 02
col 41: [ 2]  c1 02
col 42: [ 2]  c1 02
col 43: [ 2]  c1 02
col 44: [ 2]  c1 02
col 45: [ 2]  c1 02
col 46: [ 2]  c1 02
col 47: [ 2]  c1 02
col 48: [ 2]  c1 02
col 49: [ 2]  c1 02
col 50: [ 2]  c1 02
col 51: [ 2]  c1 02
col 52: [ 2]  c1 02
col 53: [ 2]  c1 02
col 54: [ 2]  c1 02
tab 0, row 1, @0x1bf1
tl: 143 fb: --H-F--- lb: 0x1  cc: 45
nrid:  0x018019f7.0
col  0: [ 1]  80
col  1: [ 2]  c1 02
col  2: [ 2]  c1 02
col  3: [ 2]  c1 02
col  4: [ 2]  c1 02
col  5: [ 2]  c1 02
col  6: [ 2]  c1 02
col  7: [ 2]  c1 02
col  8: [ 2]  c1 02
col  9: [ 2]  c1 02
col 10: [ 2]  c1 02
col 11: [ 2]  c1 02
col 12: [ 2]  c1 02
col 13: [ 2]  c1 02
col 14: [ 2]  c1 02
col 15: [ 2]  c1 02
col 16: [ 2]  c1 02
col 17: [ 2]  c1 02
col 18: [ 2]  c1 02
col 19: [ 2]  c1 02
col 20: [ 2]  c1 02
col 21: [ 2]  c1 02
col 22: [ 2]  c1 02
col 23: [ 2]  c1 02
col 24: [ 2]  c1 02
col 25: [ 2]  c1 02
col 26: [ 2]  c1 02
col 27: [ 2]  c1 02
col 28: [ 2]  c1 02
col 29: [ 2]  c1 02
col 30: [ 2]  c1 02
col 31: [ 2]  c1 02
col 32: [ 2]  c1 02
col 33: [ 2]  c1 02
col 34: [ 2]  c1 02
col 35: [ 2]  c1 02
col 36: [ 2]  c1 02
col 37: [ 2]  c1 02
col 38: [ 2]  c1 02
col 39: [ 2]  c1 02
col 40: [ 2]  c1 02
col 41: [ 2]  c1 02
col 42: [ 2]  c1 02
col 43: [ 2]  c1 02
col 44: [ 2]  c1 02
end_of_block_dump

А третий row piece уехал...
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хранение пустых полей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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