UNDO tabele se generiraju uvijek kad u PANTHEON™-u pregledamo istoriju
promjena (pogledaj Administratorska konzola |
Postavljanje loga promjena).
U te UNDO tabele se za svaku promjenu u zapisima baze podataka kreira novi
zapis, u kojem se pored prijašnjih podataka nalaze i novi, o tome koji
korisnik je kada promjenio tabele.
 |
Ako vam se drastično poveća baza podataka ili ako
želite smanjti veličinu sigurnosne kopije (backup) odnosno ubrzati
rad baze ze podataka onda migrirajte stare podatke. |
UNDO tabele se brzo pune i zauzimaju mnogo prostora u glavnoj bazi podataka.
Zbog toga se drastično poveća količina podataka, koje SQL server mora držati u
memoriji i pohranjivati prilikom pohranjivanja sigurnosne kopije.
Migracija UNDO tabela na rezervni SQL server
Najbolji način smanjenja UNDO tabela, a pri tome sačuvati podatke, je
migracija UNDO tabela na rezervni SQL server. Pogledajmo šemu preporučene
postavke:
 |
Sa primarnog SQL servera prenesemo unose UNDO tabela,
starije od određenog datuma na sekundarni SQL server.
Podaci inače nisu više on-line dostupni a ostaju kao arhiv i
možemo ih iskoristiti u slučaju potrebe (s SQL alatima ih prenesemo
nazad u primarnu bazu) |
Na sekundarnom SQL serveru postavimo bazu podataka.
 |
U primjeru je transakcija baza na primarnom serveru
označena kao PRI_SERVER.PANTHEON, a arhivna baza kao SEC_SERVER.ARHIV_UNDO.
Primarni i sekundarni server su povezani međusobno (linked servers). |
Na primarnom SQL serveru postavimo SQL Server Agent Job, koji dnevno prenosi
unose, starije od naznačenog datuma (u primjeru 3 mjeseca) na sekundarni server.
Job je sastavljen od dva koraka.
Popravljanje struktura
Strukture transakcija baze se spašavaju sa nadogradnjom. Zato moramo prije
kopiranja baze podataka najprije popraviti (sinhronizirati strukture podataka
arhivskih tabela sa strukturom podataka u transakcijskoj bazi).
Prenošenje podataka
U ovom koraku porenesmo podatke sa primarnog na sekundarni server. U primjeru
prenosimo samo najkorištenije tabele. Ako često koristite druge tabele i njih
dodajte!
insert into SEC_SERVER.ARHIV_UNDO.dbo.BUDGET_UNDO
select * from PRI_SERVER.PANTHEON.dbo.BUDGET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.BUDGET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.BUDGETPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.BUDGETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.BUDGETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CHSTATPROM_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CHSTATPROM_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CHSTATPROM_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CONTACTS_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CONTACTS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CONTACTS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CONTADDRESS_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CONTADDRESS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CONTADDRESS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.PROMET_UNDO
select * from PRI_SERVER.PANTHEON.dbo.PROMET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.PROMET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.PROMETPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.PROMETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.PROMETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.SERIALNOP_UNDO
select * from PRI_SERVER.PANTHEON.dbo.SERIALNOP_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.SERIALNOP_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.SUBJEKT_UNDO
select * from PRI_SERVER.PANTHEON.dbo.SUBJEKT_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.SUBJEKT_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.TEME_UNDO
select * from PRI_SERVER.PANTHEON.dbo.TEME_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.TEME_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.TEMEPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.TEMEPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.TEMEPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
Migracija UNDO tabela na isti SQL server
Migracijom UNDO tabela na isti SQL server ne postižemo željene rezultate.
Transakcijska baza nam smanji (manji backup), ali SQL server dijeli resurse na
dvije strane.