UNDO tablice se generiraju uvijek kada u PANTHEON™-u pratimo prošlost
promjena (Vidi Administratorska konzola | Postavke loga
promjena).
U te UNDO tablice se za svaku promjenu u zapisu baze podataka kreira novi zapis,
u kojem se pored prethodnih podataka nalaze i podaci o tome, koji korisnik i
kada je promijenio podatak.
 |
Ako Vam se drastično poveća veličina baze podataka
ili ako želite smanjiti veličinu sigurnosnih kopija (backupa),
odnosno ubrzati djelovanje baze podataka, onda migrirajte stare
podatke! |
UNDO tablice se brzo pune i zauzimaju dosta prostora u glavnoj bazi podataka.
Zbog toga se drastično poveća količina podataka, koje SQL poslužitelj mora
držati u memoriji i snimati kod kreiranja sigurnosne kopije.
Migracija UNDO tablica na rezervni SQL poslužitelj
Najučinkovitiji način smanjenja UNDO tablica, koji još uvijek sačuva podatke,
je migracija UNDO tablica na rezervni SQL poslužitelj. Pogledajmo shemu
preporučene postavke:
 |
Iz primarnog SQL poslužitelja prenosimo unose UNDO
tablica, starije od određenog datuma na sekundarni SQL poslužitelj.
Podaci, inače više nisu on-line dostupni, a postoje kao arhiv i
možemo ih po potrebi upotrijebiti (s SQL alatima prenesemo nazad u
primarnu bazu). |
Na sekundarnom SQL poslužitelju kreiramo bazu podataka.
 |
U donjim slučajevima je transakcijska baza na
primarnom poslužitelju označena kao PRI_SERVER.PANTHEON, a arhivska
baza kao SEC_SERVER.ARHIV_UNDO. Primarni i sekundarni poslužitelj su
međusobno povezani (linked servers). |
Na primarnom SQL poslužitelju napravimo SQL Server Agent Job, koji dnevno
prenosi unose, starije od određenog datuma (u donjem primjeru, starije od 3
mjeseca) na sekundarni poslužitelj. Job će biti sastavljen iz dva koraka:
Popravi strukture
Strukture transakcijske baze nam se mijenjaju s nadogradnjama. Zbog toga
moramo prije prijepisa podataka baze najprije popraviti (sinhronizirati
strukturo podataka arhivskih tablica sa strukturom tablica u transakcijskoj
bazi).
Prenesi podatke
U ovom koraku prenesemo podatke iz primarnog na sekundardni poslužitelj. U
ovom primjeru prenosimo najčešće tablice. Ako Vaša instalacija popunjava s
velikom količinom podataka i druge tablice, dodajte ih!
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 tablica na isti SQL poslužitelj
Migracijom UNDO tablica na isti SQL poslužitelj samo djelomično dostižemo
željene rezultate. Transakcijska baza nam se smanji (manji backupovi), ali SQL
poslužitelj još uvijek namjenjuje određeni dio resursa (cache tablice, memorija)
bazi, koja drži stare UNDO unose.