kb:pg:priprema_za_migraciju

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
kb:pg:priprema_za_migraciju [2018/02/22 12:41] – [Priprema JET baze] milanokb:pg:priprema_za_migraciju [2019/12/11 11:08] – [Priprema drajvera] nessa
Line 1: Line 1:
 ====== Priprema za migraciju na Postgres ====== ====== Priprema za migraciju na Postgres ======
  
-===== Instalacija Postgres baze podataka na server ===== +  * [[:kb:pg:postgres_instalacija_linux|Instalacija na Linux operativnom sistemu]] 
- +  * [[:kb:pg:postgres_instalacija_windows|Instalacija na Windows operativnom sistemu]]
-Prilikom instalacije PostreSQL baze podataka obratiti pažnji na sledeće: +
- +
-  * bazu podataka ne smeštati u Program Files lokaciju, već u zaseban direktorijum (nikako u postojeći Balans dir.) na disku na kom ima dovoljno mesta i koji je pokriven bekapom. +
-  * prilikom instalacije biće zatraženo definisanje super-user lozinke za **postgres**  korisnika (sa svim ovlašćenjima) - ova lozinka ne sme da bude trivijalna, i zna je samo administrator servera +
-  * za korisnike Balansa otvariti tri usera: balans_admin, balans_user, balans_reports +
-  * nakon instalacije ne zaboraviti konfigurisanje Postgres servera za pristup iz mreže (podrazumevano, samo lokalni računar mu može pristupiti), editovanjem **pg_hba**  fajla. +
-  * ne zaboraviti i otvaranje TCP/IP porta za pristup bazi u firewall-u servera+
  
 ==== Napomena kod zadavanja pristupnih lozinki bazi podataka ==== ==== Napomena kod zadavanja pristupnih lozinki bazi podataka ====
Line 21: Line 14:
   * Migracija podataka nije invazivna za Jet baze, ali nije dobro raditi na aktivnim bazama jer može doći do promene podataka u toku izvoza u SQL   * Migracija podataka nije invazivna za Jet baze, ali nije dobro raditi na aktivnim bazama jer može doći do promene podataka u toku izvoza u SQL
   * Prvo se migriraju arhive, pa tek onda tekuća baza   * Prvo se migriraju arhive, pa tek onda tekuća baza
 +
 +===== Priprema drajvera =====
 +
 +Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka ili na kome će raditi Balans 4 treba instalirati 32bitni PostgreSQL ODBC driver.\\
 +\\
 +Opciono:\\
 +Kroz //Administrative tools –> ODBC data sources (32 bit)// treba napraviti //System DSN// koristeći unicode PostgreSQL ODBC driver, čiji naziv može biti proizvoljan (npr. **PostgreSQL35W**) i podesiti mu svojstva u skladu sa {{:kb:pg:pgs_dsn.png?linkonly|ovim primerom.}} \\
 +\\
 +{{:bal:znanje_32.png?nolink&32x32  }}Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: [[http://psqlodbc.projects.pgfoundry.org/docs/config.html|http://psqlodbc.projects.pgfoundry.org/docs/config.html]]
 +
 +
 +===== Opcije drajvera koje utiču na Crystal Reports izveštaje =====
 +
 +|**Use Declare/Fetch** |Kada se DSN koristi za Crystal treba **uključiti** na mašinama gde se okida greška //"Out of memory while reading tuples"// kada je rezultat sa mnogo slogova, jer DSN pokuša da uvuče sve slogove iz rezultata pre nego što ga vrati Crystal-u. Kada se DSN koristi za Balans treba **isključiti** jer se okida greška na WITH jfrom ... iskazima.|
 +|**True is -1** |Treba **isključiti uvek** jer zbunjuje Crystal, a Balans radi u obe varijante.|
 +
 +{{:bal:ideja_32.png?nolink&32x32  }}Povezivanje Balansa na Postgres bazu može se izvesti i bez registrovanja **Postgres ODBC DSN** tako što se u korenu foldera sa bazama podataka (..\Balans\Data\) napravi fajl **PgODBC.txt** u kome se u //šifrovanom obliku// navedu osnovni parametri pristupa serveru.
 +
 +Primer parametara veze
 +
 +<code>
 +Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina
 +</code>
 +
 +Čitanje fajla **PgODBC.txt vrši** //BLRBasic.dll //i dodaje ostala svojstva (//UseDeclareFetch, BoolsAsChar, TrueIsMinus1 itd//). pre ostvarivanja veze sa Postgres bazom. Ostali moduli kojima treba direktna konekcija na Postgres bazu (npr. //BLRReports.dll//) mogu dobiti sadržaj fajla **PgODBC.txt **od objekta klase //BLRBasic.SyBal2// i po potrebi zadati ostala svojstva konekcije.
 +
 +\\
 +
 +
 +===== Pravljenje "linkova" između PGS shema/baza (imitacija linkova u JET bazama) =====
 +
 +U PostgreSQL-u ne postoje linkovi u smislu JET baza (pokazivači na tabele u drugim bazama) - umesto toga se koriste //[[https://wiki.postgresql.org/wiki/Foreign_data_wrappers|Foreign Data Wraperi//]]// , koji mogu spojiti baze sa istog ili različitih servera.
 +
 +==== Linkovanje na arhive u istoj bazi ====
 +
 +Za razliku od JET-a, gde su arhive bile zasebne baze podataka, u Postgresu su one samo //scheme//  unutar iste baze. Kako su u istoj bazi, nema potrebe za linkovanjem već im se pristupa navodjenjem imena sheme ispred imena baze. Na primer:
 +
 +<code>
 +SELECT * FROM "2015".Racuni
 +</code>
 +
 +<sup>*)</sup>   Ime šeme je uokvireno u znake navoda zato što počinje brojem, a ne slovom, kako je podrazumevano očekivano.
 +
 +Tako imamo da se umesto JET linka **Racuni2015**  može napraviti //pogled//  **Racuni2015**, iako bi najbolje bilo prepraviti takve upite da koriste //šeme//  umesto //pogleda//.
 +
 +==== Linkovanje na baze/arhive u drugim bazama ====
 +
 +Ako je JET link na bazu druge firme (npr. Firma 1 –> Firma 2) onda se koristi FDW ([[https://wiki.postgresql.org/wiki/Foreign_data_wrappers|foreign data wrapper]]) PGS ekstenzija.
 +
 +Skoro ceo posao je automatizovan iz QA i potrebno je uraditi sledeće:
 +
 +  - Uvesti sve baze (tekuće i prethodne godine) u Postgres bazu
 +  - Pokrenuti QA i spojiti se na JET bazu tekuće godine željene firme
 +  - Spojiti se i na PGS bazu tekuće godine željene firme (kroz //Postgres//  meni u okviru QA)
 +  - Otvoriti formu za vezivanje u QA
 +  - Kliknuti na tab "Link manager" da bi se učitali podaci o linkovima
 +  - Kliknuti na tab "JET > PostgreSQL" i na njemu dugme sa oznakom (i) da bi se proverilo koje "linkove" je moguće napraviti, a koje ne (zelene i crvene sličice u poslednjoj koloni grida)
 +  - Kliknuti na dugme sa PGS logom da bi se napravio skript za linkovanje koji treba odraditi iz pgAdmin aplikacije nad tekućom godinom (public shema) željene firme
 +
 +{{:kb:pg:pglinkovi.png?direct&700x531}}
 +
 +Ako se u neku od FDW tabela doda kolona ona se (verovatno) neće videti u upitima jer je nema u FDW definiciji koju treba ponovo napraviti ako je moguće jer će možda komanda DROP FOREIGN TABLE xxx okinuti grešku da se koristi u nekim upitima. Nisam isprobao.
 +
 +Napomena: JET linkovi na ne JET baze (npr. SQL Server) **ne mogu se preneti**  u PGS jer postojeća rešenja kao što je [[http://pgxn.org/dist/tds_fdw/|tds_fdw]] ne podržavaju upis u SQL Server tabelu. Zato je jednostavnije napraviti link iz SQL Servera na PGS server pomoću PGS ODBC driver-a [[https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/|www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/]]
 +
 ===== Priprema drajvera ===== ===== Priprema drajvera =====
  
-Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka ili na kome će raditi Balans 4 treba instalirati 32bitni PostgreSQL ODBC driver. \\  \\ Opciono: \\ Kroz //Administrative tools –> ODBC data sources (32 bit)//  treba napraviti //System DSN//, čiji naziv može biti proizvoljan (npr. **PostgreSQL35W**) i podesiti mu svojstva u skladu sa {{:kb:uputstva:postgres_odbc_driver.png?linkonly|ovim primerom.}}  \\  \\ {{:bal:znanje_32.png?nolink&32x32  }}Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: [[http://psqlodbc.projects.pgfoundry.org/docs/config.html|http://psqlodbc.projects.pgfoundry.org/docs/config.html]]+Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka ili na kome će raditi Balans 4 treba instalirati 32bitni PostgreSQL ODBC driver. Opciono: Kroz //Administrative tools –> ODBC data sources (32 bit)//  treba napraviti //System DSN//, čiji naziv može biti proizvoljan (npr. **PostgreSQL35W**) i podesiti mu svojstva u skladu sa {{:kb:uputstva:postgres_odbc_driver.png?linkonly|ovim primerom.}} {{:bal:znanje_32.png?nolink&32x32  }}Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: [[http://psqlodbc.projects.pgfoundry.org/docs/config.html|http://psqlodbc.projects.pgfoundry.org/docs/config.html]]
  
-=====   Opcije drajvera koje utiču na Crystal Reports izveštaje   =====+===== Opcije drajvera koje utiču na Crystal Reports izveštaje =====
  
 |**Use Declare/Fetch** |Treba uključiti na mašinama gde se okida greška //"Out of memory while reading tuples"// kada je rezultat sa mnogo slogova, jer DSN pokuša da uvuče sve slogove iz rezultata pre nego što ga vrati Crystal-u| |**Use Declare/Fetch** |Treba uključiti na mašinama gde se okida greška //"Out of memory while reading tuples"// kada je rezultat sa mnogo slogova, jer DSN pokuša da uvuče sve slogove iz rezultata pre nego što ga vrati Crystal-u|
Line 46: Line 104:
 ==== Linkovanje na arhive u istoj bazi ==== ==== Linkovanje na arhive u istoj bazi ====
  
-Za razliku od JET-a, gde su arhive bile zasebne baze podataka, u Postgresu su one samo //scheme//  unutar iste baze.  Kako su u istoj bazi, nema potrebe za linkovanjem već im se pristupa navodjenjem imena sheme ispred imena baze. Na primer:+Za razliku od JET-a, gde su arhive bile zasebne baze podataka, u Postgresu su one samo //scheme//  unutar iste baze. Kako su u istoj bazi, nema potrebe za linkovanjem već im se pristupa navodjenjem imena sheme ispred imena baze. Na primer:
  
 <code> <code>
Line 78: Line 136:
 [[https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/|www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/]] [[https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/|www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/]]
  
-===== Skrip unapređenja Balans baza na Postgresu =====+===== Skript unapređenja Balans baza na Postgresu =====
  
 <font inherit/inherit;;#FF0000;;inherit>**Posle prebačenih tabela, linkova i upita u PGS baze treba odraditi skriptove iz DBupdate4 foldera (PG_2xxxx.sql fajlovi)**</font> <font inherit/inherit;;#FF0000;;inherit>**Posle prebačenih tabela, linkova i upita u PGS baze treba odraditi skriptove iz DBupdate4 foldera (PG_2xxxx.sql fajlovi)**</font>
  • kb/pg/priprema_za_migraciju.txt
  • Last modified: 2020/03/09 12:12
  • by nessa