ArcSDE サービスのトラブルシューティング
ArcSDE サービスの起動に関連する問題のほとんどは、システム環境の問題により発生します。多くの場合は、ソフトウェアのインストールまたは設定時に、重要な手順を実行しなかったことが原因です。
以下のトラブルシューティングのヒントでは、何種類かの管理コマンドに言及しています。コマンドの使用方法については、ArcSDE アプリケーション サーバと共にインストールされている『ArcSDE コマンド リファレンス』をご参照ください。
問題の特定
-
Windows イベント ビューア
Windows オペレーティング システムでは、Windows イベント ビューアを使用して問題を特定することができます。Windows イベント ビューアは、ArcSDE の起動時の問題を調査するのに役立つ情報も提供します。Windows イベント ビューアを使用するには、次の手順に従います。
- [コントロール パネル] を開きます。
- [管理ツール] をダブルクリックします。
- [コンポーネント サービス] をクリックします。
- [イベント ビューア] を展開し、[アプリケーション] をクリックします。
- [種類] 列で赤丸の×アイコンを探し、その [ソース] 列に ArcSDE サービス名が表示されているかどうか確認します。ArcSDE サービスのエントリをダブルクリックし、[イベントのプロパティ] ウィンドウを開きます。
- このウィンドウには、問題の説明が含まれています。
-
エラー ログ ファイル
ArcSDE およびサポートされているすべての DBMS(Database Management System)は、それらのアクティビティを追跡するために、ASCII ログ ファイルにイベントのメッセージを書き込みます。これらのログ ファイルを調べて、発生したエラーを追跡することができます。ArcSDE は、giomgr_<サービス>.log と sde_<サービス>.log の 2 つのログ ファイルにメッセージを書き込みます(ダイレクト コネクションを使用している場合、アプリケーションはエラー メッセージをアプリケーション サーバの sde_<サービス>.log ファイルに書き込むのではなく、sdedc_<dbms>.log ファイルに書き込みます)。
- giomgr_<サービス>.log ファイル
giomgr_<サービス>.log ファイルは、giomgr プロセスのすべてのアクティビティを記録する ASCII ファイルです(<サービス> は ArcSDE サービスの名前です)。ユーザが ArcSDE サービスに接続する、または接続を試みるたびに、メッセージが記録されます。ユーザが切断する際には、別のメッセージが記録されます。giomgr_<サービス>.log ファイルには、ArcSDE サービスの起動と終了の手続きも記録されます。ただし、このファイルには具体的なエラー メッセージは記録されず、giomgr プロセスの動作が示されるだけです。
- sde_<サービス>.log ファイル
gsrvr プロセスで問題が発生するたびに、ArcSDE サービスは sde_<サービス>.log ファイルにエントリを記録します。これらのメッセージは、警告の場合もあれば、ユーザが対処しなければならない ArcSDE サービスのエラーを表すこともあります。sde_<サービス>.log ファイルを調べる際には、このファイルにメッセージが書き込まれるのは、ArcSDE サービス プロセスでエラーが発生した場合であることに注意してください。ArcSDE アプリケーションは ArcSDE 関連の問題を報告することがありますが、それらは sde_<サービス>.log ファイルに書き込まれません。これは、エラーが ArcSDE クライアント側で発生していて、サーバ側では発生していないためです。9.3 以降では、不正な形式の接続リクエストが送信されたときの情報も sde_<サービス>.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 アドレスがリストされていることに注意してください。このメッセージで「Could Not Get XDR Request(XDR リクエストを受信できませんでした)」が表示されたのは、接続リクエストの長さが無効であるために、giomgr で受信または解釈ができなかったためです。sde_<サービス>.log ファイルは、ArcSDE サービスが停止して再起動するたびに切り捨てられます。
- DBMS のエラー ログ ファイル
DBMS はそれぞれ独自の方法でエラーを記録します。DBMS がエラーを記録する方法については、DBMS の管理ガイドをご参照ください。
- giomgr_<サービス>.log ファイル
UNIX サーバでの ArcSDE サービスのトラブルシューティング
システム パス変数の問題
システム パス変数が正しく設定されていない、またはまったく設定されていない場合、次のエラーが発生する可能性があります。DBMS ごとに用意された 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
- ライブラリ パス環境変数に必要な DBMS ライブラリのディレクトリが含まれていない場合には、次のようなエラー メッセージが表示されます。
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.
一時ファイルの権限の問題
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/<サービス名> および /tmp/<サービス名>.lock を削除します。たとえば、サービス名が esri_sde の場合は、/tmp/esri_sde ファイルと /tmp/esri_sde.lock ファイルを削除します。これらのファイルを削除するには、ルート ユーザとしてログインしなければならない場合があります。
ファイルが /tmp から削除されている場合
ArcSDE サービスが起動された後、/tmp ディレクトリに格納されていたファイルが削除された場合、ArcSDE サービスはユーザが接続または切断に失敗します。ArcSDE サービスは、/tmp ディレクトリに作成される UNIX ソケット プロトコル ファイルを使用します。原則として、/tmp ディレクトリのファイルは削除しないでください。ただし、どうしても削除しなければならない場合は、その前に ArcSDE サービスを終了してください。この方法の詳細は、「Linux または UNIX でのローカル ArcSDE サービスの停止」「Windows でのローカル ArcSDE サービスの停止」「リモート ArcSDE サービスの停止」をご参照ください。
DBMS に関連する問題
- DBMS が起動していない場合は、次のようなエラー メッセージが表示されます。
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.
サポート対象の DBMS のほとんどでは、ArcSDE サービス管理者がデータベースに存在する必要があります。ArcSDE サービス管理者が存在しない場合は、データベース管理者が作成する必要があります。
Solaris サーバでの SE_OUT_OF_MUTEXES (-109) エラー
Solaris オペレーティング システムでは、ArcSDE が使用する POSIX 共有セマフォを実装するファイルを使用します。オペレーティング システムがクラッシュした、または停電が発生した後にこれらのファイルが残っていると、問題の原因になることがあります。これらのファイルの場所は、Solaris オペレーティング システムによって制御されます。これらのファイルは、次に示すように、/tmp または /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」エラーが発生した場合は、おそらく 2 つの共有セマフォ ファイルが存在することが原因です。/tmp または /var/tmp ディレクトリでこれらのファイルが見つかった場合は、それらを削除してから、再度 ArcSDE サービスを起動してください。
Windows サーバでの ArcSDE サービスのトラブルシューティング
次に、Windows での ArcSDE サービス の起動時によく発生するエラーと、それらのエラー番号、発生する場所、考えられる原因を示します。
997 esri_sde サービス起動時のエラー
このエラーは、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]\[サービス名]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\[サービス名]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\[サービス名]
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[サービス名]
- サーバ コンピュータを再起動して、レジストリの変更内容を有効にします。
- [コマンド プロンプト] に「set」と入力して、PATH 環境変数の最初のエントリが「%SDEHOME%\bin」であることを確認します(PATH=%SDEHOME%\bin; ...)。
- %SDEHOME%\etc\services.sde ファイルの ArcSDE サービス名とポート番号が、C:\WINNT または WINDOWS\system32\drivers\etc\services ファイルのエントリと一致していることを確認します。
- %SDEHOME%\bin ディレクトリへ移動し、sdeservice -o create コマンドを使用して、sdeservice を再作成します。
- sdeservice -o list コマンドを実行して、サービス名と SDEHOME パスが正しいことを確認します。
SDEHOME パスに 2 つの円記号(\\)が含まれている、またはパスの最後に円記号が 1 つ付いている場合は、手動で削除します。
- [コマンド プロンプト] で、sdemon -o start コマンドまたは net start <サービス名> コマンドを使用して、ArcSDE サービスを再起動します。
1068 依存関係に関するエラー
ArcSDE サービスの接続先の DBMS が見つからないことを意味します。主な原因は次のとおりです。
- DBMS サービスが起動されていない
- DBMS サーバが削除されている
- ArcSDE サービスの作成時に入力された DBMS の接続情報が正しくない
DBMS サーバが存在し、サービスが起動され、DBMS の接続情報が正しいことを確認します。それでも問題が解決されない場合は、sdeservice コマンドを使用して、ArcSDE サービスをいったん削除してから再作成してください。
1069 ログインに関するエラー
このエラーは一般に、ArcSDE サービスを起動した Windows ユーザが Administrators または Power Users グループに属していないことを意味します。また、パスワードが正しくない可能性もあります。
ArcSDE サービスの起動にシステム管理者アカウントを使用しない場合は、そのユーザ アカウントが Administrators または Power Users グループのメンバであることを確認してください。
1072 レジストリがビジー
レジストリの ArcSDE サービスのエントリに問題があります。おそらく、sdeservice コマンドが delete オプションで実行されたか、サービスがレジストリ エディタで開かれていることが原因です。あるいは、OLE DB(Object Linking and Embedding Database)プロバイダに問題があることも考えられます。
1075 サービスの依存関係が削除されている
ArcSDE サービスが接続先の DBMS サービスを特定できないことを意味します。DBMS サービスが存在し、起動していることを確認してください。それでも問題が解決されない場合は、sdeservice コマンドを使用して、ArcSDE サービスをいったん削除してから再作成してください。
2140 Windows の内部エラー
ArcSDE サービスが起動プロセスを完了できないことを意味します。エラー ログ ファイル(%SDEHOME%\etc\sde_<sde インスタンス>.log)で、ArcSDE サービスが起動できない原因の手がかりがないか調べてください。
原因として考えられるものとその解決策
- システムの services ファイルにインスタンスのエントリが存在しない可能性があります。システムの services ファイルで、起動しようとしている ArcSDE インスタンスに対応するサービス エントリを確認してください。
- システムの services ファイルと ArcSDE サービス ファイルのエントリが一致していない可能性があります。システムの services ファイルのエントリが、%SDEHOME%\etc\services.sde ファイルのエントリと同一であることを確認してください。
- システムの services ファイルの最後の行が EOL(End-of-Line)記号で終わっていないと、その行は読み取られません。問題のエントリがシステムの services ファイルの最後の行にある場合は、その行がキャリッジ リターンで終わっていることを確認してください。
- TCP/IP コンポーネントが破損している可能性があります。TCP/IP コンポーネントを再インストールしてください。具体的な方法については、Windows のドキュメントまたは Microsoft サポート サイトをご参照ください。
- ArcSDE サービス管理者のパスワードが正しく入力されていない可能性があります。その場合は、sdeservice -o modify -r SDE_DBA_PASSWORD コマンドで修正してください。
- Windows 認証ユーザとして ArcSDE サービスからジオデータベースに接続しようとしているが、ArcSDE サーバの gsrvr.exe が含まれているフォルダにアクセスする権限が Windows 認証ユーザにない、という可能性もあります。Windows アカウントを使用して接続を確立するには、ArcSDE サーバの Windows 管理者がそのアカウントに %SDEHOME%\<dbms>exe フォルダへの READ 権限と EXECUTE 権限を割り当てる必要があります。
gsrvr.exe - DLL の初期化に失敗または gsrvr.exe - アプリケーション エラー:アプリケーションが適切な初期化に失敗
Windows では、ArcSDE サービスは非対話型デスクトップとして起動します。非対話型デスクトップに割り当てられるヒープ メモリの最大サイズは、SharedSection という名前の Windows 初期化パラメータによって制限されます。このエラー メッセージが返された場合は、SharedSection パラメータを変更する必要があります。
SERVER_CONFIG(SQL Server および PostgreSQL では sde_server_config)テーブルの CONNECTIONS パラメータも、ジオデータベースに対する同時接続数を制限しているため、この値を増やさなければならない場合があります。
-
ヒープ メモリ
すべてのデスクトップ(対話型および非対話型)で利用可能なヒープ メモリの最大サイズは、48MB です。メモリの量には限りがあるため、SharedSection パラメータを調整する必要があります。ArcSDE サービスをドメイン アカウントで起動した場合、gsrvr.exe は ArcSDE サービスに対し、デスクトップから 512KB の非対話型デスクトップ ヒープを割り当てます。ArcSDE サービスを LocalSystem アカウントで起動した場合、gsrvr.exe は LocalSystem として実行されるすべてのサービスに対し、共有デスクトップから 512KB の非対話型デスクトップ ヒープを割り当てます。ArcSDE サービスを LocalSystem アカウントで起動し、デスクトップとの対話を有効にした場合、gsrvr.exe はデフォルト デスクトップから 3MB の対話型デスクトップ ヒープを割り当てます。
解決策: 解決策はオペレーティング システムによって異なります。現時点では、単一のデスクトップで使用されているメモリ量や、グローバル プールに残っているメモリ量を割り出す方法はありません。Windows リソース キットのユーティリティである oh.exe を使用して、使用中のデスクトップの数を監視します。
- レジストリの SharedSection パラメータを変更します。
必要な gsrvr の数を見積ります。ArcGIS for Desktop Basic、ArcGIS for Desktop Standard、ArcExplorer などのクライアントでは、通常、gsrvr は単一の ArcSDE コネクションです。ArcIMS では、gsrvr の数はサービスの種類に依存します。空間サーバ マシンの CPU につき仮想サーバ スレッドが 2 つであるとすれば、一般的な式は次のようになります。
(2 image service threads * total CPUs) + (number of query server threads)
例を示します。(2 * 8) + 8 = 24 この見積りでは、イメージ サービスとクエリ サービスを使用することと、すべての AXL が同じユーザおよびデータベースで ArcSDE サーバに接続することも前提としています。AXL で参照するデータベースまたはユーザが異なる場合、式は次のようになります。
(#databases * #mapservice threads)+ (#dbs*#queryservices)
gsrvrs の値が 64(ArcSDE SERVER_CONFIG テーブルのデフォルトの CONNECTIONS 設定)を超える場合は、レジストリで 3 番目の SharedSection パラメータの値を増やすことを検討してください。
このパラメータは、Windows レジストリ エディタを使用して変更します。SharedSection を変更するには、MS_DOS のプロンプトで入力行に regedit と入力し、[OK] をクリックします。次のレジストリ キーパスへ移動して、Windows レジストリ キーをダブルクリックします。注意:このステップの手順には、オペレーティング システムの基本的な部分に対する変更が含まれています。先へ進む前に、レジストリを含め、オペレーティング システムとファイルのバックアップを実行することをお勧めします。必要に応じて、コンピュータ システムの専門家に相談してください。Esri では、これらの手順を実行するときに変更を誤った場合の結果について保証いたしません。したがって、十分に注意し、ご自身の判断で行ってください。
\\HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
この文字列には、Windows のスタートアップ パラメータが含まれています。この文字列に含まれている SharedSection パラメータを探します。デフォルト値は「1024,3072,512」です。3 つ目の引数は、非対話型デスクトップに割り当てられるヒープ メモリの最大サイズです。デフォルトでは、512KB または 1MB に設定されています。この設定で、ArcSDE サービスは約 56 個の接続に対処できます。非対話型デスクトップの最大ヒープ サイズを 2MB に増やすと、ArcSDE サービスは最大で 270 個の接続に対処できます。非対話型デスクトップのヒープ サイズを 2MB に設定すると、SharedSection パラメータの値は「1024,3072,2048」になります。SharedSection パラメータの 3 つ目の値を 512 から 1024 に変更すると、ArcSDE サービスが生成できる gsrvr の数は 2 倍になります。
SharedSection=1024,3076,1024
SharedSection パラメータを変更した後は、サーバを再起動する必要があります。
- エンタープライズ ジオデータベース接続に Windows 認証を使用する SQL Server 環境
ArcSDE サービスへの接続に Windows 認証を使用すると、接続時の振舞いが異なる場合があります。ArcSDE サービスが Windows 認証を使用する接続から gsrvr を生成する場合、その gsrvr は、サーバ プロセスと同じデスクトップではなく、独自のデスクトップ(非対話型)から 512KB を確保します。同じマシンからの複数の Windows 認証を使用する接続については、同じデスクトップからヒープが割り当てられますが、異なるマシンからの接続については、新しいデスクトップから割り当てられます。Windows 認証のみを使用する場合は、上記のように対話型および非対話型デスクトップのヒープ サイズを増やすのではなく、ヒープ サイズを減らすと、より多くの ArcSDE 接続に対処できる可能性があります。
- ArcSDE サーバでターミナル サービスまたは Citrix を導入している環境
ターミナル サービスにより、デスクトップ グローバル メモリ プールのサイズは 48MB から 20MB に減ります。これは、作成されるデスクトップの合計数が減ることを意味します。この環境を使用する場合は、SharedSection パラメータの 3 つ目の値を増やすことができますが、作成される非 LocalSystem サービスの数に注意する必要があります。非 LocalSystem サービスが起動するたびに、グローバル メモリ プールから新しいデスクトップにメモリが割り当てられることを覚えておいてください。SQL Server 環境で Windows 認証の ArcSDE 接続を使用する場合、ターミナル サービスを使用することは推奨されません。この設定が必要で、十分な数の ArcSDE 接続をうまくサポートできない場合は、ArcSDE サービスがデスクトップとやりとりできるようにすると、問題が解決することがあります。この場合は、SharedSection パラメータの値を変更しないでください。
- レジストリの SharedSection パラメータを変更します。
- SERVER_CONFIG CONNECTIONS パラメータ
SERVER_CONFIG システム テーブル(SQL Server と PostgreSQL のジオデータベースでは SDE_SERVER_CONFIG)の CONNECTIONS 初期化パラメータによって許可されている同時接続の最大数を超える状況が続いた場合は、このパラメータの値を増やす必要があります。デフォルト値は 48 です。詳細については、「giomgr.defs ファイルと SERVER_CONFIG システム テーブル」をご参照ください。
SERVER_CONFIG テーブルの CONNECTIONS 初期化パラメータは、sdeconfig 管理コマンドを使って変更することができます。注意:ダイレクト コネクションの数は CONNECTIONS パラメータのコネクションの数に制限されます。つまり、ダイレクト コネクションと ArcSDE サービス コネクションの数が CONNECTIONS パラメータの値を超えることはできません。
- CONNECTIONS パラメータの現在の値を確認するには、[コマンド プロンプト] で sdeconfig -o list コマンドを入力します。このコマンドの構文は次のとおりです。これにより、SERVER_CONFIG テーブルのすべての初期化パラメータとそれらの値が返されます。
sdeconfig –o list [–p <SDE_admin_password>]
- CONNECTIONS パラメータの値を変更するには、sdeconfig -o alter コマンドを使用します。この場合、<Property_Name> は CONNECTIONS、<Value> は同時接続の新しい最大数です。sdeconfig コマンドの使用の詳細については、ArcSDE アプリケーション サーバのインストールに付属している『ArcSDE コマンド リファレンス』をご参照ください。
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 コマンドを入力します。このコマンドの構文は次のとおりです。