Oracle switch partitions

0

Cześć,

Potrzebuje w Oracle przenieść zawartość jednej tabeli do drugiej, duże znaczenie ma tutaj wydajność.

W MS SQL robiłem to w ten sposób

ALTER TABLE  dbo.[TABLE] SWITCH TO temp.[TABLE]

W Oracle wydaje się nieco bardziej skomplikowane, w dodatku chcę to zrobić w procedurze i widzę że polecenie alter jest zblokowane chociaż tutaj czytałem, że da się to zrobić przez dynamiczny SQL

Znalazłem taki fragment

ALTER TABLE CALL
  EXCHANGE PARTITION call_partition WITH TABLE call_temp
  INCLUDING INDEXES
  WITHOUT VALIDATION;

Natomiast u mnie w Tabelach jeśli wejdę we właściwości i zakładkę "Partitions" to jest pusto, czy muszę dodać partycję?

0

Natomiast u mnie w Tabelach jeśli wejdę we właściwości i zakładkę "Partitions" to jest pusto, czy muszę dodać partycję?

Oznacza to, że Twoja tabela nie jest partycjonowana. W zależności od rodzaju systemu masz różne opcje przerobienia tabeli na partycjonowaną.
Sprawdź np. https://oracle-base.com/articles/misc/partitioning-an-existing-table

0

a nie możesz zmienić nazwy tabeli po prostu

alter table
   table_name
rename to
   new_table_name;

z tego co czytałem to właśnie coś takiego robi mssqlowy SWITCH TO a jak potrzebujesz mieć "starą" tabelę pustą po tej operacji to ją stwórz.

0

Możesz spróbować CTAS:

create table foo2 as select * from foo f;

Jeśli tabela jest spora i masz możliwość puszczenia na kilku procesach:

create table foo2 as select /*+ FULL(f) PARALLEL(f, ilosc_procesow) */ from foo f; 

Jeśli jest tabelą IOT (index organized):

create table foo2 as select /*+ FULL(f) PARALLEL_INDEX(f, ilosc_procesow) */ from foo f; 
0

Poszedłem drogą utworzenia partycji i wtedy exchange partition, ale nie rozumiem jednej rzeczy. Dlaczego jedna tabela ma być partycjonowana a druga nie :)

0

to może napisz co chcesz uzyskać.

0

Chcę zrobić procedurę która możliwie jak najszybciej przenosi całe dane z jednej tabeli do drugiej (struktura tabel identyczna)

The procedure MOVE performs the following steps:
  - move from TARGET_TABLE to _EMP
  - move from _NEW to TARGET_TABLE
  - truncate _EMP table
0
porschelukas napisał(a):

Chcę zrobić procedurę która możliwie jak najszybciej przenosi całe dane z jednej tabeli do drugiej (struktura tabel identyczna)

The procedure MOVE performs the following steps:
  - move from TARGET_TABLE to _EMP
  - move from _NEW to TARGET_TABLE
  - truncate _EMP table

To exchange partitions będzie najszybsze, z tego względu, że zamieniasz segment tabeli źródłowej z segmentem partycji, więc jest to zmiana metadanych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1