Невозможно удалить самый старый раздел таблицы

Я должен был бы не согласиться, UML используется повсеместно - где угодно, проект в сфере ИТ разрабатывается, UML обычно будет там.

Теперь, используется ли это хорошо , другой вопрос.

, Поскольку Stu сказал, я нахожу, что оба Варианта использования (наряду с описаниями варианта использования) и схемы действия являются самыми полезными с точки зрения разработчика.

Диаграмма классов может быть очень полезной при попытке показать отношения, а также атрибуты объектов, такие как персистентность. Когда дело доходит до добавления когда-либо единственного атрибута или свойства они обычно - излишество, тем более, что они часто становятся устаревшими быстро, как только код записан.

Одной из самых больших проблем с UML является объем работы, требуемый усовершенствовать его, как только код сгенерирован, поскольку существует немного инструментов, которые могут повторно спроектировать UML от кода и немногих все еще, которые делают это хорошо.

6
задан skaffman 29 August 2011 в 13:03
поделиться

1 ответ

Да, сообщение об ошибке несколько вводит в заблуждение, но оно относится к последнему СТАТИЧЕСКИ созданному разделу (в вашей исходной таблице DDL до того, как Oracle начал автоматически создавать разделы. Я думаю, что единственный способ избежать этого состоит в том, чтобы создать искусственный раздел «MINVAL», который, как вы уверены, никогда не будет использоваться, а затем удалить настоящие разделы над ним.

[Редактировать после обмена комментариями]

Я предполагаю, что этот тестовый пример воспроизводит вашу проблему:

CREATE TABLE test 
    ( t_time        DATE
    )
  PARTITION BY RANGE (t_time)
  INTERVAL(NUMTODSINTERVAL(1, 'DAY'))
    ( PARTITION p0 VALUES LESS THAN (TO_DATE('09-1-2009', 'MM-DD-YYYY')),
      PARTITION p1 VALUES LESS THAN (TO_DATE('09-2-2009', 'MM-DD-YYYY')),
      PARTITION p2 VALUES LESS THAN (TO_DATE('09-3-2009', 'MM-DD-YYYY')),
      PARTITION p3 VALUES LESS THAN (TO_DATE('09-4-2009', 'MM-DD-YYYY')) 
);
insert into test values(TO_DATE('08-29-2009', 'MM-DD-YYYY'));
insert into test values(TO_DATE('09-1-2009', 'MM-DD-YYYY'));
insert into test values(TO_DATE('09-3-2009', 'MM-DD-YYYY'));
insert into test values(TO_DATE('09-10-2009', 'MM-DD-YYYY'));

Когда я делаю это, я могу удалить разделы p0, p1 и p2, но получаю вашу ошибку при попытке отбросить p3, даже если кроме этого существует сгенерированный системой раздел.

Единственный обходной путь, который я смог найти, - это временно переопределить разделение таблицы с помощью:

alter table test set interval ();

, а затем удалить раздел p3. Затем вы можете переопределить разделение в соответствии с исходной спецификацией:

alter table test set INTERVAL(NUMTODSINTERVAL(1, 'DAY'));
4
ответ дан 17 December 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: