Я столкнулся с ORA-14097 при обмене разделами. Может ли кто-нибудь поделиться со мной светом?
У меня есть следующая таблица source_tbl (неразделенная), и я намереваюсь разделить ее с помощью столбца VALID_PERIOD_END.
CREATE TABLE source_tbl
( INVOICE_ID NUMBER(15,0) NOT NULL ENABLE,
LATEST_FLAG_NAME VARCHAR2(3000),
STD_HASH **RAW**(1000),
VALID_PERIOD_START TIMESTAMP (6),
VALID_PERIOD_END **TIMESTAMP** (6),
OVERSEAS NUMBER,
.. <another 20 number columns)
VIP_NO NUMBER
) partition by range(VALID_PERIOD_END)
nologging;
Теперь в этой таблице 5 миллионов строк, и я хочу разбить ее на VALID_PERIOD_END, чтобы, если это «9999-12-31 23:59:59» (текущий), он находился в одном разделе, а остальные в другом разделе.
Я создал вторую таблицу с именем TEMP_tbl.
CREATE TABLE TEMP_tbl
( INVOICE_ID NUMBER(15,0) NOT NULL ENABLE,
LATEST_FLAG_NAME VARCHAR2(3000),
STD_HASH **RAW**(1000),
VALID_PERIOD_START TIMESTAMP (6),
VALID_PERIOD_END **TIMESTAMP** (6),
OVERSEAS NUMBER,
.. <another 20 number columns)
VIP_NO NUMBER
)partition by range(VALID_PERIOD_END)
(partition p1 values less than(maxvalue)) nologging;
TEMP_tbl имеет точно такую же структуру данных, что и source_tbl, поскольку сценарий был запущен с использованием dbms_metadata.get_ddl.
Я выполнил сбор статуса таблицы без каких-либо ошибок
EXEC DBMS_STATS.gather_table_stats(USER, upper('source_tbl'), cascade => TRUE);
Однако, когда я пытаюсь выполнить следующий оператор раздела обмена, у меня возникает ошибка выше
alter table TEMP_tbl
exchange partition p1
with table source_tbl
without validation
update global indexes
;
Я проверил user_tab_cols и подтверждаю, что в source_tbl нет скрытого столбца. Будет ли это из-за необработанного столбца из моей таблицы?
Заранее спасибо!
LONG RAW
, но ничего оRAW
или об обмене разделами с этими типами данных. - person Del   schedule 28.07.2021dbms_redefinition
для добавить секционирование к существующей таблице. Он также сам обрабатывает необходимые зависимости. - person astentx   schedule 28.07.2021