Skip to Main Content

 

Auswahl  

Umbennen von Oracle intervall partitionierten Tabellen (Nach Datum) 

Oracle
DBA:SQL
RDBMS 18.1:RDBMS 19.3:RDBMS 21.1
14.06.21 (MP)
04.07.23(MP)
partitionierte Tabelle, Umbennen

Passende Schulungen zum Thema

Wenn man eine range intervall partitionierte Tabelle anlegt, vergibt Oracle nicht sehr besonders sprechende Namen.
So heißen Partitionen schon mal SYS_P140, SYS_P141, ...
Dass muss aber nicht so bleiben, sie können natürlich jede Partitiion umbenennen mittels:
 

ALTER TABLE <owner>.<table> RENAME PARTITION <partionsname> TO <neuer_name>;


Was aber für 300 Partitionen sehr mühsam ist. warum also nicht das ganze etwas automatisieren?
Die Informationen, welche Partition welchen Bereich abdeckt steht in der Spalte high_value der View USER_TAB_PARTITIONS.
Wenn die Tabelle nicht Ihnen gehört, Sie aber Rechte darauf besitzen, können Sie in ALL_TAB_PARTITIONS nachsehen.

Nur ist das Problem, das es sich bei dieser Spalte um eine Long Spalte handelt, die nicht normal gefiltert werden kann. Deswegen gehen wir einen kleinen Umweg via XML
um aus der Tabelle einen Teil herausschneiden zu können. Wir haben uns in diesem Beispiel auf Range Partitionierung nach dem Datum konzentriert, was in der Praxis wohl am häufigsten vorkommt.
Es ist auch leicht auf andere Range Datentypen anpassbar.
 

WITH tab as (select 'TRANS_PART' as name FROM dual)
SELECT 'ALTER TABLE '||tab_name||' RENAME PARTITION '||partition_name||' TO '||tab_name||'_'||replace(substr(high_value,11,10),'-','_') ||';'
from (
  SELECT tab.name as tab_name,PARTITION_NAME,
    extractvalue
      ( dbms_xmlgen.getxmltype
        ( 'select high_value
           from USER_TAB_PARTITIONS where table_name = ''' || t.table_name || ''' and PARTITION_NAME = ''' || t.PARTITION_NAME || ''''),
        '//text()' ) as high_value
  FROM tab,USER_TAB_PARTITIONS t
  WHERE TABLE_NAME = tab.name);


Diese Ausgabe erzeugt nun die SQL Befehle, die Sie dann nur noch ausführen müssen.

PS: Wenn Sie Beratung zum Thema Oracle Partitionierung, melden Sie sich doch einfach bei uns. Wir bieten Schulungen und Consulting zu vielen Oracle Bereichen...