|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Всем привет. Oracle 19, пытаюсь сделать поле с типом varchar2 (8000) но получаю ошибку, которая предлагает опять же использовать varchar2 :) авторORA-00910: заданная длина слишком велика для этого типа данных 00910. 00000 - "specified length too long for its datatype" *Cause: for datatypes CHAR and RAW, the length specified was > 2000; otherwise, the length specified was > 4000. *Action: use a shorter length or switch to a datatype permitting a longer length such as a VARCHAR2, LONG CHAR, or LONG RAW и тип поля LONG CHAR (8000) тоже не воспринимает ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR тоже не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:10 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
ведь в Оракле 19 максимальная длина для VARCHAR2(32767) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:26 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
RTFM MAX_STRING_SIZE ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:49 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Ольга Семенова ведь в Оракле 19 максимальная длина для VARCHAR2(32767) Если открытъ документацию, а именно Datatype Limits то можно прочесть следующее: Maximum size: 4000 bytes, or 32767 bytes if the MAX_STRING_SIZE initialization parameter is set to EXTENDED. See Also: "MAX_STRING_SIZE" initialization parameter for additional details И обязательно прочтите о параметре MAX_STRING_SIZE ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:54 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Ольга Семенова ведь в Оракле 19 максимальная длина для VARCHAR2(32767) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 18:59 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Правильный Вася Подозреваю, вы путаете SQL и PL/SQL datatypes. Они, вообще говоря, разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 19:07 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Elic, я-то в теме. Но при первичном знакомстве с Oracle я споткнулся именно на этом, поэтому поделился опытом, поскольку похоже, что ТС тоже только знакомится. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 19:22 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
И обязательно прочтите о параметре MAX_STRING_SIZE и туда глянь, так, на всякий) you cannot change the value of MAX_STRING_SIZE from EXTENDED to STANDARD. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 19:51 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Правильный Вася Ольга Семенова ведь в Оракле 19 максимальная длина для VARCHAR2(32767) т.е. изменение в EXTENDED не поможет ? ведь мне нужно именно для SQL (DDL) и есть ли альтернатива увеличения размера текстового поля до 8000 символов и чтобы свойства поля и применяемые к нему функции (substr, length, instr) остались как и для текущего типа varchar2. Чтобы не поломать прикладной функционал, который работает с этим текстовым полем ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 09:48 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
т.е. изменение в EXTENDED не поможет ? ведь мне нужно именно для SQL (DDL) Поможет. Вам уже подсказали, что это необратимое изменение, поэтому проверьте сначала на тестовой БД. И, насколько я помню свое мимолетное знакомство с этим нововведением, кажется, в 12-й версии, это фактически скрытый CLOB, так что контролируйте рост LOB-сегментов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 10:45 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
dmdmdm т.е. изменение в EXTENDED не поможет ? ведь мне нужно именно для SQL (DDL) RTFMBy setting MAX_STRING_SIZE = EXTENDED, users are taking an explicit action that could introduce application incompatibility in their database. Applications that do not want to use the expanded data types can be rewritten for compatibility with either setting; for example, these applications could use explicit CASTs to fix the length of VARCHAR2 expressions during CREATE TABLE AS SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 11:04 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Ольга Семенова и есть ли альтернатива увеличения размера текстового поля до 8000 символов и чтобы свойства поля и применяемые к нему функции (substr, length, instr) остались как и для текущего типа varchar2. Чтобы не поломать прикладной функционал, который работает с этим текстовым полем 1. Ограничение длины текстового поля не в символах, а в байтах. Поэтому количество символов, которые поместятся в 4000 байтов (или 32767 байтов) зависит от используемого CHARSET и от самих символов (если чарсет с переменной длиной символов). 2. Перечисленные функции работают с разными типами данных: string can be any of the data types CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. Подробности и ограничения - в справке по конкретной функции. Насчёт альтернативы и целостности прикладного функционала. Не знаю, почему появилась идея расширения полей. Но для полей такой длины обычно характерна внутренняя неструктурированность (типа большого примечания) или же наоборот - жесткая структура (откуда и применение упомянутых выше функций). Поэтому рекомендую для начала разобраться, действительно ли нужно расширять поле. Если внутренней структуры нет, лучше добавить ещё N полей типа "примечание2", "примечание3", чем всё тулить в одно поле. Если есть структура и она просто выросла, до имеет смысл преобразовать поле в CLOB. Такие поля (со структурой) обычно пользователю на прямое редактирование не даются, а исправить функционал в коде выгоднее, чем пытаться обойтись "малой кровью". Такие попытки обычно в перспективе обходятся дороже. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 17:15 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Правильный Вася Ольга Семенова и есть ли альтернатива увеличения размера текстового поля до 8000 символов и чтобы свойства поля и применяемые к нему функции (substr, length, instr) остались как и для текущего типа varchar2. Чтобы не поломать прикладной функционал, который работает с этим текстовым полем 1. Ограничение длины текстового поля не в символах, а в байтах. Поэтому количество символов, которые поместятся в 4000 байтов (или 32767 байтов) зависит от используемого CHARSET и от самих символов (если чарсет с переменной длиной символов). 2. Перечисленные функции работают с разными типами данных: string can be any of the data types CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. Насчёт альтернативы и целостности прикладного функционала. Не знаю, почему появилась идея расширения полей. Но для полей такой длины обычно характерна внутренняя неструктурированность (типа большого примечания) или же наоборот - жесткая структура (откуда и применение упомянутых выше функций). Поэтому рекомендую для начала разобраться, действительно ли нужно расширять поле. Если внутренней структуры нет, лучше добавить ещё N полей типа "примечание2", "примечание3", чем всё тулить в одно поле. Если есть структура и она просто выросла, до имеет смысл преобразовать поле в CLOB. Такие поля (со структурой) обычно пользователю на прямое редактирование не даются, а исправить функционал в коде выгоднее, чем пытаться обойтись "малой кровью". Такие попытки обычно в перспективе обходятся дороже. в настоящее время полях с varchar2 размерностью 4000 хранится описание действий пользователя (сделанные автоматически через триггеры, что-то вроде "пользователь Иванов вошел в систему...") или длинные описания сделанные/добавленные самим пользователем на уровне прикладного приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 09:49 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Ольга Семенова в настоящее время полях с varchar2 размерностью 4000 хранится описание действий пользователя (сделанные автоматически через триггеры, что-то вроде "пользователь Иванов вошел в систему...") или длинные описания сделанные/добавленные самим пользователем на уровне прикладного приложения У нас это делается просто через записи в таблицу... с указанием времени, и другими параметрами... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 13:17 |
|
Можно ли на Oracle 19 сделать текстовое поле длиной более 4000
|
|||
---|---|---|---|
#18+
Ольга Семенова хранится описание действий пользователя (сделанные автоматически через триггеры, что-то вроде "пользователь Иванов вошел в систему...") или длинные описания сделанные/добавленные самим пользователем на уровне прикладного приложения Самый бредовыйтяжёлый вариант - структурированные и неструктурированные данные в одном поле. Настоятельно рекомендую их разнести. Пользовательское описание (это что вообще такое? - отчёт пользователя о проделанной работе?) спокойно можно в CLOB. А триггерные порождения (если почему-то нет возможности использовать вместо них встроенный аудит) - в отдельную таблицу, можно тоже в CLOB. Лучше в отдельный TABLESPACE на отдельный диск, ибо быстро пухнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2021, 20:53 |
|
|
start [/forum/topic.php?fid=52&msg=40063148&tid=1880275]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 153ms |
0 / 0 |