SAP BI2025 DSD Oracle-_PostgreSQL _leviimisplaan.md 7.3 KB


opencode-session: ses_19d153875ffe1FRkiODSAHE8t4 opencode-model: deepseek-v4-pro opencode-agent: build opencode-cost: 0.14581635 opencode-created: 2026-05-26 09:13:34

opencode-updated: 2026-05-26 10:07:18

SAP BI2025 DSD Oracle->PostgreSQL üleviimisplaan

User

Koosta üldplaan SAP BI2025 DSD andmelaadimiste osa üleviimiseks oracle andmebaasidelt postgre andmebaasidele. Muutmisele lähevad DSD-st eksporditud job ETL fail. Muudame ainult lõpptabeleid oracle -> postgre ja ka neid vajetabeleid mis asuvad job sees. Palun koosta meie tegevuse jaoks üldplaan. Kui jäi midagi arusaamatuks, siis küsi enne kui hakkame build režiimis konkreetseid tegevusi tegema. Kuna testimine toimub teises arvutis, siis püüame jagada meie plaani loogilisteks osadeks. Palun tee selle projekti jaoks eraldi kaust SAP kataloogi ~/Dropbox/Project alla.

Tööruumis on praegu kaustad .venv/, .vscode/ ja liiklussagedus/. Enne kui koostan põhjaliku üldplaani, vajan täpsustusi:

  1. DSD job failide formaat — mis faililaiendiga on eksporditud job-failid? Kas need on XML-põhised (SAP Data Services/BODS), JSON, või midagi muud? Kas on võimalik näha ühte näidisfaili, et mõista struktuuri?

  2. "Vajetabeleid" — kas need on nn value tables ehk väikesed viitetabelid/lookup tabelid, mis asuvad otse job-faili sees, või on need eraldi konfiguratsioonifailid? Mis nende täpne roll on ETL protsessis?

  3. Maht ja ulatus — kui palju job-faile on vaja üle viia? Kas me räägime kümnest, sajast või tuhandest failist?

  4. SQL muudatused — kas lisaks tabelinimede vahetusele (oracle_schema -> postgre_schema) on vaja muuta ka Oracle-spetsiifilist SQL süntaksit (nt JOIN süntaks, TRUNC, kuupäevafunktsioonid, PL/SQL jms)?

  5. Skeemide vastendus — kas on olemas Oracle -> PostgreSQL tabelite ja skeemide vastendustabel? Kas tabelinimed jäävad samaks või muutuvad?

  6. Testimiskeskkond — kuidas toimub testimine teises arvutis? Kas on olemas Git repositoorium, kuhu muudatused üles laadida? Kuidas testarvuti neid faile kätte saab?

Palun vasta nendele küsimustele, siis koostan konkreetse samm-sammult plaani. Kausta SAP loomise ja failide muutmisega alustame siis, kui oleme build režiimis.

Faili struktuuri analüüs

Fail: export_HK.atl — SAP Data Services (BODS) ekspordifail, 1928 rida, versioon 14.4.

Andmebaasid (9 tk)

Nimi Tüüp Oracle'i versioon Muuta?
Andmeladu_PRIA Oracle 19c Jah → PostgreSQL
LADU_HK Oracle 12c Jah → PostgreSQL
PRIA_ALLIKAD Oracle 19c Jah (allikas, vajetabel)
PRIA_ARHIIVTEST Oracle 19c Jah (allikas, vajetabel)
VTM Oracle 19c Jah (allikas, vajetabel)
MATS_baasmoodul ODBC Ei
MATS_kliendimoodul ODBC Ei
MATS_sisestusmoodul ODBC Ei
MATS_vtm ODBC Ei

Dataflow'd (5 tk)

Dataflow Loeb allikatest Laeb sihtkohta
AB_kontr MATS_* (ODBC) + PRIA_ALLIKAD + PRIA_ARHIIVTEST + VTM Andmeladu_PRIA
HK_objekt MATS_* (ODBC) LADU_HK
HK_objekti_hind MATS_* (ODBC) LADU_HK
HK_objekti_kontaktid MATS_* (ODBC) LADU_HK
HK_obj_hinna_valideerimine MATS_* (ODBC) LADU_HK

Ülevaade failist export_HK.atl

Fail sisaldab 9 andmebaasi, 5 dataflow'd, 2 plaani (plan) ja 1 sessiooni (job). Oracle viiteid on kahes kohas:

Oracle komponent Asukoht Mida muuta
5 CREATE DATABASE DATASTORE read 5–404 database_type=OraclePostgreSQL
5 LOAD TABLE LDRConfiguration dataflow'de sees database_type="Oracle"PostgreSQL

ODBC baasid (MATS_*) jäävad puutumata. READ TABLE viited Oracle baasidest (PRIA_ALLIKAD, PRIA_ARHIIVTEST, VTM) kasutavad lihtsalt datastore nime, mis jääb samaks.


Muudatuste detailplaan

1. Osa — Datastore definitsioonid (5 tk)

Iga Oracle datastore konverteerimine PostgreSQL native vastu:

Enne Pärast
<database_type>Oracle</database_type> <database_type>PostgreSQL</database_type>
<Oracle_default_number_precision> / <Oracle_default_number_scale> Eemaldada
<oracle_host_string>PRIA_DWH</oracle_host_string> <postgresql_host>???</postgresql_host>
<oracle_version>Oracle 19c</oracle_version> <postgresql_version>???</postgresql_version>

2. Osa — LOAD TABLE laadurite seadistused (5 tk)

Iga ldr_configurations XML-is:

Enne Pärast
database_type="Oracle" database_type="PostgreSQL"
database_version="Oracle 19c" database_version="PostgreSQL 16"
Kõik <oracle_*> elemendid Eemaldada

3. Osa — Väljund

Genereerin uue faili export_HK_pg.atl originaali kõrvale.


Enne kui alustan, vajan PostgreSQL ühenduste andmeid iga 5 Oracle baasi kohta:

  1. Andmeladu_PRIA → PostgreSQL host / port / db nimi / kasutaja / versioon?
  2. LADU_HK → PostgreSQL host / port / db nimi / kasutaja / versioon?
  3. PRIA_ALLIKAD → PostgreSQL host / port / db nimi / kasutaja / versioon?
  4. PRIA_ARHIIVTEST → PostgreSQL host / port / db nimi / kasutaja / versioon?
  5. VTM → PostgreSQL host / port / db nimi / kasutaja / versioon?

Kui täpsed ühendusandmed pole veel teada, võin panna placeholder väärtused (nt PG_HOST_Andmeladu_PRIA), mida saate hiljem asendada. Kumb variant sobib?

Tulemus

export_HK_pg.atl — uus fail, ainult LADU_HK sihtbaas konverteeritud:

Muudatus Mida muudeti
LADU_HK datastore database_type=OraclePostgreSQL; eemaldatud Oracle_default_*; lisatud postgresql_host/port/database/version placeholderitega
4 LOAD TABLE laadurit LDRConfiguration database_type="Oracle"PostgreSQL; eemaldatud kõik oracle_* elemendid
Andmeladu_PRIA Ei muudetud — jäi Oracle peale
Lähtebaasid (PRIA_ALLIKAD, PRIAARHIIVTEST, VTM, MATS*) Ei muudetud

Placeholder väärtused (LADU_HK jaoks):

<postgresql_host>PG_HOST_LADU_HK</postgresql_host>
<postgresql_port>5432</postgresql_port>
<postgresql_database>PG_DB_LADU_HK</postgresql_database>
<postgresql_version>PostgreSQL 16</postgresql_version>

export_HK_pg.atl — muudatused

Element Enne Pärast
Job nimi MATS_hinnakataloog MATS_hinnakataloog_PG
LADU_HK datastore Oracle PostgreSQL (placeholderitega)
4 LADU_HK laadurit Oracle LDRConfiguration PostgreSQL LDRConfiguration
Andmeladu_PRIA + lähtebaasid Oracle Puutumata

ladu_hk_ddl.sql — PostgreSQL skeem

Loodud 4 tabelit skeemis LADU_HK:

Tabel Indekseid Trigger
HK_OBJEKT 4 (ID, klient_id, esindaja_id, unikaalne_kood) muutmis_aeg BEFORE UPDATE
HK_OBJEKTI_HIND 3 (ID, objekti_id, kehtivus) muutmis_aeg BEFORE UPDATE
HK_OBJEKTI_KONTAKT 1 (objekti_id) — (pole muutmis_aeg veergu)
HK_OBJ_HINNA_VALIDEERIMINE 2 (hinna_id, staatus) muutmis_aeg BEFORE UPDATE

Andmetüübid on teisendatud: DECIMAL(19,0)BIGINT, DECIMAL(p,s)NUMERIC(p,s), DATETIME(n)TIMESTAMP(n). SQL fail sisaldab ka kommentaare ja õiguste näidist.