Soweit ich weiß, kann eine vorhandene Tabelle nicht partitioniert werden. Sie müssen es neu erstellen. Es gibt ein Oracle-Paket namens dbms_redefinition
für nur dieses Szenario (siehe https://docs.oracle.com/database/121/ARPLS/d_redefi.htm für Details), aber ich werde ein sehr einfaches Beispiel ohne dieses Paket bereitstellen.
Stellen Sie sich das folgende nicht-partitionierten Tabelle haben:
create table T_TABLE
(
pkey NUMBER not null,
t_data VARCHAR2(250) not null,
partitionkey NUMBER not null
);
Wenn Sie diese Tabelle partitionieren möchten, wäre der erste Schritt, um die Tabelle zu benennen:
alter table t_table rename to old_table;
Erstellen Sie dann die Neue Tabelle
create table T_TABLE
(
pkey NUMBER not null,
t_data VARCHAR2(250) not null,
partitionkey NUMBER not null
)
partition by system
(
partition p1 tablespace users,
partition p2 tablespace users,
partition p3 tablespace users
);
Jetzt können Sie Ihre Tabellenzeilen aus der alten Tabelle in die einfügen neue Tabelle. Ihre Anwendung/sql muss dem Server mitteilen, in welche Partition er eingefügt werden soll. zum Beispiel wie folgt aus:
insert into t_table partition (p1) select * from old_table where partitionkey = 1;
insert into t_table partition (p2) select * from old_table where partitionkey = 2;
insert into t_table partition (p3) select * from old_table where partitionkey = 3;
commit;
Jetzt können Sie Ihre alten Tisch fallen.
drop table old_table;
Was ist eine "Systempartition"? –
Das ist eine Oracle Database-Methode der Datenpartitionierung, bei der die Anwendungslogik die Partitionsstruktur steuert. –
Siehe [this] (https://docs.oracle.com/cd/E11882_01/server.112/e25523/partition.htm#BABFCBHC) und [dies] (https://docs.oracle.com/cd/E11882_01 /server.112/e41084/statements_7002.htm#BABJBDCC) ... aber ich bin mir nicht sicher, ob das wirklich hilft zu erklären, was das OP hier machen will. –