Oracle / OWB: die Angabe der partition, die für das EINFÜGEN zur Laufzeit

(Hintergrund: wir sind ein data-warehouse aufgebaut mit Oracle Warehouse Builder. Vor kurzem haben wir begonnen, immer eine Menge von "ORA-02049: distributed transaction timeout beim warten auf lock" Fehler. Der Grund dafür ist, dass wir mit mehreren ETL-jobs parallel, und jeder dieser jobs hat eine INSERT /*+APPEND PARALLEL*/ in unser staging-Tabelle. Diese staging Tabelle partitioniert ist, die durch die Quellsystem ID. )

Ich würde gerne wissen, ob es möglich ist, spezifizieren Sie die Volume-Taste zum EINFÜGEN zur Laufzeit.
Angenommen ich habe eine Tabelle

create table tmp_loading_table (
  etl_source_system_fk number not null enable,
  object_id number not null enable,
  object_name varchar2(30) not null enable
)
  PARTITION BY LIST ("ETL_SOURCE_SYSTEM_FK") 
 (PARTITION "ESS1"  VALUES (1), 
 PARTITION "ESS2"  VALUES (2)  
);

dann kann ich einfügen, in eine bestimmte partition unter Verwendung

insert  /*+ APPEND PARALLEL("TMP_LOADING_TABLE") */     
into tmp_loading_table partition(ESS1) (
  etl_source_system_fk, object_id, object_name)
(select 1 etl_source_system_fk, object_id, object_name from user_objects);

aber das erfordert mir zu hard-code, dem Namen der partition.

Da unsere OWB-mappings sind allgemeiner Natur (Sie bekommen die Quellsystem-ID als parameter), würde ich gerne die partition Namen zur Laufzeit, so etwas wie

insert  /*+ APPEND PARALLEL("TMP_LOADING_TABLE") */     
into tmp_loading_table partition(:partition_name) (
  etl_source_system_fk, object_id, object_name)
(select 1 etl_source_system_fk, object_id, object_name from user_objects);

Ist das möglich? Wenn nicht, gibt es eine andere Methode, dies zu erreichen mit Oracle Warehouse Builder?

InformationsquelleAutor Frank Schmitt | 2013-10-16

Schreibe einen Kommentar