Решение проблем с сервисом ArcSDE
Большинство проблем, связанных с запуском сервиса ArcSDE, происходят по причине неисправности системной среды. Обычно, в процессе установки или конфигурации программного обеспечения, был пропущен важный этап.
Советы по решению проблем в данном разделе относятся к нескольким различным командам администрирования. Сведения об использовании этих команд см. в руководстве по командам администрирования, которое устанавливается вместе с сервером приложений ArcSDE.
Идентификация проблем
-
Просмотр событий Windows
При установке на операционную систему Windows вы можете использовать Просмотр событий Windows для просмотра возможных проблем. Просмотр событий Windows предоставляет диагностическую информацию, которая также может помочь объяснить проблемы с ArcSDE во время запуска. Для работы с Просмотром событий Windows
- Откройте Панель управления (Control Panel).
- В меню Панели управления (Control Panel) выберите Администрирование (Administrative Tools).
- В меню Администрирование (Administrative Tools) выберите Службы компонентов (Component Services).
- В меню Службы компонентов (Component Services) откройте папку Просмотр событий (Event Viewer) и выберите опцию Приложение (Application).
- В столбце Тип (Type) найдите красный значок знака стоп и соответствующее имя сервиса ArcSDE в столбце Источник (Source). Дважды щелкните на по элементу сервиса ArcSDE для открытия окна Свойства события (Event Detail).
- В окне Свойства события (Event Detail) приведено описание проблемы.
-
Файлы журнала ошибки
ArcSDE и другие поддерживаемые системы управления базами данных (СУБД) отслеживают активность путем внесения сообщений о событиях в файлах журнала ASCII. Файлы журнала могут быть проверены на отслеживание случившихся ошибок. ArcSDE вносит сообщения в два файла журнала: giomgr_<service>.log и sde_<service>.log. (При использовании прямого подключения приложение записывает сообщения об ошибках в sdedc_<dbms>.log вместо файла сервера приложения sde_<service>.log.)
- Файл giomgr_<service>.log
Файл giomgr_<service>.log представляет собой файл ASCII, который содержит элементы для всех активностей процесса giomgr. (<service> – это имя сервиса ArcSDE.) При каждом подключении пользователя или выполнении попытки подключения к сервису ArcSDE в журнал вносится сообщение. После отключения пользователя в журнал вносится другое сообщение. Файл giomgr_<service>.log также перехватывает процедуры запуска и отключения сервиса ArcSDE. Однако данный файл не содержит специальные сообщения об ошибках; он просто показывает вашу активность в процессе giomgr.
- Файл sde_<service>.log
При каждом определении проблемы процессом gsrvr сервис ArcSDE записывает элемент в поле файла sde_<service>.log. Иногда сообщения имеют тип предупреждений; иногда они указывают на ошибки сервиса ArcSDE, к которым вам необходимо обратиться. При просмотре файла sde_<service>.log помните, что сообщения заносятся в него только во время появления ошибки в процессе сервиса ArcSDE. Иногда приложение ArcSDE предоставляет отчет о проблеме, относящейся к ArcSDE, но данное событие не появляется в файле sde_<service>.log. Это происходит потому, что ошибка появляется со стороны клиента ArcSDE, а не сервера. Начиная с версии 9.3 файл sde_<service>.log также хранит информацию об отправке запроса от плохо сформированного соединения. Это может быть свидетельством того, что кто то пытается взломать сервер. Элемент может выглядеть так:
[Mon Mar 05 09:35:14 2007] [0] [GIOMGR] Invalid connection request length of -2147477504 from [10.47.6.5:32923] [Mon Mar 05 09:35:14 2007] [0] [GIOMGR] Could Not Get XDR Request.
Помните, что элемент журнала содержит IP адрес, с которого выполняется запрос на установление подключения. Сообщение "Невозможно получить XDR запрос (Could Not Get XDR Request)" было получено потому, что giomgr не мог принять или распознать запрос на подключение из-за неправильной длины. Файл sde_<service>.log усекается при каждой остановке и перезапуске сервиса ArcSDE.
- Файлы журнала ошибок СУБД
Каждая СУБД имеет собственный метод внесения ошибок в журнал. Для определения способа внесения ошибок в журнал вашей СУБД ознакомьтесь с соответствующим справочником по администрированию СУБД.
- Файл giomgr_<service>.log
Решение проблем с сервисом ArcSDE на серверах UNIX
Проблемы с переменной системного пути (System path variable issues)
Если переменные системного пути заданы неверно или не заданы вовсе, то вы можете получить приведенные ниже ошибки. Ознакомьтесь со способом задания переменных пути в руководстве по установке сервера приложения ArcSDE, относящемся к вашей СУБД.
- Если переменные среды PATH не содержат директорию $SDEHOME/bin, то появляется следующее сообщение об ошибке:
sdemon: Command not found
- Если переменные среды библиотеки пути не содержат директорию $SDEHOME/lib, то появляется следующее сообщение об ошибке:
ld.so.1: sdemon: fatal: libsde90.so: open failed: No such file or directory Killed
- Если переменные среды библиотеки пути не содержат директорию библиотеки СУБД, то появляется сообщение об ошибке, аналогичное следующему:
ld.so.1: /ultra1/ora10gexe/bin/giomgr: fatal: libclntsh.so\: open failed: No such file or directory Killed Could not start ArcSDE - Check Network, $SDEHOME disk, DBMS settings and dbinit.sde.
Проблемы с правом доступа к временному файлу (Temporary file permission problems)
Если существуют временные файлы ArcSDE и они не принадлежат администратору ArcSDE, то возвращается следующее сообщение:
ERROR: Cannot Initialize Shared Memory (-79) Delete /tmp/<service name> and /tmp<service name>.lock if present. Could not start ArcSDE - Check Network, $SDEHOME disk, DBMS settings and dbinit.sde.
Для устранения данной проблемы удалите временные файлы /tmp/<service name> и /tmp/<service name>.lock. Например, для сервиса с именем esri_sde вам необходимо удалить файлы /tmp/esri_sde и /tmp/esri_sde.lock. Для удаления данных файлов вы можете войти в систему как пользователь root.
Файлы из /tmp были удалены (Files have been deleted from /tmp)
Если после запуска сервиса ArcSDE, файлы, хранящиеся в директории /tmp были удалены, то сервис ArcSDE прервет работу при попытке подключения или отключения. Данный сервис основан на файлах протокола разъема UNIX, созданных в директории /tmp. Как правило, вы не должны удалять файлы из директории /tmp. Однако, в случае абсолютной необходимости, вам необходимо выключить сервис ArcSDE перед выполнением данной операции. Для получения инструкций по данной операции см. разделы Остановка локального сервиса ArcSDE на Linux или UNIX, Остановка локального сервиса ArcSDE на Windows или Остановка удаленного сервиса ArcSDE.
Проблемы, относящиеся к СУБД
- Если СУБД не работает, то вы получите сообщение об ошибке, аналогичное следующему:
init_DB DB_instance_open_as_dba: -51 DBMS error code: 1034 ORA-01034: ORACLE not available Could not start ArcSDE - Check Network, $SDEHOME disk, DBMS settings, and dbinit.sde.
Убедитесь, что экземпляр базы данных был запущен и повторите попытку.
- Если пароль администратора обслуживания ArcSDE неверен, то вы получите сообщение об ошибке, аналогичное следующему:
init_DB DB_instance_open_as_dba: -93 DBMS error code: 1017 ORA-01017: invalid username/password; login denied Could not start ArcSDE – Check Network, $SDEHOME disk, DBMS settings, and dbinit.sde.
Повторите команду с использованием правильного пароля. Если вы забыли пароль, то для его восстановления вам необходимо связаться с администратором базы данных.
- Если администратор обслуживания ArcSDE не существует, то вы получите сообщение об ошибке, аналогичное следующему:
init_DB DB_instance_open_as_dba: -93 DBMS error code: 1017 ORA-01017: invalid username/password; login denied Could not start ArcSDE – Check Network, $SDEHOME disk, DBMS settings, and dbinit.sde.
ArcSDE с большинством поддерживаемых СУБД требует наличия администратора обслуживания ArcSDE в базе данных. Если его нет, то вы или администратор базы данных должны создать его.
Ошибка SE_OUT_OF_MUTEXES (-109) на сервере Solaris
Операционная система Solaris использует файлы для реализации POSIX общие семафоры, используемые ArcSDE. Если данные файлы остались после отказа операционной системы или сбоя питания, то иногда они могут стать причиной проблем. Место хранения данных файлов контролируется операционной системой Solaris. Вы можете найти их в директориях /tmp или the /var/tmp следующим образом:
/tmp/.SEMD/ SDE_9.0_<instance>_iomgr_shared_semaphore /tmp/.SEML/ SDE_9.0_<instance>_iomgr_shared_semaphore
или
/var/tmp/.SEMD/ SDE_9.0_<instance>_iomgr_shared_semaphore /var/tmp/.SEML/ SDE_9.0_<instance>_iomgr_shared_semaphore
Если после отказа операционной системы вы не можете выполнить запуск сервиса ArcSDE и получаете ошибку -109, то причиной этому может быть наличие двух общих файлов семафоров. Если вы нашли данные файлы в папке /tmp или /var/tmp, удалите из и повторите попытку запуска сервиса ArcSDE.
Решение проблем с сервисом ArcSDE на серверах Windows
Приведенные ниже ошибки обычно происходят при запуске сервиса ArcSDE под управлением Windows. Данный перечень включает номера ошибок, где это применимо, и их возможные причины.
Ошибка 997 запуска сервиса esri_sde (997 Error starting esri_sde service)
Данная ошибка может произойти в случае неправильной или неполной установки или конфигурации сервера приложения ArcSDE:
"ESRI_sde service failed during initialization. Please check event log or error log files. Error starting ESRI_sde service(997) Could not start ArcSDE — Check Network, $SDEHOME disk, DBMS settings"
Решение
- Убедитесь, что для пользователя-администратора обслуживания ArcSDE был введен правильный пароль. При использовании неправильного пароля в файле sde.errlog будет присутствовать ошибка -93.
- Полностью удалите текущий ArcSDE сервис и создайте новый.
- Удалите сервис с использованием команды sdeservice –o delete.
- Проверьте реестр на наличие устаревших ключей. Проверьте следующие директории и удалите ключ/папку [esri_sde] если они существуют:
HKEY_LOCAL_MACHINE > SOFTWARE > ESRI > ArcInfo > ArcSDE > ArcSDE for [DBMS] > [service_name]
HKEY_LOCAL_MACHINE > SYSTEM > ControlSet001 > Services > [service_name]
HKEY_LOCAL_MACHINE > SYSTEM > ControlSet002 > Services > [service_name]
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > [service_name]
- Перезагрузите сервер для вступления в силу изменений реестра.
- Введите set в командной строке и проверьте, что %SDEHOME%\bin является первой записью в переменной среды PATH (PATH=%SDEHOME%\bin;...).
- Убедитесь, что имя сервиса ArcSDE и номер порта в файле %SDEHOME%\etc\services.sde совпадает с полем C:\WINNT или WINDOWS\system32\drivers\etc\services файла.
- Перейдите в директорию %SDEHOME%\bin и заново создайте sdeservice с использованием команды sdeservice –o create.
- Запустите sdeservice –o list и убедитесь, что имя сервиса и путь SDEHOME заданы правильно.
Если в конце строки пути SDEHOME имеется два обратных слэша (\\) или в конце строки пути имеется один обратный слэш (\), удалите их вручную.
- Перезапустите сервис ArcSDE из командной строки используя команду sdemon –o start или net start <service_name>.
1068 Сбой зависимости (1068 Dependency failure)
СУБД, к которой пытается выполнить подключение сервис ArcSDE, не может быть найдена. Наиболее вероятными причинами этой ошибки являются
- Сервис СУБД не запущен.
- Сервер СУБД был удален.
- Информация о подключении СУБД, введенная при создании сервиса ArcSDE, не верна.
Убедитесь, что сервер СУБД существует, а сервис запущен, проверьте информацию о подключении СУБД. Если ошибка осталась, используйте команду sdeservice для удаления существующего сервиса ArcSDE и создайте его заново.
1069 Ошибка входа (1069 Login failure)
Обычно данная ошибка появляется когда пользователь Windows, создавший сервис ArcSDE, не является администратором или пользователем Windows power. Другая причина может быть в неправильно введенном пароле.
Если для запуска сервиса не использовалась учетная запись администратора, убедитесь, что учетная запись является членом группы администратора или пользователя power.
1072 Реестр был занят (1072 Registry was busy)
Иногда происходит в реестре с записью сервиса ArcSDE. Возможно была запущена команда sdeservice с операцией удаления или сервис был открыт редактором реестра. Кроме того, возможна проблема с поставщиком связывания и встраивания объектов баз данных (Object Linking and Embedding Database (OLE DB)).
1075 Зависимость сервиса удалена (1075 Service dependency deleted)
Сервис ArcSDE не может найти сервис СУБД, к которому должен подключиться. Убедитесь, что сервис СУБД существует и запущен. Если проблема осталась, используйте команду sdeservice для удаления существующего сервиса ArcSDE и создайте его заново.
2140 Внутренняя ошибка Windows (2140 Internal Windows error)
Сервис ArcSDE не смог завершить процесс запуска. Проверьте файл журнала ошибок — %SDEHOME%\etc\sde_<sde_instance>.log — для поиска возможных причин, почему сервис ArcSDE не запущен.
Возможные причины и способы решения
- Нет элемента для экземпляра в файле системных сервисов. Проверьте файл системных сервисов на наличие элемента, соответствующего экземпляру ArcSDE, который пытается выполнить попытку запуска.
- Элементы в файле системных сервисов и сервисы ArcSDE не совпадают. Убедитесь, что файл системных сервисов аналогичен элементу в файле %SDEHOME%\etc\services.
- Последняя строка файла системных сервисов может не быть считана, если она не прерывается символом конца строки. Если данный элемент находится в последней строке файла системных сервисов, убедитесь, что строка оканчивается символом возвратам каретки.
- Поврежден компонент TCP/IP. Переустановите компонент TCP/IP. Дополнительную информацию о данной операции см. в документации Windows или на веб-сайте службы поддержки Microsoft.
- Пароль администратора обслуживания ArcSDE введен неправильно. Если это так, измените его с использованием команды sdeservice –o modify –r SDE_DBA_PASSWORD.
- Вы пытаетесь установить подключение к базе геоданных с сервисом ArcSDE, использующим авторизацию пользователя системой Windows, но данный пользователь не имеет права доступа к папке, содержащей файл gsrvr.exe на сервере ArcSDE. Пользователь, являющийся администратором Windows на сервере ArcSDE, должен выдать права доступа READ и EXECUTE для папки %SDEHOME%\<dbms>exe учетной записи Windows, которая пытается установить подключение.
gsrvr.exe – Сбой инициализации DLL или gsrvr.exe – Ошибка приложения: приложение не было правильно инициализировано (gsrvr.exe – DLL Initialization Failed or gsrvr.exe – Application Error: The application failed to initialize properly)
В системе Windows сервис ArcSDE был запущен на не интерактивном рабочем столе. Максимальная динамическая память, отведенная для не интерактивных рабочих столов, ограничена параметром инициализации Windows с именем SharedSection. При получении данного сообщения об ошибке вам необходимо изменить параметр SharedSection.
Параметр CONNECTIONS в таблице SERVER_CONFIG (sde_server_config в SQL Server и PostgreSQL) также ограничивает количество одновременных подключений к базе геоданных и может потребовать увеличения.
- Динамическая память
Максимальный объем динамической памяти, доступный для всех рабочих столов, интерактивных и неинтерактивных, составляет 48 мегабайт. Так как объем памяти является конечной величиной, то вам необходимо изменять параметр SharedSection. Если сервис ArcSDE запускается как доменная учетная запись, то файл gsrvr.exe выделяет неинтерактивному рабочему столу объем динамической памяти в 512 KB, созданной для сервиса ArcSDE. Если сервис ArcSDE запускается как учетная запись LocalSystem, то gsrvr.exe выделяет из общего рабочего стола объем динамической памяти для неинтерактивного рабочего стола равный 512 KB, это относится ко всем сервисам, работающим как LocalSystem. Если сервис ArcSDE запускается как учетная запись LocalSystem с сервисом Allow, которому разрешена работа с рабочим столом, то gsrvr.exe выделяет из рабочего стола по умолчанию объем динамической памяти для неинтерактивного рабочего стола равный 3 KB.
РешенияРешение проблемы зависит от операционной системы. В настоящее время не существует способа определения объема памяти, используемого отдельным рабочим столом, а также остаток памяти в общем пуле. Для контроля количества используемых рабочих столов воспользуйтесь файлом oh.exe набора инструментов ресурсов Windows.
- Измените значение для параметра SharedSection в реестре.
Оцените количество необходимых gsrvrs. Для клиентов ArcGIS for Desktop Basic, ArcGIS for Desktop Standard и ArcExplorer gsrvr обычно представляет одно подключение ArcSDE. Для ArcIMS количество gsrvrs зависит от типа сервиса. Учитывая тот факт, что два виртуальных сервера используют потоки ЦП пространственного сервера, используйте следующую формулу:
(2 image service threads * total CPUs) + (number of query server threads)
Например: (2 * 8) + 8 = 24 gsrvrs. Данная рекомендация также учитывает использование сервиса изображения и запроса, все AXL подключаются к серверу ArcSDE как один пользователь и база данных. Если в ваших AXL имеются ссылки на различных пользователей или базы данных, то формула принимает вид:
(#databases * #mapservice threads)+ (#dbs*#queryservices)
Если количество gsrvrs превышает 64 (значение параметра CONNECTIONS по умолчанию в таблице ArcSDE SERVER_CONFIG), то вам необходимо увеличить третий параметр SharedSection в реестре.
Данный параметр изменяется с использованием редактора реестра Windows. Для изменения параметра SharedSection введите regedit в командной строке MS_DOS и нажмите OK. Откройте следующий путь реестра и дважды щелкните на ключе реестра Windows.Внимание:
Описанные здесь действия включают внесение изменений в обязательные параметры вашей операционной системы. Перед выполнением данных операций рекомендуется выполнить резервное копирование вашей операционной системы и файлов, включая реестр. При необходимости обратитесь за консультацией к специалисту по компьютерным системам. Компания Esri не может гарантировать результаты, связанные с неправильным изменением параметров в ходе выполнения данных инструкций. Поэтому будьте внимательны и выполняйте все действия на свой собственный риск.
\\HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
Данная строка содержит параметры запуска системы Windows. В данной строке найдите параметр SharedSection. Значение по умолчанию 1024,3072,512. Третьим аргументом является максимальная динамическая память, отведенная для не интерактивных рабочих столов, ограничена параметром инициализации Windows с именем SharedSection. По умолчанию используется значение от 512 килобайт до одного мегабайта. При такой настройке сервис ArcSDE примет примерно 56 подключений. Измените максимальный объем динамической памяти для неинтерактивных рабочих столов до двух мегабайт – это позволит сервису ArcSDE принимать до 270 подключений. Значение SharedSection станет равным 1024,3072,2048 при увеличении объема динамической памяти до двух мегабайт. Увеличьте третье значение параметра SharedSection с 512 до 1024. Это удвоит количество процессов gsrvrs для сервиса ArcSDE.
SharedSection=1024,3076,1024
После изменения SharedSection сервер необходимо перезагрузить.
- Серверы SQL с использованием аутентификации Windows для подключения к многопользовательской базе данных.
Пользователи, подключающиеся к сервисам ArcSDE с использованием аутентификации Windows, могут вести себя по разному. Когда сервис ArcSDE использует gsrvr из соединения с аутентификацией Windows, данный gsrvr не располагается на одном рабочем столе с процессом сервера, giomgr.exe, а получает свой собственный рабочий стол (неинтерактивный) размером 512 KB. Множественные подключения с аутентификацией Windows с одной машины получают один рабочий стол, а подключения с разных машин получают новые рабочие столы. При работе только с режимом аутентификации Windows можно получить больше подключений ArcSDE путем уменьшения размера динамической памяти для интерактивных и неинтерактивных рабочих столов, вместо указанного выше увеличения.
- Положения, с сервисами терминала или использованием Citrix в их сервере ArcSDE
Сервисы терминала сокращают пул глобальной памяти рабочего стола с 48 MB до 20 MB. Это означает, что создается меньше рабочих столов. При работе в данной среде может быть увеличен третий параметр SharedSection, но при создании различных сервисов, не являющихся LocalSystem, будьте внимательны. Помните, что при каждом запуске сервиса, не являющегося LocalSystem, для нового рабочего стола он использует память глобального пула. Не рекомендуется использованием положениями сервера SQL Server сервисов терминала с подключением ArcSDE на основании аутентификации Windows. Если необходимо запустить данную конфигурацию и при этом возникают сложности с поддержкой достаточного количества ArcSDE подключений, то решением проблемы может стать разрешение взаимодействия сервиса ArcSDE с рабочим столом. В данном случае параметры SharedSection не изменяются.
- Измените значение для параметра SharedSection в реестре.
- Параметр SERVER_CONFIG CONNECTIONS
Если вы постоянно достигаете максимального количества одновременных подключений, разрешенного параметром инициализации CONNECTIONS, заданным в системной таблице SERVER_CONFIG (SDE_SERVER_CONFIG для базы геоданных в SQL Server и PostgreSQL), то вам необходимо увеличить значение данного параметра. По умолчанию используется значение 48. Дополнительную информацию см. в разделе Файл giomgr defs и системная таблица SERVER_CONFIG.
Вы можете изменить параметр инициализации CONNECTIONS в таблице SERVER_CONFIG с использованием команды администрирования sdeconfig.Примечание:
Прямые подключения исчисляются до значения, равного количеству подключений, заданному в параметре CONNECTIONS. Другими словами, количество прямых подключений и подключений сервиса ArcSDE не может быть больше значения, определенного параметром CONNECTIONS.
- Для просмотра значения параметра CONNECTIONS используйте в командной строке команду sdeconfig –o list. Синтаксис этой команды выглядит следующим образом
sdeconfig –o list [–p <SDE_admin_password>]
- Измените значение параметра CONNECTIONS с использованием команды sdeconfig –o alter.
sdeconfig –o alter –v <Property_Name=Value,...> [–i <service] [–s <server_name>] [–D <database>] –u <SDE_admin_user> [–p <SDE_admin_password>] [–N] [–q]
- Для просмотра значения параметра CONNECTIONS используйте в командной строке команду sdeconfig –o list. Синтаксис этой команды выглядит следующим образом