Migracija UNDO tabel
Migracija UNDO tabel
UNDO tabele se generirajo vedno, ko v PANTHEON™-u spremljamo zgodovino sprememb (Glej Administracijska konzola | Nastavitev loga sprememb). V te UNDO tabele se za vsako spremembo v zapisu podatkovne baze kreira nov zapis, v katerem se poleg prejšnjih podatkov nahajajo tudi podatki o tem, kateri uporabnik in kdaj je podatek spremenil.
 |
Če se vam drastično poveča velikost podatkovne baze ali če želite zmanjšati velikost varnostnih kopij (backupov) oz. pohitriti delovanje podatkovne baze potem migrirajte stare podatke! |
UNDO tabele se hitro polnijo in zavzemajo precej prostora v glavni podatkovni bazi. Zaradi tega se drastično poveča količina podatkov, ki jih mora SQL strežnik držati v pomnilniku in shranjevati ob varnostni kopiji.
Migracija UNDO tabel na rezervni SQL strežnik
Najbolj učinkovit način zmanjšanja UNDO tabel, ki še vedno ohrani podatke, je migracija UNDO tabel na rezervni SQL strežnik. Poglejmo shemo priporočene nastavitve:
 |
Iz primarnega SQL strežnika prenašamo vnose UNDO tabel, starejše od določenega datuma na sekundarni SQL strežnik.
Podatki sicer niso več on-line dosegljivi a obstajajo kot arhiv in jih lahko po potrebi uporabnimo (z SQL orodji prenesemo nazaj v primarno bazo).
|
Na sekundarnem SQL strežniku naredimo podatkovno bazo.
 |
V spodnjih primerih je transakcijska baza na primarnem strežniku označena kot PRI_SERVER.PANTHEON, arhivska baza pa kot SEC_SERVER.ARHIV_UNDO. Primarni in sekundarni strežnik sta povezana med seboj (linked servers). |
Na primarnem SQL strežniku naredimo SQL Server Agent Job, ki dnevno prenaša vnose, starejše od določenega datuma (v spodnjem primeru starejše od 3 mesecev) na sekundarni strežnik. Job bo sestavljen iz dveh korakov:
Popravi strukture
Strukture transakcijske baze se nam spreminjajo z nadgradnjami. Zato moramo pred prepisom podatkov baze najprej popraviti (sinhronizirati podatkovno strukturo arhivskih tabel s strukturo tabel v transakcijski bazi).
Prenesi podatke
V tem koraku prenesemo podatke iz primarnega na sekundardni strežnik. V tem primeru prenašamo najbolj pogoste tabele. Če vaša instalacija polni z veliko količino podatkov tudi druge tabele jih 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 tabel na isti SQL strežnik
Z migracijo UNDO tabel na isti SQL strežnik le delno dosežemo željene rezultate. Transakcijska baza se nam sicer zmanjša (manjši backupi), vendar SQL strežnik še vedno namenja določen del resursov (cache tabele, pomnilnik) bazi, ki drži stare UNDO vnose.