Tak, komunikat o błędzie jest nieco mylący, ale odnosi się do ostatniej utworzonej STATYCZNIE partycji (w oryginalnej tabeli DDL przed Oracle zaczął automatycznie tworzyć partycje.Myślę, że jedynym sposobem, aby tego uniknąć jest stworzenie sztucznej " MINVAL”partycja, która na pewno nie będzie używany, a następnie upuścić prawdziwe partycje powyżej tego
[Edytuj po wymianie uwag]
Zakładam ten sprawdzian reprodukuje problemu.
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'));
Kiedy to zrobię, mogę usunąć partycje p0, p1 i p2, ale otrzymasz swój błąd podczas próby p3 spadku, mimo że istnieje poza tym wygenerowana przez system partycja.
Jedyne obejście mogłem znaleźć było tymczasowo przedefiniować partycjonowanie tabel przez:
alter table test set interval();
a następnie upuść partycji P3. Następnie można przedefiniować partycjonowanie zgodnie z oryginalną specyfikacją przez:
alter table test set INTERVAL(NUMTODSINTERVAL(1, 'DAY'));
Dzięki nazwie partycji mogę powiedzieć, że ta została automatycznie utworzona i najdziwniejsze jest to, że udało mi się usunąć statycznie utworzone partycje przed tą. W każdym razie chciałem wypróbować twoją sugestię i dostałem ten błąd: zmień tabelę TABELA1 dodaj test partycji WARTA MNIEJ NIŻ ('07 -JUL-09 11.59.00.000000000 PM '); BŁĄD na linii 1: ORA-14760: DODAJ CZĘŚĆ nie jest dozwolona na obiektach podzielonych na przedziały Jakieś pomysły? Dzięki, PJ –
Przepraszam, zapomniałem podziękować :) –
Hmmm ... Wpadłem na twój problem i był to problem pozycjonowania STATIC vs DYNAMIC w moim przypadku. Kiedy wspomniałem partycję MINVAL, myślałem o ponownym utworzeniu tabeli z tą pojedynczą partycją (i zdefiniowanym partycjonowaniem przedziałowym), a następnie ponownym wstawieniem danych - czy jest to możliwe w twojej sytuacji? – dpbradley