Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Вот пытаюсь сделать create table, а оно мне в ответ говорит, что не найдено табличное пространство по умолчанию с размером страницы хотя бы 8192 байт. Что где нужно подкрутить, подскажите пожалуйста? Таблицы по умолчанию создаются в пространстве USERSPACE1, пробовала в квесте сделать ему alter... слегка не получилось. На вкладке Advanced меняю Page size с 4К на 8, в ответ 2 мессаджбокса: "Выбранный размер страницы несовместим с существующим буферпулом. Если вы хотите продолжить, вы должны выбрать совместимый буферпул. Продолжить?" - yes - "Не найдено буферпулов с соответствующим размером страницы", в комбобоксе Bufferpool только IBMDEFAULTBP. Что делать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 00:36 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Точный текст первой ошибки: SQL0286N Не найдено табличное пространство по умолчанию с размером страницы по крайней мере 8192, которое мог бы использовать ID авторизации "USER". SQLSTATE=42727 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 00:48 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Ну написано же-не найдено подходящих буферпулов. Так создайте уже BP со страницей 8к и будет вам счастье-можно будет создать табличное пространство со страницей 8к. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 08:12 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
DB2 расчитывает максимальный размер записи исходя из предположения, что пользователь может забить все данные "под завязку". Далее учитывается, что на странице в 4К нужно захватить еще несколько байт под системные нужды. Вот и получилось, что максимальный объем данных вышел за максимально допустимый размер. Вам предлагается создать таблицу с размером буфера в 8К. По умолчанию, DB2 содает USERSPASE1 с размером страниц в 4К. Вы должны сами создать а) буферный пул для обслуживания таблиц с размером страницы в 8К б) создать таблицу, указав подходящий буферный пул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 10:50 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Да и не забудте про системное временное табличное простанство размером 8K Но я рекомендовал бы сразу 32K. Если средняя длина поля varchar будет больше 1000 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:12 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Николай, 32К - для буферпула или временного табличного пространства, или для того и другого? Поле varchar(4000) одно, вообще в таблице 30 полей, из них varchar(256) - 4, varchar(9...23) - 5, varchar(50) - 2, остальное - int, bigint, timestamp и smallint. Какой минимальный размер страницы нужен для буферпула и временного табличного пространства? Чтобы и работало нормально, и места не сильно много занимало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:48 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
На основании определения сложно сказать. Нужно смотреть среднюю длину по данным. Соответсвенно почему лучше больший размер стоки: у тебя при некоторых раскладах может получится порядка 3-4 строк на странице, маловато. это будет влиять на производительность IO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 13:11 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Вообще то, если пошла такая пьянка, в 4000 символов, то лучше смотреть в сторону типа данных LONG VARCHAR. Данные этого типа живут отдельно от основных данных строки. Чем-то это смахивает на хранение VARCHAR-ов в Oracle. Если такой тип данных подходит, тогда можно избежать создания дополнительных пулов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:42 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Насколько сильно отличается работа с типом LONG VARCHAR от простого VARCHAR-а? Интересует синтаксис запросов и особенности работы через OleDBProvider. Если это как в MS SQL (работа с varchar и text - небо и земля), то не подходит, слишком много переписывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:36 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Создаю буферпул, какие partition groups (из набора IBMCATGROUP, IBMDEFAULTGROUP, IBMTEMPGROUP) к нему привязывать? Интуиция подсказывает, что достаточно IBMDEFAULTGROUP и все. Это правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:40 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
И это еще не все :) Какой размер буферпула в страницах (Number of pages в GUI квеста) лучше сделать для таких данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:44 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
pimaНасколько сильно отличается работа с типом LONG VARCHAR от простого VARCHAR-а? Интересует синтаксис запросов и особенности работы через OleDBProvider. Если это как в MS SQL (работа с varchar и text - небо и земля), то не подходит, слишком много переписывать. Не зная, как в OleDBProvider, в Java работа с LONG VARCHAR такая же как и с обычными VARCHAR. Смоти тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 20:53 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Аааааа, да что ж это за наказание такое!!! Таблица создалась, теперь триггер не создается! На таблице CENTER_DEVICE_TYPE живет вьюха: select * from center_device_type where delete_date is null, на этой вьюхе живет инстидный триггер: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. который отказывается создаваться, типа потому что "SQL1424N Слишком много ссылок на временные переменные и столбцы временных таблиц или в этих ссылках слишком большая длина строки." Пробую изменить длину поля METROLOGICAL_BEHAVIOURS (то самое злополучное 4000): 1000 - пашем, 2000 - тоже живем, 3000 - умираем. Спасите, плииииз! Да, в новом буферпуле и табличных пространствах решила ограничиться страницами 8К, потому что средняя длина поля - 263 символа. Больше 1000 знаков - всего 0,5%, а больше 3000 - вообще единицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 00:20 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Попробуйте поставить тригер не на VIEW CENTER_DEVICE_TYPE_ACTUAL, а на таблицу CENTER_DEVICE_TYPE. У тригеров, помимо событий (INSERT, UPDATE, DELETE) есть условия срабатывания тригера. В эти условия вставте ваше - delete_date is null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 09:32 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь, но куда ни кинь, всюду клин. Похоже, бум-таки обрезать поле. Траблы следующие: 1) На вьюху можно создать только INSTEAD-триггер 2) На таблицу - только AFTER или BEFORE, INSTEAD-триггер создать нельзя 3) Функция IDENTITY_VAL_LOCAL(), насколько я понимаю, имеет силу только в инстидном триггере после оператора INSERT, в AFTER-триггере от нее остается пшик, идентити можно получить только путем select max(CENTER_ID) from center_device_type. Система многопользовательская, а гарантируется ли, что select max в after-триггере выдаст мне max именно того набора данных, который был на начало сессии (на момент инсерта)? Держит ли after-триггер блокировку, которую создал инициировавший его инсерт, или создает новую? Если новую, то между инсертом и триггером запросто вклинивается еще что-нибудь, и получаем некорректный max. Т. е. пока я вижу, что нужен только INSTEAD-триггер, с AFTER большие вопросы. INSTEAD - только на вьюху, а на вьюхе он дохнет при большой длине поля. gals, спасибо, почитала доку, но там: WHEN condition may not be specified for INSTEAD OF triggers. В принципе, без разницы, можно вместо WHEN написать: IF INSERTED_RECORD.DELETE_DATE IS NULL BEGIN ... тело триггера... END , но все равно нужен INSTEAD, а как его создать, я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:10 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
pima 3) Функция IDENTITY_VAL_LOCAL(), насколько я понимаю, имеет силу только в инстидном триггере после оператора INSERT, в AFTER-триггере от нее остается пшик, идентити можно получить только путем select max(CENTER_ID) from center_device_type. Разве вам не удасться сделать в AFTER-тригере вместо: Код: plaintext 1. 2. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:50 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
1. Напишите ddl таблицы 2. Делать это в instead of триггере - требование системы? Или можно в after триггере на таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:56 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
Как вариант - используйте SEQUENCE объект вместо IDENTITY_VAL_LOCAL() Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 20:32 |
|
||
|
DB2 - как создать таблицу с полем varchar(4000)?
|
|||
|---|---|---|---|
|
#18+
gals Код: plaintext 1. 2. Да, туплю, спасибо. Но все равно, скорее всего, 4000 символов пойдут лесом, т. к. в согласованной постановке значилось всего 1000, а заказчик предоставил файл с 4000, вот и думали сделать им типа дополнительный подарок, раз уж такая пьянка. Но после исследования вытекающих переделок нас заломало делать такие подарки, которые надо, если по-хорошему, тестировать. Там еще репликацию ворошить - переводить ее с вьюхи на триггер. В общем, поскольку это не обязательно, решили обрезать до 2000 и не мучиться. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 17:26 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34020931&tid=1605092]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 318ms |

| 0 / 0 |
