Administracja i programowanie pod Microsoft SQL Server...

31
Administracja i programowanie Administracja i programowanie pod Microsoft SQL Server 2000 pod Microsoft SQL Server 2000 Paweł Rajba Paweł Rajba [email protected] http://www.kursy24.eu /

Transcript of Administracja i programowanie pod Microsoft SQL Server...

Page 1: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Administracja i programowanie Administracja i programowanie pod Microsoft SQL Server 2000pod Microsoft SQL Server 2000

Paweł RajbaPaweł Rajba

[email protected]://www.kursy24.eu/

Page 2: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Zawartość modułu 15Zawartość modułu 15

Proces odzyskiwaniaProces odzyskiwaniaPrzygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

RESTORE HEADERONLYRESTORE HEADERONLYRESTORE FILELISTONLYRESTORE FILELISTONLYRESTORE LABELONLYRESTORE LABELONLYRESTORE VERIFYONLYRESTORE VERIFYONLY

Odtwarzanie bazy danychOdtwarzanie bazy danychRESTORE DATABASERESTORE DATABASERESTORE LOGRESTORE LOG

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 1 -

Page 3: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Proces odzyskiwaniaProces odzyskiwania

Służy do zapewnienia spójności bazy danychSłuży do zapewnienia spójności bazy danychAkcje w ramach tego procesu:Akcje w ramach tego procesu:

jeśli dziennik zawiera nie zapisane, zatwierdzone jeśli dziennik zawiera nie zapisane, zatwierdzone transakcje, proces przewija je, zapisując zmiany do transakcje, proces przewija je, zapisując zmiany do bazy danych.bazy danych.jeśli dziennik zawiera nie zatwierdzone transakcje, proces wycofuje je.

Proces ten jest uruchamianyautomatycznie przy restarcie systemu

np. po awarii, braku zasilaniaprzy odtwarzaniu bazy danych

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 2 -

Page 4: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowejW Enterprise Manager możemy przejrzeć każde urządzenie dla kopii zapasowychJeśli chcemy dodatkowych informacji, możemy wykonać następujące polecenia

RESTORE HEADERONLY

RESTORE FILELISTONLY

RESTORE LABELONLY

RESTORE VERIFYONLY

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 3 -

Page 5: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowejWeryfikacja kopii zapasowejPolecenie RESTORE HEADERONLY

Wyświetla nagłówki kopii z danego urządzenia

SkładniaRESTORE HEADERONLY FROM <backup_device>[WITH FILE = liczba]

FILE = liczba – określa numer kopii z urządzenia, której nagłówki ma wypisać; jeśli nie podamy tej opcji, zostaną wypisane nagłówki wszystkich kopii z urządzenia

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 4 -

Page 6: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowejWeryfikacja kopii zapasowejPolecenie RESTORE HEADERONLY daje nam m.in. następujący zestaw informacji

Nazwę i opis pliku lub zbioru plików

Rodzaj użytego medium (taśma czy dysk)

Metoda utworzenia kopii:pełna, różnicowa, dziennika, plików

Datę i czas wykonania kopii

Rozmiar kopii

Numer kopii w zestawie na urządzeniu

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 5 -

Page 7: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowej c.d.Weryfikacja kopii zapasowej c.d.Polecenie RESTORE HEADERONLY

PrzykładyRESTORE HEADERONLY FROM TestBackup1

RESTORE HEADERONLY FROM TestBackup2WITH FILE=1

RESTORE HEADERONLY FROM DISK='D:\Databases\MSSQL\Backup\Test1.bak'WITH FILE=1

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 6 -

Page 8: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowejWeryfikacja kopii zapasowejPolecenie RESTORE FILELISTONLY

Wyświetla listę plików kopii

SkładniaRESTORE FILELISTONLY FROM <backup_device>[WITH FILE = liczba]

FILE = liczba – określa numer kopii na urządzenia, której listę plików ma wypisać

● jeśli nie podamy tej opcji, zostanie wypisana lista plików pierwszej kopii na urządzenia

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 7 -

Page 9: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowej c.d.Weryfikacja kopii zapasowej c.d.Polecenie RESTORE FILELISTONLY daje nam następujący zestaw informacji

Nazwę logiczną pliku

Lokalizację pliku

Rodzaj pliku: czy jest to plik bazy, czy dziennika

Grupę pliku

Rozmiar pliku

Maksymalny dopuszczalny rozmiar pliku

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 8 -

Page 10: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowej c.d.Weryfikacja kopii zapasowej c.d.Polecenie RESTORE FILELISTONLY

PrzykładyRESTORE FILELISTONLY FROM TestBackup1RESTORE FILELISTONLY FROM TestBackup2WITH FILE=1RESTORE FILELISTONLY FROM DISK='D:\Databases\MSSQL\Backup\Test1.bak'WITH FILE=1

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 9 -

Page 11: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowej c.d.Weryfikacja kopii zapasowej c.d.Polecenie RESTORE LABELONLY

Wyświetla informacje ogólne o urządzaniu lub pliku z kopiami zapasowymi

SkładniaRESTORE LABELONLY FROM <backup_device>

PrzykładyRESTORE LABELONLY FROM TestBackup1

RESTORE LABELONLY FROMDISK = 'D:\Databases\MSSQL\Backup\Test1.bak'

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 10 -

Page 12: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Weryfikacja kopii zapasowej c.d.Weryfikacja kopii zapasowej c.d.Polecenie RESTORE VERIFYONLY

Sprawdza spójność zbioru danych bez odtwarzania

SkładniaRESTORE VERIFYONLY FROM <backup_device>[WITH FILE = liczba]

FILE = liczba – określa, który zbiór kopii weryfikować plików; jeśli nie podamy tej opcji, zostaną zweryfikowane całe nośniki

PrzykładyRESTORE VERIFYONLY FROM TestBackup1 (błąd)

RESTORE VERIFYONLY FROM TestBackup1, TestBackup2 WITH FILE = 2

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 11 -

Page 13: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Przygotowanie do odtwarzaniaPrzygotowanie do odtwarzania

Przed wykonaniem odtwarzania należyPrzed wykonaniem odtwarzania należyOgraniczyć dostęp do bazy danych

W Enterprise Manager w właściwościach bazy danych wybieramy zakładkę Options, dalej Restrict access i Members of db_owner, db_creator, or sysadmin

Wykonać kopię dziennika transakcjiKopia dziennika jest wykorzystywana w ostatnim kroku odtworzenia bazy danych

Nie wykonanie kopii dziennika transakcji powoduje utratę zmian od ostatniego wykonania kopii dziennika do momentu wyłączenia bazy danych (awarii)

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 12 -

Page 14: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Czynności podczas procesu odtwarzaniaCzynności podczas procesu odtwarzaniaWeryfikacja (safety check)

Proces zabezpieczający przed przypadkowym nadpisaniem istniejącej bazy danych.

SQL Server nie odtworzy bazy danych, jeśli:Istnieje baza danych o nazwie użytej w poleceniu RESTORE i jest inna, niż ta zapisana w plikach kopii

Zbiór danych kopii jest inny, niż zbiór bazy danych istniejącej na serwerze

Brakuje plików do odtworzenia bazy danych

Odtworzenie plików oraz zawartości bazy danych

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 13 -

Page 15: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Polecenie RESTORE DATABASEPolecenie RESTORE DATABASESłuży do odtwarzania bazy danychSkładnia

RESTORE DATABASE database_name[FROM <urządzenie> [, ... n]][WITH [FILE = liczba]

[[,] RESTRICTED_USER] [[,] MOVE ‘nazwa_pliku' TO ‘nowa_lokalizacja'] [[,] REPLACE] [[,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name}]]

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 14 -

Page 16: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Znaczenie opcji polecenia RESTORE DBFILE=numer

określa, którą kopię z urządzenia odtworzyćmusi być określone

RESTRICTED_USERpo odtworzeniu baza będzie dostępna tylko dla członków ról: db_owner, dbcreator i sysadmin

MOVE..TO – możemy podać inne niż pierwotne lokalizacje odtwarzanych plików

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 15 -

Page 17: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Znaczenie opcji polecenia RESTORE DBREPLACE

Powoduje nadpisanie istniejącej bazy danychNależy tej opcji używać TYLKO wtedy, gdy chcemy nadpisać istniejącą bazę danych danymi kopii innej bazy danychOkreślenie tej opcji sprawia, że SQL Server nie będzie wykonywał weryfikacji (safety check)

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 16 -

Page 18: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Znaczenie opcji polecenia RESTORE DBRECOVERY, NORECOVERY

wszystkie kopie oprócz ostatniej odtwarzamy z opcją NORECOVERY, ostatnią z opcję RECOVERYopcja RECOVERY zrobi porządek z dziennikiem i przygotuje bazę do użytku; potem nie można odtwarzać już żadnych kopii

STANDBY=undofilepozwala wycofać odzyskiwaniepo tej opcji baza jest dostępna w trybie read-onlyautomatycznie dodawana jest opcja RECOVERY

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 17 -

Page 19: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Polecenie RESTORE DATABASEPolecenie RESTORE DATABASEPrzy odtwarzaniu uszkodzonej bazy danych

Nie trzeba usuwać uszkodzonej bazy – RESTORE ją nadpisze

SQL Server automatycznie odtworzy pliki i obiekty bazy danych

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 18 -

Page 20: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Polecenia RESTORE LOGPolecenia RESTORE LOGSłuży do odtwarzania dziennika transakcjiSkładnia

RESTORE LOG database_name[FROM <backup_device> [, …n]][WITH [RESTRICTED_USER]

[[,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name}] [[,] STOPAT = date_time [[,] STOPBEFOREMARK = nazwa

[AFTER date_time] [[,] STOPATMARK = nazwa [AFTER date_time]

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 19 -

Page 21: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Znaczenie opcji polecenia RESTORE LOGZnaczenie opcji polecenia RESTORE LOGSTOPAT=date_time

baza zostanie odtworzona do momentu określonego przez date_time

STOPATMARK=mark [AFTER date_time]baza zostanie odtworzona do znacznika o nazwie mark łącznie z transakcją zawierającą ten znacznikjeśli parametr AFTER zostanie pominięty, odtwarzanie zostanie zatrzymane na pierwszym znaczniku markjeśli parametr AFTER zostanie podany, odtwarzanie zostanie zatrzymane na pierwszym znaczniku w lub po momencie określonym przez date_time

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 20 -

Page 22: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Znaczenie opcji polecenia RESTORE LOG c.d.Znaczenie opcji polecenia RESTORE LOG c.d.STOPBEFOREMARK=mark [AFTER date_time]

jak powyżej, ale wyłączając transakcję zawierającą znacznik

Wykonując odtwarzanie do pewnego momentu za pomocą STOPAT nie można użyć opcji STAND BY lub NORECOVERYWykonując odtwarzanie momentu, który jest końcem danego dziennika, baza zawsze pozostaje w stanie takim, jak przy użyciu opcji RECOVERY

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 21 -

Page 23: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 1, Enterprise Manager:Przykład 1, Enterprise Manager:tworzymy dwa urządzenia:tworzymy dwa urządzenia:

TestBackup1, TestBackup2TestBackup1, TestBackup2

tworzymy pełną kopię bazy Test na urządzeniatworzymy pełną kopię bazy Test na urządzeniaTestBackup1, TestBackup2TestBackup1, TestBackup2

odtwarzamy bazę:odtwarzamy bazę:EM | Databases | Test (ppm) | Wszystkie zadaniaEM | Databases | Test (ppm) | Wszystkie zadania| Restore Database| Restore Database

Zakładka Options, opcja Leave database nonoperational...Zakładka Options, opcja Leave database nonoperational...

patrzymy na stan bazy folderze Databasespatrzymy na stan bazy folderze DatabasesMicrosoft SQL Server 2000 Copyright © Paweł Rajba- 22 -

Page 24: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 1, Enterprise Manager (c.d.):Przykład 1, Enterprise Manager (c.d.):odtwarzamy bazę raz jeszcze:odtwarzamy bazę raz jeszcze:

EM | Databases | Test (ppm) | Wszystkie zadaniaEM | Databases | Test (ppm) | Wszystkie zadania| Restore Database| Restore Database

Zakładka Options, opcja Leave database operational...Zakładka Options, opcja Leave database operational...

patrzymy na stan bazy folderze Databasespatrzymy na stan bazy folderze Databases

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 23 -

Page 25: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 2: to samo tylko w T-SQLPrzykład 2: to samo tylko w T-SQLsqlserversqlserver-p02.sql-p02.sql

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 24 -

Page 26: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 3:Przykład 3:sqlserver-p03.sqlsqlserver-p03.sql

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 25 -

Page 27: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 4:Przykład 4:sqlserver-p04.sqlsqlserver-p04.sql

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 26 -

Page 28: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 5:Przykład 5:sqlserver-p05.sqlsqlserver-p05.sql

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 27 -

Page 29: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 6:Przykład 6:sqlserver-p06A.sql – ten plik w pierwszym oknie QAsqlserver-p06A.sql – ten plik w pierwszym oknie QA

sqlserver-p06B.sql – ten plik w drugim oknie QAsqlserver-p06B.sql – ten plik w drugim oknie QA

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 28 -

Page 30: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 7, Enterprise ManagerTworzymy pełną kopię bazy Test Wstawiamy rekord do tabeli TabelkaTworzymy kopię pliku Test_Data.mdfWstawiamy rekord do tabeli TabelkaTworzymy kopię dziennikaTworzymy kopię pliku Test_Data2.ndfWstawiamy rekord do tabeli TabelkaTworzymy kopię dziennika

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 29 -

Page 31: Administracja i programowanie pod Microsoft SQL Server 2000kursy24.eu/public/download/sqlserver/wyklady/sqlserver-w... · 2009-08-13 · Polecenie RESTORE VERIFYONLY Sprawdza spójność

Odtwarzanie bazy danychOdtwarzanie bazy danych

Przykład 7 (c.d.)Odtwarzamy z kopii plik Test_Data2.ndfOdtwarzamy drugą kopię dziennikaSprawdzamy, czy wszystko jest na miejscu

Microsoft SQL Server 2000 Copyright © Paweł Rajba- 30 -