Tabelele UNDO păstrează o istorie a modificărilor (dacă
Jurnalul modificărilor funcția este activată).
Pentru fiecare modificare efectuată în baza de date PANTHEON, un
înregistrare este adăugată în tabelele UNDO, împreună cu cine a făcut
modificarea și când.
Tabelele UNDO cresc foarte repede și astfel ocupă mult spațiu,
potencial diminuând performanța serverului de baze de date și
creșterea dimensiunii backup-ului.
Mutarea tabelelor UNDO într-o altă locație poate:
- îmbunătăți performanța,
- reduce încărcarea serverului,
- reduce dimensiunea fișierului de backup.
Mutarea Tabelelor UNDO pe un Server Secundar
Mutarea tabelelor UNDO pe un server secundar reduce încărcătura serverului
tău principal și păstrează datele din tabelele UNDO arhivate. O
configurare recomandată este următoarea:
 |
Toate înregistrările UNDO mai vechi de o anumită vârstă sunt mutate de la
serverul principal la serverul secundar.
Datele mutate nu sunt disponibile online, dar pot fi restaurate
după cum este necesar.
|
În primul rând, creează o bază de date pe serverul secundar.
 |
În exemplul de mai jos, baza de date live de pe serverul
principal se numește PRI_SERVER.PANTHEON și arhiva de pe serverul
secundar SEC_SERVER.ARHIV_UNDO.
Serverul principal și serverul secundar sunt servere legate. |
Pe serverul principal, creează un job SQL Server care mută înregistrările vechi
(mai vechi de 3 luni în exemplu) pe serverul secundar. Jobul are
două etape:
Actualizare Structură
Structura bazei de date PANTHEON este adesea actualizată, de aceea
structura bazei de date arhivate trebuie să fie sincronizată cu baza de
date live înainte de a muta datele.
Mutare Date
Următorul script mută înregistrările din cele mai utilizate tabele în
baza de date arhivată. Poți adăuga sau elimina tabele după cum este necesar.
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())
Mutarea Tabelelor UNDO în cadrul aceluiași Server
Mutarea tabelelor UNDO dintr-o bază de date în alta pe același server
rezolvă problema doar parțial. Dimensiunea bazei de date live este
diminuată, dar încărcătura serverului nu este semnificativ redusă, deoarece
încă cheltuie unele resurse (cache, memorie) pe baza de date arhivată.