У меня есть таблица со столбцом varchar2 (4000), где у меня возникла проблема с вставкой данных, например:
ORA-12899: value too large for column "XXX"."YYY"."ZZZ" (actual: 2132, maximum: 2048)
Когда я бегу
select * from user_tab_columns where table_name = 'YYY'
Я вижу столбец CHAR_LENGTH размером 2048, но кроме этого у меня нет никаких следов, почему он будет вытесняться сам?
CHARACTER_SET_NAME - это CHAR_CS, но содержимое в основном закодировано в base64 .. Есть какие-нибудь подсказки, как решить эту проблему?
С Уважением
Обновление:
Вот полные user_tab_columns, извините за отступ.
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_TYPE_MOD DATA_TYPE_OWNER DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE COLUMN_ID DEFAULT_LENGTH DATA_DEFAULT NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE CHARACTER_SET_NAME CHAR_COL_DECL_LENGTH GLOBAL_STATS USER_STATS AVG_COL_LEN CHAR_LENGTH CHAR_USED V80_FMT_IMAGE DATA_UPGRADED HISTOGRAM
YYY ZZZ VARCHAR2 <null> <null> 4,000 <null> <null> Y 7 <null> <null> 15 41 42 43 44 45 46 47 4d 49 49 46 75 7a 43 43 42 4b 4f 67 41 77 49 42 41 67 49 45 54 41 4c 4d 68 6a 41 4e 42 67 6b 71 0.06667 662 1 2013-06-03 929 CHAR_CS 4,000 NO NO 1,394 2,048 C NO YES NONE
Отметка 2048 берется из столбца CHAR_LENGTH, а CHAR_USED - это C ..
Обновление: удалось получить исходный DDL
CREATE TABLE "XXX", "YYY"
(
...
"ZZZ" VARCHAR2 (2048 CHAR)
...
)
Но я до сих пор не знаю, как отрегулировать эту цифру? Помогло бы это с простой таблицей изменения и установкой varchar2 (3192 CHAR)?
varchar2(4000)
- поддерживает ли это тип данных и длина данных изuser_tab_columns
? Можете ли вы опубликовать команду создания таблицы (желательно изdbms_metadata.get_ddl
, если она не была построена так, как вы думаете)? - person Alex Poole   schedule 04.06.2013select dbms_metadata.get_ddl('TABLE', 'YYY', 'XXX') from dual;
- person Jon Heller   schedule 05.06.2013