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
kb:pg:priprema_za_migraciju [2018/04/10 12:11] – [Instalacija Postgres baze podataka na server] nessakb:pg:priprema_za_migraciju [2020/03/09 12:12] (current) – [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 userabalans_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 dodavanjem redova **host all all 192.168.0.0/24 md5**  za IPv4 konekcije (promeniti prve 2 vrednosti 192.168 prema stanju u lokalnoj mreži) i **host all all fe80::/10 md5**  za IPv6 konekcije. +
-  * 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 22: 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 ===== ===== 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// 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 ]]\\ 
 +Opcija "Unknowns as LongVarChar" služi da se JSON kolone pri čitanju ne seku na 255 karaktera.
  
-=====   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| +===== Opcije drajvera koje utična Crystal Reports izveštaje =====
-|**True is -1** | |+
  
-{{: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.+|**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 Primer parametara veze
Line 39: Line 39:
 </code> </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.+Č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) ===== ===== 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.+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 ==== ==== 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 75: Line 78:
 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. 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. \\ +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/]]
-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.\\ +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]]
-\\ +
-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 =====
Line 93: Line 89:
 |**True is -1** | | |**True is -1** | |
  
-{{: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.+{{: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 Primer parametara veze
Line 101: Line 97:
 </code> </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.+Č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) ===== ===== 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.+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 ==== ==== 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>
 SELECT * FROM "2015".Racuni SELECT * FROM "2015".Racuni
 </code> </code>
  
-<sup>*)</sup>  Ime šeme je uokvireno u znake navoda zato što počinje brojem, a ne slovom, kako je podrazumevano očekivano.+<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//.
  
-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 ==== ==== Linkovanje na baze/arhive u drugim bazama ====
  
  • kb/pg/priprema_za_migraciju.1523362310.txt.gz
  • Last modified: 2018/04/10 12:11
  • by nessa