Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaArtúr Kerekes Megváltozta több, mint 10 éve
1
11-15. előadás Barabás Péter
SQL Server előadás Barabás Péter
2
Témakörök Függvények Tárolt eljárások Triggerek Létrehozása
Determinisztikus és nem determinisztikus függvények Tárolt eljárások Újrafordítása Jogok és szerepkörök Triggerek DDL triggerek Rekurzív triggerek Egymásba ágyazott triggerek
3
Függvények implementálása
Skalár függvények Input paraméterek: 0 v. több Visszatérési érték: egyszerű skaláris érték Megszorítások: nem változtathatják meg az objektumok állapotát CREATE FUNCTION [ schema_name. ] function_name ( [ [ AS ][ type_schema_name. ] parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS return_data_type [ WITH <function_option> [ ,...n ] ] [ AS ] BEGIN function_body RETURN scalar_expression END [ ; ]
4
Függvények implementálása II.
Tábla értékű függvények Hasonló a skaláris függvényekhez Különbség: visszatérési értéke tábla Használata: SELECT utasítás FROM részében CREATE FUNCTION [ schema_name. ] function_name ( [ AS ] [ type_schema_name. ] parameter_data_type [ = default ] } [ ,...n ] ] ) TABLE < table_type_definition > [ WITH <function_option> [ ,...n ] ] [ AS ] BEGIN function_body RETURN END [ ; ]
5
Determinisztikus és nem determinisztikus függvények
Ugyanazon bemenő paraméterekre mindig ugyanazt a visszatérési értéket szolgáltatja Pl. sin(), cos(), … Az eredmény indexelhető Nem determinisztikus függvények Hívásonként más visszatérési értéket szolgáltat Pl. : GETDATE() Hívhat nem determinisztikus függvényt vagy tárolt eljárást Az eredmény nem indexelhető
6
Tárolt eljárások Bármilyen SQL Server által futtatható parancsot tartalmazhat Biztonsági funkció: Futtatási jog a tárolt eljárásra Az adatokra, amin dolgozik nem kell jogot adni Elrejti az adatbázis szerkezeti megvalósítását a user elől
7
Tárolt eljárások II. CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ [ type_schema_name. ] data_type } [ OUT | OUTPUT ] ] [ ,...n ] [ WITH <procedure_option> [ ,...n ] ] [ FOR REPLICATION ] AS { <sql_statement> [;][ ...n ] | <method_specifier> } [;] <procedure_option> ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE_AS_Clause ] <sql_statement> ::= { [ BEGIN ] statements [ END ] } <method_specifier> ::= EXTERNAL NAME assembly_name.class_name.method_name
8
Tárolt eljárások III. Jellemzők: Egyedi nevük van
Tetszőleges számú input paraméterekkel rendelkezik Kimeneti paraméterek definiálására is lehetőség van ENCRYPTION: az eljárás titkosítva tárolódik RECOMPILE: minden futtatáskor újrafordítódik A törzs nem tartalmazhatja a következőket: SET SHOWPLAN_TEXT SET SHOWPLAN_ALL USE <database>
9
Tárolt eljárások IV. Használathoz futtatási jog szükséges
GRANT EXECUTE ON <stored procedure> TO <database principle> A futtatási joggal automatikusan elérhetővé válnak a tartalmazott objektumok és parancsok DE! Direktben nem érhetők el, csak az eljáráson keresztül
10
Triggerek Típusai: DML triggerek DDL triggerek Rekurzív triggerek
AFTER INSTEAD OF DDL triggerek Rekurzív triggerek Nested triggerek
11
DML triggerek Egy adott táblához tartozik
Esemény bekövetkezésének hatására fut le, nem lehet direkt meghívni Események: INSERT, UPDATE, DELETE Módok: AFTER INSTEAD OF Törzsben nem használhatóak: Create, alter, drop, backup, restore
12
DML triggerek II. Speciális táblák:
INSERTED DELETED CREATE TRIGGER [ schema_name . ] trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > } <dml_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]
13
Rekurzív és nested triggerek
Rekurzív triggerek: Trigger akciója kiválthatja újra önmagát Egy mechanizmus kezeli a végtelenséget RECURSIVE_TRIGGERS opció állításával Nested triggerek: Egy trigger akciója kiváltja egy másik trigger „tüzelését” A másik trigger pedig kiváltja az előző lefutását NESTED_TRIGGERS paraméter állításával szabályozható
14
DDL triggerek Használata: Szintaktika: CREATE TRIGGER trigger_name
Korlátozhatja a DDL utasítások használatát Szintaktika: CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH <ddl_trigger_option> [ ,...n ] ] { FOR | AFTER } { event_type | event_group } [ ,...n ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] } <ddl_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] <method_specifier> ::= assembly_name.class_name.method_name
15
Adatbázisok mentése Teljes mentés Különbségi mentés
Tranzakció log mentése File csoport mentés Tükrözött mentés Részleges mentés
16
Teljes mentés Minden adat mentésre kerül, ami az adatbázisban található Használható adatbázis újralétrehozására is A visszaállítási modelltől függetlenül mindig alkalmazható. A lehető leggyorsabban történik az elvégzése minimális erőforrás használat mellett. A backup engine lapokat ír backup device-re, a sorrend figyelembe vétele nélkül A sorrendi függetlenség miatt ezt a műveletet több szál közt osztja szét és így a gyorsaság csak az eszköz sebességgétől függ.
17
Teljes mentés II. Logikai inkonzisztencia léphet fel
Userek bejelentkezett állapota és aktivitása miatt SQL Server a következőképpen küszöböli ezt ki lockolja azt adatbázist és blockolja az összes tranzakciót Tesz egy jelölést a tranzakció logba Felengedi az adatbázis lockolást Menti az összes lapot A két log jelölés közötti tranzakciókat hozzáfűzi a backup-hoz
18
Teljes mentés III. Parancs: TO rész: WITH rész:
BACKUP DATABASE <database_name> TO DISK=‘<directory>\<filename>’ WITH INIT TO rész: A backup device-t lehet megadni DISK,TAPE: explicit útvonalat lehet kijelölni WITH rész: Több, mint egy tucat paramétere lehet INIT: mindent írjon felül a backup eszközön
19
Különbségi mentés Az utolsó teljes mentés óta változott extenteket menti. Előnye: a tranzakciós log mentések számát csökkenti. Csak teljes mentés után használható Visszaállítási modelltől függetlenül haszálható.
20
Különbségi mentés II. Nem inkrementális backup
Inkrementális backup: az utolsó inkrementális backup óta eltelt változásokat menti Az utolsó TELJES MENTÉS óta eltelt változásokat menti. Pl. teljes mentés éjfélkor történt 4 óránként van különbségi mentés Minden mentés az éjfél óta eltelt változásokat tartalmazza
21
Különbségi mentés III. Extent map Egy másik adatlap az adatbázisban
Minden bit az oldalon egy extent-et reprezentál Amikor az extent változik, az extent bitje 0-ról 1-re változik Teljes mentésnél minden bit 0-ra állítódik. Mivel az adatbázisok mérete korláltlan és az adatlapok mérete 8KB lehet, 8192 extentenként jön létre mapping oldal
22
Különbségi mentés IV. Parancs:
BACKUP DATABASE <database_name> TO DISK=‘<directory>\<filename>’ WITH DIFFERENTIAL
23
Tranzakció log mentés Teljes vagy bulk-logged recovery model esetén használható Teljes mentés után használható Adatok egy részhalmazát tartalmazza és szükséges egy teljes mentés a visszaállításhoz Az aktív logot menti Az előző log backup utáni Log Sequence Number-rel (LSN) kezdi. Mindaddig menti a tranzakciókat, amíg egy nyitott tranzakciót el nem ér A mentett tranzakciók a logból eltávolíthatók
24
Tranzakció log mentés II.
Parancs: BACKUP LOG <database_name> TO DISK=‘<directory>\<filename>’ WITH INIT
25
Filecsoport mentés Alternatív mentési stratégia a teljes mentéshez
Az adatbázis mentése helyett az egyes filecsoportokat menti az adatbázisból Kiindulásként szükséges egy mentés az össze filecsoportról Teljes vagy Bulk-logged recovery modell szükséges
26
Filecsoport mentés II. Parancs:
BACKUP DATABASE <database_name> FILEGROUP = ‘<filegroup_name>’ TO DISK=‘<directory>\<filename>’ BACKUP DATABASE <database_name> FILEGROUP = ‘<filegroup_name>’ TO DISK=‘<directory>\<filename>’ WITH DIFFERENTIAL
27
Tükrözött mentés Minden backup létrehoz egy egyszeri másolatot az adatokról egy eszközön. Az adminisztrátor duplikálhatja ezt az esetleges eszközhibák miatt. A duplikáció fárasztó és időigényes folyamat. Létrehozható másolat a mentésről az SQL Serverben: tükrözött mentés
28
Tükrözött mentés II. BACKUP parancs opcionális része:
[[MIRROR TO <backup_device> [,…n]][…next-mirror]] 4 másolat létrehozása lehetséges, ebből 3 a MIRROR TO részben definiált Korlátozások: Az eszköznek az összes másolathoz ugyanolyan típusúnak kell lenni. Mindegyiknek hasonló tulajdonságokkal kell rendelkeznie. Pl. ha a backup disk-re történik, a másolatok is disk-re kell kerüljenek
29
Tükrözött mentés III. Példa:
BACKUP DATABASE PUBS TO DISK=‘C:\DEMO\BACKUP\PUBS1A.BAK’, DISK=‘C:\DEMO\BACKUP\PUBS1B.BAK’ MIRROR TO DISK=‘\\BAKSERVER1\BACKUP\PUBSMIRROR1A.BAK’, DISK=‘\\BAKSERVER1\BACKUP\PUBSMIRROR1B.BAK’ MIRROR TO DISK=‘\\BAKSERVER2\BACKUP\PUBSMIRROR2A.BAK’, DISK=‘\\BAKSERVER2\BACKUP\PUBSMIRROR2B.BAK’ MIRROR TO DISK=‘\\BAKSERVER3\BACKUP\PUBSMIRROR3A.BAK’, DISK=‘\\BAKSERVER3\BACKUP\PUBSMIRROR3B.BAK’ WITH FORMAT GO
30
Részleges mentés Lehetőség van írható és csak olvasható filecsoportok kezelésére Előző verziókban a backup a csak olvasható filecsoportokra is kiterjedt, ami ugyebár nem változhatott Új paraméter: READ_WRITE_FILEGROUPS
31
Részleges mentés II. Jelentése: Példa:
A backup figyelmen kívül hagyja a csak olvasható filecsoportokat Időt és helyet takaríthatunk meg vele Példa: BACKUP DATABASE PUBS READ_WRITE_FILEGROUPS TO DISK=‘C:\DEMO\BACKUP\PUBS1.BAK’
32
Részleges mentés II. Jelentése: Példa:
A backup figyelmen kívül hagyja a csak olvasható filecsoportokat Időt és helyet takaríthatunk meg vele Példa: BACKUP DATABASE PUBS READ_WRITE_FILEGROUPS TO DISK=‘C:\DEMO\BACKUP\PUBS1.BAK’
33
Gyakorlás 1. Mentsük az adatbázist teljes, különbségi és tranzakció log mentéssel! 2. Készítsünk filecsoport, filcsoport különbségi és tranzakció log mentéseket!
34
Adabázisok visszaállítása
Full backup visszaállítása Differential backup visszaállítása Transaction Log visszaállítása Részleges visszaállítás Korrupt oldal visszaállítás Visszaállítás eszköz hibákkal Visszaállítás validálása Adatbázis mozgatása
35
Full backup visszaállítás
Legtöbb visszaállítás az adatbázis újralétrehozásával kezdődik egy adott időben Aztán a következő backup-ok visszaállítása a cél ideig Ez a folyamat a teljes mentésből történő visszaállítással kezdődik.
36
Full backup visszaállítás II.
A teljes mentés az teljes adatbázist tartalmazza A visszaállítási műveletnek az oldalakat szekvenciális sorrendben kell visszatenni az adatbázisba A folyamat végén egy teljesen koherens adatbázist kapunk.
37
Full backup visszaállítás III.
Példa: RESTORE DATABASE PUBS FROM DISK=‘C:\DEMO\BACKUP\PUBSFULL.BAK’ WITH REPLACE, STANDBY = ‘C:\DEMO\BACKUP\PUBSSTANDBY.STN’ REPLACE opció: Írja felül a már létező ugyanolyan nevű adatbázist STANDBY opció: Az adatbázist visszaállítás állapotban hagyja: Írás nem megengedett De a userek kapcsolódhatnak az adatbázishoz és lekérdezéseket végezhetnek WITH RECOVERY, WITH NORECOVERY opciók
38
Differential Backup visszaállítás
Kiindulópont: Teljes backup visszaállítás szükséges Példák: RESTORE DATABASE PUBS FROM DISK=‘C:\DEMO\BACKUP\PUBSFULL.BAK’WITH NORECOVERY RESTORE DATABASE PUBS FROM DISK=‘C:\DEMO\BACKUP\PUBSFULL.BAK’WITH RECOVERY
39
Differential Backup visszaállítás II.
Filecsoport visszaállítás példa: RESTORE DATABASE AdventureWorks FILEGROUP=‘FG1’ FROM DISK=‘C:\TEST\AWFG1.BAK’ WITH NORECOVERY RESTORE DATABASE AdventureWorks FILEGROUP=‘FG1’ FROM DISK=‘C:\TEST\AWFG1.BAK’ WITH RECOVERY
40
Transaction Log visszaállítás
Az adatbázis előregörgetése egy adott pontig Teljes vagy különbségi backup visszaállítás után lehetséges. A TL Backup tranzakció sorozatot tartalmaz az LSN-nel azonosítva Lehetőség van egy bizonyos LSN-nél leállítani a recovery folyamatot (STOPAT)
41
Példák Visszaállítási folyamat (full+diff+TR) Full Differential
RESTORE DATABASE AdventureWorks FILEGROUP=‘FG1’ FROM DISK=‘C:\TEST\AWFG1.BAK’ WITH NORECOVERY Differential RESTORE DATABASE AdventureWorks FROM DISK=‘C:\TEST\FG1DIFF1.BAK’ WITH NORECOVERY Transaction log RESTORE LOG AdventureWorks FROM DISK=‘C:\TEST\AW2.TRN’ WITH RECOVERY
42
Példák II. Visszaállítási folyamat (full+multiple TR) Full TR log
RESTORE DATABASE AdventureWorks FILEGROUP=‘FG1’ FROM DISK=‘C:\TEST\AWFG1.BAK’ WITH NORECOVERY TR log RESTORE LOG AdventureWorks FROM DISK=‘C:\TEST\AW1.TRN’ WITH NORECOVERY RESTORE LOG AdventureWorks FROM DISK=‘C:\TEST\AW2.TRN’ WITH RECOVERY
43
Részleges visszaállítás
Az adatbázis egy részének visszaállítása Az adatbázis többi része elérhetővé válik a kérések számára Amennyiben a kérésekhez nincs szükség a visszaállítandó részre, a usereknek semmi sem tűnik fel
44
Korrupt oldal visszaállítása
Egy vagy több oldal korrupttá válhat Előző verziókban server hiba okozta és az adtabázis offline módba került Javítás az oldal típusától függő volt: Index oldal vált korrupttá: Droppolás után újragenerálódott Adat oldal vált korrupttá: Visszaállítás backupból, A backup alatt a DB offline
45
Korrupt oldal visszaállítása II.
PAGE_VERIFY CHECKSUM Ezen verifikáció engedélyezése után bármely korrupttá vált oldal loggolódik és karanténba kerül Verifikáció engedéleyezése: ALTER DATABASE <database_name> SET PAGE_VERIFY CHECKSUM Alaphelyzetben ki van kapcsolva Korrupt lapok a suspect_pages táblába loggolódnak az msdb adatbázisban
46
Korrupt oldal visszaállítása III.
A log végének mentése BACKUP LOG PUBS TO DISK=‘C:\HA\DEMO\BACKUP\PUBS1.TRN’ WITH INIT GO Korrupt lap visszaállítása USE MASTER RESTORE DATABASE PUBS PAGE=‘1:88’ FROM DISK=‘C:\HA\DEMO\BACKUP\PUBSMIRROR1.BAK’ WITH RECOVERY Tranzakciók a TR logba RESTORE LOG PUBS FROM DISK=‘C:\HA\DEMO\BACKUP\PUBS1.TRN’ WITH RECOVERY
47
Visszaállítás eszköz hibákkal
a hiba ritkán detektálható a backup előtt Visszaállításnál a létező adatbázis tartalma kisöprődik A visszaállítás abortálódik a hiba miatt Marad egy teljesen érvénytelen adatbázis
48
Visszaállítás eszköz hibákkal II.
A RESTORE utasításnak van egy opciója, melynek hatására a hibás szektorok átugrásra kerülnek és a visszaállítási folyamat ezáltal befejeződhet WITH CONTINUE_AFTER_ERROR Nincs rá garancia, hogy a visszaállítás során az adatbázis használható lesz Hiba esetén az adatbázis emergency módba kerül Kapcsolódhatunk az adatbázishoz Select utasításokat kiadhatunk Adatváltoztatás nem lehetséges
49
Backup validálása Honnan tudható, hogy a backup használható? Módja:
Adatok visszaállítása és verifikációja Igen időigényes és ritkán praktikus Helyette: RESTORE VERIFYONLY FROM <backup_device> […,n] Ellenőrzi a media header-t Verifikálja a backup checksum-ot Olvassa a belső lap láncokat és újraszámítja a backup checksum-ot az összehasonlításhoz
50
Adatbázis mozgatása Szükség lehet adatbázisok szerveren belüli v. szerverek közötti mozgatására 3 mechanizmus létezik erre: Backup és restore Detach/attach Copy Database Wizard
51
Detach/Attach Detach: az adatbázis unmount-olása az SQL Serverből
A system táblák bejegyzései eltávolításrakerülnek Nem használható tovább az adatbázis Az adatfájlok még jelen vannak a rendszerben Leválasztás után szabadon másolhatók Újra elérhetővé tétel az attach paranccsal A rendszer táblákba hozzáfűzi a megfelelő bejegyzést
52
Detach/Attach II. Detach példa Attach példa
EXEC sp_detach_db ‘AdventureWorks’, ‘true’ Attach példa CREATE DATABASE AdventureWorks ON (FILENAME=‘C:\TEST\AdventureWorks_Data.mdf’), (FILENAME=‘C:\TEST\AdventureWorks_Log.ldf’) FOR ATTACH
53
Copy Database Wizard Objektumok másolása egy másik instance-ba, vagy egy másik adatbézisba, de ugyanazon instance-ba Grafikus felületen keresztül elérhető
54
Tárolási paraméterek kezelése
Fregmentáció kezelése Statisztikai adatok gyűjtése Adatbázisok méretkarbantartása
55
Index fregmentáció Indexelés, optimális lekérdezés végrehajtás
Indexek elveszthetik hatékonyságukat, ha nincsenek megfelelően menedzselve (fregmentáció) fregmentáció: Ha az adat a táblában módosul és kihat az index lapra INSERT, DELETE, UPDATE kihat az indexekre
56
Belső fregmentáció DELETE utasítás hatására
Az index lapok nincsenek kellően tele Kevésbé hatékony diszk terület használat Oldalak számának növekedéséhez vezethet Olvasások száma is megnövekedik ennek hatására Ki-belapozásokra lehet szükség, ami lassítja a folyamatot
57
Külső fregmentáció INSERT, UPDATE hatására
Új adatot kellene bevinni az indexek közé Nincs hely a lap osztódik, új lap generálódik és az adatok a két lapra kerülnek megosztva A page split biztosítja a sorok logikai sorrendjét, de a fizikait nem A lapok nem lesznek fizikai sorrendben külső fregmentáció Nem folyamatos index lapokat okoz a diszken, Új lapok távol kerülnek az eredeti laptól, és a fizikai sorrend különbözik a logikai sorrendtől
58
Index fregmentáció azonosítás
Dynamic management function (DMF): sys.dm_db_index_physical_stats SELECT utasítással lekérdezhetők: avg_fregmentation_in_percent avg_page_space_used_in_percent Külső fregmentáció esetén az első érték eléri a 10-et. Belső fregmentáció esetén a második érték eléri a 75-öt.
59
Példa SELECT OBJECT_NAME(dt.object_id), si.name, dt.avg_fregmentation_in_percent, dt.avg_page_space_used_in_percent FROM (SELECT object_id, index_id, avg_fregmentation_in_percent, avg_page_space_used_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(‘AdventureWorks’), NULL, NULL, NULL, ‘DETAILED’) WHERE index_id<>0) as dt INNER JOIN sys.indexes si ON si.object_id=dt.object_id AND si.index_id=dt.index_id
60
Index fregmentáció kezelése
ALTER INDEX … REORGANIZE Defregmentálja a cluster és nem klaszterindexek levél szintjét Fizikailag újrarendezi a lapokat, hogy a logikai, balról-jobbra sorrendnek megfeleljenek. Kompaktabbá teszi az indexeket, ami a kitöltési faktortól függ sys.indexes katalógus nézetben található a „fill factor” Példa: USE AdventureWorks; ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REORGANIZE;
61
Index fregmentáció kezelése II.
ALTER INDEX … REBUILD Minkét típusú fregmentációt megszünteti Eldobja majd újragenerálja az indexeket. Példa: USE AdventureWorks; ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD; ONLINE opció: ON esetben az indexek rendelkezésre állnak lekérdezéshez és adatmódosításhoz
62
REORGANIZE vs. REBUILD Amennyiben az indexek nem túlságosan fregmentáltak REORGANIZE Kisebb erőforrásigényű Automatikusan online fut Erősebb fregmentáció esetén a REBUILD lehet a megoldás. Megoldás: Periodikusan futtassuk a már említett SELECT utasítást a fregmentáció meghatározásához 60<avg_page_space_used_in_percent<75 vagy 15>avg_fregmentation_in_percent > 10 REORGANIZE avg_page_space_used_in_percent<60 or avg_fregmentation_in_percent>15 REBUILD
63
Statisztikák menedzselése
A lekérdezés optimalizálás egy másik fontos összetevői a statisztikai adatok. Oszlop és index statisztika esetén: DB engine rendezi az oszlop értékeit és egy hisztogramot készít A hisztogram 200 oszlopértéket vesz az intervallumokhoz Sorok száma, mely az intervallumra esik Sorok száma, mely az intervallumok közé esik Az intervallumban tárolt értékek sűrűsége Az optimalizálónak segítenek a statisztikák dönteni, hogy index használata megnöveli a lekérdezések hatékonyságát. Emellett a string típusú oszlopokra külön statisztika készül (LIKE)
64
Automatikus statisztika generálás
Index létrehozása során az indexelt oszlopokról statisztikák készülnek AUTO_CREATE_STATISTICS ON A nem indexelt oszlopokról is statisztikák készülnek (LIKE) AUTO_UPDATE_STATISTICS ON Automatikusan frissülnek a statisztikai adatok periodikusan, ha az adatok változnak
65
Manuális statisztika generálás
sp_createstat tárolt eljárás használatával CREATE STATISTICS UPDATE STATISTICS sp_updatestats tárolt eljárással DROP STATISTICS
66
Oszlop statisztikák megtekintése
sp_autostats térol eljárással sys.stats katalógus view : statisztika sorokat mutat tábla típusú objektumokról sys.stats_columns : egy sort mutat minden oszlopra, ami a sys.stats statisztika része STATS_DATE függvény az adott index statisztika utolsó módosítás dátuma DBCC SHOW_STATISTICS: az aktuális eloszlás statisztikákat mutatja ez adott célra
67
Méretkarbantartás Nagy törlési műveletek során vagy egyidejű adat betöltés során az adatbázis fájlok mérete nagyobb lehet, mint szükséges Lehetőség van a nem használt lapok eltávolítására és diszk terület felszabadítására Automatikusan és manuálisan is lehet az adatbázis file-ok méretét zsugorítani
68
Automatikus méretkarbantartás
ALTER DATABASE … AUTO_SHRINK ON periodikusan ellenőrzi a DB engine a tárterület használatot és csökkenti az adatbázis fájlok méretét Alapértelmezetten OFF-ra van állítva Lassíthatja a rendszert
69
Manuális méretkarbantartás
Előny: megválasztható, hogy a zsugorítás mikor történjen DBCC SHRINKDATABASE DBCC SHRINKFILE A kezdeti méretnél kisebbre nem lehet zsugorítani.
70
Tranzakció log méretezése
A database tranzakció log fix méretekkel jön létre. A virtuális log file méreténél nem lehet kisebbre zsugorítani. Példa TR log file mérete 10GB 50 virtuális log file-t tartalmaz 200MB/file shrink: töröljük a nem használt VL file-okat 2 marad : 400MB (aktív, vagy uncommitted tr-t tartalmaz)
71
Adatbázis integritás ellenőrzés
DBCC CHECKDB Allokáció verifikáció Szerkezeti integritás Logikai integritás DBCC CHECKALLOC DBCC CHECKTABLE DBCC CHECKCATALOG Service Broker adatok validálása Indexelt view-k tartalmának vizsgálata
72
DBCC CHECKDB Nagyobb adatbázisok átvizsgálása
PHYSICAL_ONLY opció: gyakori ellenőrzések esetén Fizikai konzisztencia ellenőrzése Sérült lapok Ellenőrző összeg hibák Hardware hibák Teljes integritás ellenőrzéshez periodikusan érdemes futtatni a DBCC CHECKDB-t opciók nélkül Hiba esetén: RESTORE Amennyiben nem lehet (méretgondok pl) Repair opciók: REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST, REPAIR_REBUILD
73
Gyakorlás Futtassuk a DBCC CHECKDB parancsot!
74
Adatbázis snapshot Adott idejű, csak olvasható másolat
Nem tartalmaz tranzakció logot a forrás adatbázis nagyon kis méretű
75
Copy-On-Write Technology
Kezdetben a Database SnapShot nem tartalmaz adatlapokat vagy bármilyen információt a forrás adatbázisról. Amikor egy adatlap változik, az SQL szerver az oldal eredetijét beleírja a DS-ba
76
Catalog of Changed Pages
Egyedi struktúra: bittérkép Oldalak listáját tartalmazza, melyek változtak a snapshot létrehozása óta Az eredeti kép snapshotba írásakor a lap bitje 0-ról 1-re változik
77
DB Snapshot létrehozása
CREATE DATABASE paranccsal Speciális része van Követelmények: Minden egyes fájlcsoporthoz szükség van egy bejegyzésre Minden fájlcsoport logikai nevének egyezőnek kell lennie a forrás adatbázisban levő névvel AS SNAPSHOT OF részt kell a parancsban használni
78
DB Snapshot létrehozása II.
CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name, FILE = ‘os_file_name’ ) [ , … n ] AS SNAPSHOT OF source_database_name
79
Korlátozások Nem lehet backup-olni, visszaállítani vagy lecsatolni
Ugyabban az instance-ban kell léteznie, mint a forrás DB Full-text indexelés nem támogatott Nem lehet a forrás adatbázist droppolni, lecsatolni, visszaállítani, ha a snapshot jelen van System adatbázisokról nem hozható létre snapshot Szerkezeti változások (pl. fájlcsoportok hozzáadása, törlése) nem engedélyezett
80
Adatok kinyerése snapshotból
SELECT utasítással Az eredményhalmaz 2 helyről származhat: Az adatok, melyek nem változtak a DS létrehozása óta, a forrás adatbázisból jönnek Az adatok, melyek a snapshot létrehozása óta változtak, a DS adatlapjaiból jönnek
81
Gyakorlás Hozzunk létre adatbázis snapshotot!
82
Snapshot használata helyreállításhoz
Mivel egy adott időpillanatban történt másolatot tartalmaz, lehetséges a visszaállítás belőle Hiba esetén (sérülés, adminisztrációs hiba) INSERT, UPDATE utasításokkal visszaállítható a tartalom Az adatbázis állapotát egy bizonyos időpillanatban mentett állapotára állítja vissza Nem lehet utána további visszaállítást csinálni
83
Snapshot használata helyreállításhoz II.
Korlátozások: Csak egy single DB SnapShot lézethet a forrás adatbázishoz Minden full-text katalógus droppolásra majd újra létrehozásra kerül a forrás adatbázisban A tranzakció log újraépül, mely megtöri a log láncot A forrás adatbázis és a snapshot offline a visszaállítás idejéig
84
Snapshot használata helyreállításhoz III.
RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT = <database_snapshot_name>
85
Gyakorlás Állítsunk vissza adatbázist snapshotból!
86
Aktív adatbázis elemek
Agentek Jobok Alertek
87
Agent Job SQL Server Agent egy ütemező motor
Képes jobokat futtatni megadott időközönként Használat: Backupolás Indexelés Integritás ellenőrzés Egy Job lépésekből áll (job steps) Job tulajdonos biztosítja a biztonsági környezetet és a job futtatásának ütemezését
88
Agent Job létrehozása Magas szintű lépések: Létrehozásához:
Hozzuk létre a jobot, adjunk neki nevet, adatbázis környezetet és tulajdonost Adjunk hozzá egy v. több job lépést Opcionálisan rendelkezzünk az ütemezésről Létrehozásához: SQL Server Agent Node alatt az Object Explorer-ben Job neve: 64 karakter hosszú lehet, legyen kifejező Job kategória: beépítettek v. saját is definiálható
89
Agent Job létrehozása II.
90
Agent Job létrehozása II.
91
Job Owner megadása Csak a job owner vagy sysadmin csoportbeli user módosíthatja a jobot Biztosítani kell a megfelelő jogokat a job ownernek Proxy accounts Replication SSIS Analysis Services CmdExec ActiveX
92
Job lépések létrehozása
Név és típus megadása Parancs definiálása Loggolási és értesítési akciók definiálása
93
Job lépések létrehozása II.
94
Job lépések létrehozása III.
95
Job lépések létrehozása IV.
96
Job ütemezések létrehozása
A job lépések létrehozása után Egy v. több ütemezés kapcsolható a jobhoz
97
Job ütemezések létrehozása II.
98
Job ütemezések létrehozása III.
99
Gyakorlás Hozzunk létre jobot!
100
Maintenance Plan Wizard
Full, differential, transakció log backup Integritás ellenőrzés Újraindexelés Létrehozás: SQL Server Maintenance Plan Wizard
101
Maintenance Plan Wizard II.
102
Maintenance Plan Wizard III.
103
Maintenance Plan Wizard IV.
104
Maintenance Plan Wizard V.
105
Maintenance Plan Wizard VI.
106
Maintenance Plan Wizard VII.
107
Maintenance Plan Wizard VIII.
108
Maintenance Plan Wizard IX.
109
Maintenance Plan Wizard X.
110
Maintenance Plan Wizard XI.
111
Maintenance Plan Wizard XII.
112
Maintenance Plan Wizard XIII.
113
Gyakorlás Hozzunk létre Maintenance Plan-t!
114
Operátorok konfigurálása
Értesítések fogadásához definiálhatók operátorok Elnevezést és értesítési módozatot kell beállítani, ill. egyéb paramétereket, mint pl.
115
Operátorok konfigurálása II.
116
Riasztások Az adminisztrátorok értesítése speciális feltételek teljesüése esetén Konfigurálás: Új alert létrehozása Típusának meghatározása Monitorozandó feltételek konfigurálása Akció definiálása a feltétel teljesülése esetén Üzenetkezelő opciók definiálása
117
Riasztások II.
118
Riasztások III.
119
Riasztások IV.
120
Riasztások V.
121
Gyakorlás Defináljunk alerteket!
122
Monitorozás SQL Server Profiler System Monitor Tuning Advisor
123
SQL Server Profiler Lekérdezés minták analizálása teljesítmény problémák felderítéséhez SQL Trace: Eseménykezelő alrendszer : SQL Trace Külső API alapú Sokféle paraméterrel meghívható Szűrők alkalmazhatók Transact-SQL-lel v. SQL SMO-val használható
124
Trace definiálása
125
Trace definiálása (events) II.
126
Filterek definiálása
127
Oszlopok szervezése
128
Trace futtatása
129
Trace futtatása II.
130
Start, Stop, Pause Trace Pause: Stop: Start:
Adat gyűjtés felfüggesztésre kerül Az események nem kezelődnek a pause alatt Stop: Bezárja a trace session-t Start: Újraindításnál az adatgyújtés resetelődik, előő adatok elvesznek
131
Trace Log mentése Trace definiciók mentése Trace adatok mentése
Export->Script Trace Definition Trace adatok mentése Save to file Save to table
132
ShowPlan adatok gyűjtése
Értékeléshez sok, különböző adatra van szükség Különböző lekérdezési tervek különböző eredményeket szolgáltatnak Showplan: lekérdezés mentése amely a terv során lefutott Tervek összehasonlítása ugyanazon lekérdezés több permutációjára
133
Showplan események
134
XML Showplan kezelés
135
ShowPlan XML megjelenítés
136
Replay Trace Trace ismétlését teszi lehetővé Követelmények:
SQL Server autentikáció Specifikus események kezelése, melyek a Replay template-ben definiáltak
137
Replay Trace II.
138
System Monitor Monitorozott adatok gyűjtésére való ez is
Counter Log létrehozása System Monitoradd counterstart analysis Minden adat live módban kerül feldolgozásra, nincs mód loggolásra egy file-ba akésőbbi analízis céljából System MonitorPerformance Logs And Alerts Counter Logs New Log settingsnév megadása
139
Counter Log megadása
140
Tuning Advisor Query optimalizálás fontos szereplője
Indexekre, indexelt nézetekre, particiókra ad követelelményeket „Brute force”-hoz hasonló vizsgálat az indexeknél Veszi a workload file-t inputként Teszteli a query-ket az összes lehetséges index permutációra A legjobb megoldás elérése a cél
141
Workload File létrehozása
Trace file Trace table Transact-SQL scripttel SQL Server Profiler Tuning trace template save result to file, vagy table
142
DTA konfigurálása DTA futtatása és kapcsolódás a szerverhez
Workfile kiválasztása Tuning opciók megadása
143
Analysis Session konfigurálása
144
Tuning opciók megadása
145
Analízis folyamata
146
Teljesítmény előírások
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.