Wpis z mikrobloga

Komunikacja Postgres - Oracle - Oracle
Miał ktoś z Was kiedyś podobny problem?

Mam trzy bazy:
1. Oracle (główna, produkcja)
2. Oracle (zwykła robiąca za gateway)
3. Postgres (developerska)

1. W bazie produkcyjnej są dwa schematy:
a) Schemat aplikacyjny z utworzonym tam widokiem
b) Schemat użytkownika na potrzeby dblinka - użytkownik ten ma możliwość robienia select na powyższym widoku

2. W bazie "gateway" jest utworzony jeden schemat:
a) Schemat ten zawiera synonim, który łącząc się przez dblinka (poświadczeniami użytkownika 1b) odwołuje się do widoku z 1a

3. W bazie postgresowej programiści na potrzeby tworzonej aplikacji robią sobie foreign table, która odwołuje się do synonimu w schemacie 2a (korzystają z jego poświadczeń)

O ile będąc połączonym bezpośrednio do gatewaya i robiąc select na tym synonimie to dostaję odpowiedź z wynikami, to o tyle osoby z postgresa pytając się o ten sam synonim dostają błąd


Natomiast gdy w "gateway" w schemacie 2a zamiast synonimu utworzę widok zmaterializowany, to ludzie z postgresa wyświetlają wszystko prawidłowo.

Czyli wychodzi na to, że działa wtedy, gdy dane są fizycznie na gatewayu - no ale tak nie chcemy robić, bo po co marnować miejsce tym samym..

Orientujecie się może w czym może być problem?

Jak niezrozumiale to napisałem to postaram się to rozrysować :v
#bazydanych #postgresql #oracle
  • 1
  • Odpowiedz
@DinapeS: W sumie nie spotkałem się nigdy z tym. Sam DB LINK chyba działa poprawnie skoro zapytanie z bazy "gateway" działa.
Czy w 1a) masz w danych jakieś daty? Jeśli tak to spróbuj napisać select todate(kolumnazdatą, maska) i zobaczyć czy wtedy zwraca OK.
Mam podejrzenie, że postgresql i oracle mają inne formaty daty.
Oczywiście to
date() to funkcja oracle, powinieneś spróbować analogicznej w postgresql.
  • Odpowiedz