pgs_dump

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
Next revisionBoth sides next revision
pgs_dump [2019/11/15 14:38] – [Izvoz u tekstualnu datoteku (plain text)] nessapgs_dump [2021/01/22 20:48] milano
Line 1: Line 1:
-====== PG Dump ====== 
- 
-===== pg_dump ===== 
- 
-Za kopiranje PostgreSQL baze podataka najsvrsishodnije je koristiti postojeci pg_dump koji je lociran u folderu kome je instaliran Postgres, i to u folderu Bin. Restauracija podataka na drugoj lokaciji vrši se programom [[:pgs_restore|pg_restore]]. 
- 
-Primer lokacije na Windows platformi 
- 
-<file> 
-c:\Program Files\PostgreSQL\9.6\bin\pg_dump.exe 
-</file> 
- 
- 
 ====== PG Dump ====== ====== PG Dump ======
  
Line 28: Line 15:
 Preporučeni način izvoza baze podataka sa najviše opcija pri uvozu na drugi server jeste upotreba //custom// formata zapisa (-Fc). Preporučeni način izvoza baze podataka sa najviše opcija pri uvozu na drugi server jeste upotreba //custom// formata zapisa (-Fc).
  
-Pri prenosu celih baza podataka, veoma je važno da izlazni fajl bude kompresovan jer se može desiti da zbog veličine bude nepodesan za prenos/manipulaciju. Kompresijom upravlja ** pg _dump**, a niže je primer prenosa baze pod nazivom **b1**, sa **extenzijama**, šemama i svim ostalim Pg objektima. Operaciju izvodim pod sistemskim //postgres// nalogom, iako to može biti bilo koji drugi korisnik sa odgovarajućim pravima :+Pri prenosu celih baza podataka, veoma je važno da izlazni fajl bude kompresovan jer se može desiti da zbog veličine bude nepodesan za prenos/manipulaciju. Kompresijom upravlja **pg _dump**, a niže je primer prenosa baze pod nazivom **b1**, sa **extenzijama**, šemama i svim ostalim Pg objektima. Operaciju izvodim pod sistemskim //postgres// nalogom, iako to može biti bilo koji drugi korisnik sa odgovarajućim pravima :
 <code> <code>
 pg_dump -U postgres -Fc -d b1 -f b1.backup pg_dump -U postgres -Fc -d b1 -f b1.backup
Line 59: Line 46:
       - znacenje opcija: -U <user>, -d <ime baze>, -n <ime scheme> -f <format i ime fajla za izvoz>       - znacenje opcija: -U <user>, -d <ime baze>, -n <ime scheme> -f <format i ime fajla za izvoz>
  
-* ime baze se može navesti i kao <postgresql:////nessa:deus@MOC:5432/b100>, sto je posebno značajno kada se radi sa mašine koja nije PG server. \\  \\ //Samo struktura baze se može izvesti komandom -s (–schema-only) npr. **pg_dump -U postgres -s -d b1 -f b1_SCHEMA.sql** \\ Samo podaci baze se mogu izvesti komandom -a (–data-only) npr. **pg_dump -S postgres -a ****–disable-triggers ****-d b1 -f b1_DATA.sql**  (opcija –disable-triggers zahteva da se prosledi superuser ime, u ovom slučaju je to postgres) //+<code> 
 +* ime baze se može navesti i kao <postgresql://nessa:deus@MOC:5432/b100>, sto je posebno značajno kada se radi sa mašine koja nije PG server. 
 + 
 +Samo struktura baze se može izvesti komandom -s (–schema-only) npr. **pg_dump -U postgres -s -d b1 -f b1_SCHEMA.sql** 
 +Samo podaci baze se mogu izvesti komandom -a (–data-only) npr. **pg_dump -S postgres -a ****–disable-triggers ****-d b1 -f b1_DATA.sql**  (opcija –disable-triggers zahteva da se prosledi superuser ime, u ovom slučaju je to postgres) 
 +</code> 
 + 
 +===== Aktivna opcija "zaključavanja perioda" ===== 
 + 
 +Kada je aktivirana opcija //Uključiti mogućnost apsolutnog zaključavanja poslovnog perioda// potrebno je preduzeti **dodatne korake** kako bi se bekapovana baza mogla otvoriti. 
 + 
 +Zaključavanje se izvodi dodavanjem ''CONSTRAINT'' na tabele ''racuni'',''otpremnice'',''ulaz'' i ''nalozi''. Ograničenje se oslanja na funkciju ''bpub.maxdatstocklock()'' koja se kreira dinamički prilikom aktiviranja opcije kroz parametre programa.  
 + 
 +Funkcija se oslanja na tabelu ''firme'' (polje ''datStockLock''), koja se nalazi u tekućoj bazi i arhivama. Da bi zaključavanje tekućeg perioda i arhiva bilo razdvojeno u funkciji nije eksplicitno određena šema tabele ''firme'' već se koristi ''search_path'' za to. 
 + 
 +Pošto ''pg_restore'' resetuje ''search_path'' povrat podataka u ''CONSTRAINT-om'' zaštićene tabele neće biti moguć zbog greške ''relation 'firme' not found''
 +Da bi se ovo prevazišlo potrebno je:
  
 +  - Pre bekapovanja promeniti funkciju ''bpub.maxdatstocklock()'' tako da se doda eksplictno šema tabele - ''btek.firme''
 +  - U tabeli ''btek.firme'' postaviti vrednost polja ''datStockLock'' u ''NULL''
 +  - Nakon bekapovanja vratiti funkciju na staro kao i vrednost polja ''datStockLock''
 +  - Nakon ''pg_restore'' komande (otvaranja bekapa) opet korigovati funkciju (ukloniti ekslplicitno navedenu šemu).
  
 +Ukoliko se sve ovo ne uradi i dalje će biti moguća rekonstrukcija baze iz bekapa ali dodatnim koracima u **[[pgs_restore|pg_restore]]** procesu.
  • pgs_dump.txt
  • Last modified: 2022/08/31 15:57
  • by milano