SYBASE8 (988810), страница 7
Текст из файла (страница 7)
12. Выполнить контроль целостности: сравнить распечатки sysusages и sysdatabases с новой версией, выполнить dbcc checkalloc в каждой БД и просмотреть таблицы в каждой БД.
13. Если был полностью восстановлен диск БД master, то необходимо восстановить БД model.
14. Восстановить все запорченные пользовательские БД.
15. Если со времени последнего дампирования появились новые входные имена, то необходимо проверить syslogins.
16. Если все правильно, то необходимо перестартовать SQL-сервер командой starserver в режиме многих пользователей.
17. Создать дамп БД master.
Для того, чтобы сделать распечатки системных таблиц, можно воспользоваться isql и выдать запрос: select * from <имя таблицы>. Для того, чтобы иметь полную гарантию полного восстановления системы, необходимо иметь копии следующих таблиц: sysdatabases, sysdevices, sysusages, sysloginroles и syslogins.
Для построения новой БД master необходимо при запуске buildmaster использовать опцию "master" (для систем UNIX и РС: -m, а для системы VMS:/master), а для построения полного диска БД master эту опцию не нужно указывать.
Пример построения БД master на 17 Мб (8704 страницы по 2 К):
в системе UNIX:
buildmaster -d/dev/rsdlf -s8704 -m
в системе VMS:
buildmaster /disk=dua0:[devices, master]d_master.dat
/size=8704/master
Чтобы перезапустить SQL-сервер в режиме одного пользователя, необходимо выполнить команду:
в системе UNIX:
startserver -f <имя сервера> -m
в системе VMS:
startserver / server=<имя сервера>/masterrecover
Если в распечатке таблицы sysusages, сделанной до запуска buildmaster, есть только одна запись для dbid 1, то ваша БД master не менялась и делать на этом шаге ничего не нужно. Если записей для dbid 1 больше одной, то необходимо увеличить размер БД master. В самых простых случаях увеличение БД master осуществляется командой alter database.
Для того, чтобы проверить имя в сети вашего сервера, необходимо сделать запрос:
select * from sysservers
where srvname="SYB_BACKUP"
Если в отчете по этому запросу значение поля srvnetname совпадает с именем вашего сервера дампирования, то переходите к следующему шагу. А если эти имена не совпадают, то необходимо обновить таблицу sysservers. Например, назначить имя серверу дампирования PRODUCTION_BSRV:
begin transaction
update sysserver set srvnetname="PRODUCTION_BSRV"
where srvname="SYB_BACKUP"
Если обновление выполнилось правильно (должна обновиться только одна запись), то выдать команду commit transaction.
Далее, командой showserver необходимо убедиться, что сервер дампирования запущен. Если он не запущен, то запустить его надо командой startserver.
Теперь выполняется восстановление БД master с дампа, например:
в системе UNIX:
load database master from "/dev/nrmt4"
в системе VMS:
load database master from "MTA0:"
После выполнения восстановления SQL-сервер автоматически отключается и его нужно снова запустить в режиме одного пользователя для проверки таблиц sysusages, sysdatabases и sysdevices.
Если в распечатке есть диски, которых нет в восстановленной таблице sysdevices, то необходимо добавить соответствующие диски и запустить команды disk reinit и disk refit. Если в распечатке есть БД, которых нет в восстановленной таблице sysdatabases, то необходимо добавить соответствующие БД и выполнить команду disk refit.
После этого проверяется целостность SQL-сервера. Если восстанавливалась только БД master, то не нужно восстанавливать БД model. Если восстанавливается полностью диск master, то необходимо восстановить БД model с дампа. Если у вас нет дампа, то необходимо:
1) запустить скрипт installmodel:
в системе UNIX:
cd $SYBASE/scripts
setenv DSQUERY <имя сервера>
isql -Usa -P<пароль> -S<имя сервера> <installmodel
в системе VMS:
set default sybase_system:[sybase.scripts]
define dsquery <имя сервера>
isql/user="sa"/password="<пароль>"
/input=installmodel
2) переделать все изменения, выполненные в БД model.
Если на диске master есть пользовательские БД, то их тоже необходимо восстановить. Далее сравнить распечатку таблицы syslogins и восстановленную таблицу syslogins. Если есть различия, то нужно воспользоваться процедурами sp_addlogin, sp_droplogin, sp_locklogin и sp_modifylogin для ликвидации всех различий.
И, наконец, необходимо перезапустить SQL-сервер в режиме многих пользователей и снять дамп с БД master.
Восстановление БД sybsystemprocs
Если у вас есть дампы БД sybsystemprocs, то восстановление этой БД выполняется командой load database, а если нет дампов, то - с помощью installmaster.
Восстановление с помощью installmaster осуществляется за пять шагов:
1) выяснить имя диска, на котором расположена эта БД; это можно сделать двумя способами:
- с помощью процедуры sp_helpdb;
- с помощью следующего запроса:
select sysdevices.name, sysusages.size/512
from sysdevices, sysdatabases, sysusages
where sysdatabases.name="sybsystemprocs"
and sysdatabases.dbid=sysusages.dbid
and sysdevices.low <=sysusages.size+vstart
and sysdevices.high>=sysusages.size+vstart-1
2) уничтожить БД: drop database sybsystemprocs. Если диск БД вышел из строя физически, то необходимо сделать новый диск, т.е. воспользоваться sp_dropdevice и disk init.
3) пересоздать БД, например:
create database sybsystemprocs on sprocdev=10
4) запустить скрипт installmaster.
В системе UNIX:
cd $SYBASE/scripts
setenv DSQUERY <имя сервера>
isql -Usa -P<пароль> -S<имя сервера> <installmaster
В системе VMS:
set default sybase_system:[sybase.scripts]
define dsquery <имя сервера>
isql/user="sa"/password="<пароль>"/input=installmaster
5) переделать все изменения, которые вы вносили в БД sybsystemprocs.