DB2 に格納されたジオデータベースのログ ファイル テーブルの設定オプション
ArcSDE のログ ファイルには、共有、セッションベース、スタンドアロン、セッションベースまたはスタンドアロン ログ ファイルのプールの 4 つのオプションがあります。このトピックでは、それぞれのオプションについて説明します。
DBMS(データベース管理システム)の ArcSDE ログ ファイル設定は、ほとんどの場合、デフォルトの設定で十分であり、これは推奨の設定です。
DB2 の場合、デフォルトのログ ファイル テーブル設定は共有 ArcSDE ログ ファイルです。
ログ ファイルのオプションは、SERVER_CONFIG テーブルと DBTUNE テーブルの特定のパラメータを使用して設定されます。
これらのテーブルのパラメータは、それぞれ sdeconfig コマンドと sdedbtune コマンドを使用して変更します。これらのパラメータの構文については、『ArcSDE コマンド リファレンス』をご参照ください。
共有ログ ファイル
共有ログ ファイルは、同じユーザとして接続するすべてのセッションで共有されます。複数のユーザが同じユーザ アカウントで接続する場合、それらのセッションはすべて、同じログ ファイルのデータ テーブルに対してレコードを挿入または削除します。
共有ログ ファイルを使用する場合
共有ログ ファイルは、同時セッションの数が多く、各セッションが個々の DBMS ユーザ アカウントを使用して接続を行う場合に使用します(これは、ジオデータベースへの接続の確立で推奨される方法です)。
共有ログ ファイルを使用しない場合
同じログインで複数の接続を生成する ArcMIS サービスを使用する場合など、同じログインにより多数の接続が確立される場合は、共有ログ ファイルを使用しないようにします。この場合、競合により SDE_LOGFILE_DATA テーブルへの待ち時間が発生する可能性があります。このような場合は、セッションベース ログ ファイルを使用できます。
共有ログ ファイルのために作成されるテーブル
このオプションで使用されるログ ファイル テーブルは、SDE_LOGFILES と SDE_LOGFILE_DATA です。これらは、ユーザが閾値を超える選択を最初に行ったときに、接続ユーザのスキーマに作成されます。ArcGIS Desktop では、この閾値は 100 レコードです。
SDE_LOGFILES には、作成される各選択セット(ログ ファイル)に関する情報が格納されます。このテーブルの logfile_name 列と logfile_id 列はログ ファイルの名前を一意に識別し、logfile_id 列はログ ファイル レコードを SDE_LOGFILE_DATA テーブルにリンクします。SDE_LOGFILE_DATA テーブルには、選択したレコードの logfile_data_id とフィーチャ ID が含まれます。
すべてのレコードは、選択セットが解除されるとすぐに削除され、SDE_LOGFILE_DATA テーブルのサイズが大きくなりすぎることを防ぎます。SDE_LOGFILES テーブルは、ユーザのセッションが終了するときに空になります。SDE_LOGFILE_DATA と SDE_LOGFILES は、どちらもユーザのスキーマに残ります。
共有ログ ファイルを使用するための設定
共有ログ ファイル テーブルを作成するには、SERVER_CONFIG テーブルで以下の設定が必要です。
- MAXSTANDALONELOGS = 0
- ALLOWSESSIONLOGFILE = FALSE
- LOGFILEPOOLSIZE = 0
共有ログ ファイル テーブルとインデックスの格納を制御する設定
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメータがあります。共有ログ ファイルを使用するためにこれらのパラメータを設定する必要はありませんが、SDE_LOGFILES および SDE_LOGFILE_DATA テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメータを設定することができます。
DB2 で共有ログ ファイル テーブルとインデックスの格納を制御するパラメータは、次のとおりです。
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD _STORAGE
- LF_INDEXES
- LF_STORAGE
これらのパラメータの詳細については、「DB2 の DBTUNE コンフィグレーション パラメータ」をご参照ください。
共有ログ ファイルに必要な権限
ログ ファイル テーブルは接続するユーザが所有するため、ユーザにはテーブルなどの必要なデータ オブジェクトを作成するための権限が付与されている必要があります。これは、ユーザがジオデータベースに読み取り専用アクセスを行う場合、または ArcSDE が読み取り専用に設定されている場合も同様です。これらの権限が付与されていない場合、ユーザには特定のクライアント アプリケーションで閾値のサイズを超える選択セットを最初に作成したときに、エラー メッセージが返されます。ただし、一度ユーザの SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルが作成されたら、ArcSDE 管理者はこれらの権限を取り消すことができます。
たとえば、Ian は都市計画者で、ジオデータベースからデータを選択して自分の作業に関連する分析だけを実行します。したがって、Ian は読み取り専用のユーザと考えられます。ただし、Ian は ArcSDE ジオデータベースに SDE_LOGFILES と SDE_LOGFILE_DATA テーブルを作成するため、ジオデータベースにテーブルを作成できる必要があります。
Ian にテーブルを作成する権限を無期限に付与する代わりに、ArcSDE 管理者はジオデータベースに Ian としてログインし、閾値を超える選択を行ってから、Ian のテーブルを作成する権限を削除することにします。
DB2 で共有ログ ファイル テーブルを使用する際に必要な権限は、次のとおりです。
- CONNECT
- CREATETAB
- IMPLICIT_SCHEMA
CONNECT 権限はデフォルトですべてのユーザに割り当てられます。したがって、この権限を明示的に割り当てる必要があるのは、この権限を PUBLIC から削除した場合だけです。
セッションベース ログ ファイル
セッションベース ログ ファイル データ テーブルは単一のセッションに割り当てられ、複数の選択セット(ログ ファイル)を含む場合があります。ログインする各セッションには、選択のための一連のテーブルが必要です。
セッションベース ログ ファイルを使用する場合
セッションベース ログ ファイルは、ジオデータベースに対して同じログインで多数の同時接続を行う場合に使用します。
セッションベース ログ ファイルを使用しない場合
データベースに接続する読み取り専用のユーザがいる場合、セッションベース ログ ファイルは使用できません。
セッション テーブルは、セッションが終了するときにユーザのスキーマから削除されます。つまり、セッション テーブルを必要なときに再作成する必要があり、ユーザにはセッションベース ログ ファイル テーブルを作成できるようにテーブルを作成する権限が必要です。
セッションベース ログ ファイルのために作成されるテーブル
SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_SESSION<SDE_ID> の 3 つのテーブルが作成されます。実際には、SDE_LOGFILE_DATA はこの場合は使用されませんが、自動的に作成されます。SDE_LOGFILES テーブルには、選択セットの情報と、SDE_SESSION テーブルの名前に付加されているセッション タグの <SDE_ID> が格納されます。SDE_SESSION テーブルには、選択されたセットのフィーチャ ID とログ ファイル ID が格納されます。
SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルは、ジオデータベースに残ります。SDE_LOGFILES テーブルは、アプリケーションの接続が切断されたときに空になります。SDE_SESSION<SDE_ID> テーブルは、接続しているアプリケーションがログ ファイルを削除したときに空になります。テーブル自体はセッションの終了時に削除されます。
セッションベース ログ ファイルを使用するための設定(プールなし)
ArcSDE 管理者によって所有されないセッションベース ログ ファイル テーブルを作成するには、SERVER_CONFIG テーブルで以下の設定が必要です。
- ALLOWSESSIONLOGFILE = TRUE
- MAXSTANDALONELOGS = 0
- LOGFILEPOOLSIZE = 0
セッションベース ログ ファイル テーブルとインデックスの格納を制御する設定
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメータがあります。セッションベース ログ ファイルを使用するためにこれらのパラメータを設定する必要はありませんが、SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_SESSION テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメータを設定することができます。
DB2 でセッションベース ログ ファイル テーブルとインデックスの格納を制御するパラメータは、次のとおりです。
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD_STORAGE
- LF_INDEXES
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
これらのパラメータの詳細については、「DB2 の DBTUNE コンフィグレーション パラメータ」をご参照ください。
セッションベース ログ ファイルに必要な権限
セッションベース ログ ファイルは、接続しているセッションを開始したユーザによって所有されます。つまり、ユーザには必要なデータベース オブジェクトを作成する権限が必要です。
DB2 でセッションベース ログ ファイル テーブルを使用するすべてのユーザには、以下の権限が必要です。
- CONNECT
- CREATETAB
- IMPLICIT_SCHEMA
スタンドアロン ログ ファイル
スタンドアロン ログ ファイルは、アプリケーションが保存する必要がある選択セットごとに、セッションによって作成されます。
スタンドアロン ログ ファイルが生成するテーブルの数は、すべてのログ ファイル オプションの中で最も多くなります。これらのログ ファイル テーブルを格納する十分な容量を構成する必要があることに注意してください。DBTUNE パラメータの SESSION_STORAGE と SESSION_INDEX は、ほとんどの DBMS でスタンドアロン ログ ファイルのテーブルとインデックスの領域を割り当てます。
スタンドアロン ログ ファイルを使用する場合
すべてのデータベース ユーザにジオデータベースにテーブルを作成する権限を付与しない場合は、スタンドアロン ログ ファイル テーブルを使用できます。
スタンドアロン ログ ファイル テーブルの利点の 1 つは、選択セットを解除したときに、SDE_LOGDATA テーブルの選択レコードが削除されずに切り捨てられることです。切り捨てる(Truncate)操作は削除よりも高速に実行できます。これは、内部的に発行される SQL(Structured Query Language)ステートメントがないためです。ただし、このパフォーマンスに関する利点が、各レイヤで個別にログ ファイル テーブルを作成および保存するコストを上回ることはほとんどありません。
スタンドアロン ログ ファイルを使用しない場合
データベースに接続する読み取り専用のユーザがいる場合、スタンドアロン ログ ファイルは使用できません。SDE_LOGDATA<SDE_ID> テーブルは、接続が終了するときにユーザのスキーマから削除されます。レイヤに対する選択が閾値を超えるたびにテーブルを作成し直す必要があり、ユーザがジオデータベースに接続する場合は、ユーザから CREATE 権限を削除することができません。
スタンドアロン ログ ファイルのために作成されるテーブル
セッションによって作成された閾値を超える選択セットごとに、各レイヤに新しい SDE_LOGDATA<SDE_ID> テーブルが作成されます。このため、SDE_LOGDATA テーブルの競合が発生しません。ただし、新しいテーブルは選択セットごとに作成され、セッションが終了するときに削除されるため、多数の CREATE TABLE と DROP TABLE の SQL ステートメントが生成されます。
SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルは、接続ごとにユーザのスキーマに作成されます。SDE_LOGFILES テーブルには選択セットのプロパティが格納されますが、SDE_LOGFILE_DATA テーブルは使用されません。
レイヤで選択セットが不要になると、SDE_LOGDATA<SDE_ID> テーブルは切り捨てられます。SDE_LOGDATA<SDE_ID> テーブルは、セッションの終了時に削除されます。SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルは、ユーザが接続を終了した後もユーザのスキーマに残りますが、SDE_LOGFILES テーブルは空になります。
スタンドアロン ログ ファイルを使用するために必要な設定(プールなし)
作成可能なスタンドアロン ログ ファイルの数を指定する SERVER_CONFIG テーブルのパラメータは、MAXSTANDALONELOGS です。MAXSTANDALONELOGS のデフォルト設定は 0 なので、スタンドアロン ログ ファイルを使用する場合は、各ユーザが作成可能なスタンドアロン ログ ファイルの数を MAXSTANDALONELOGS に指定する必要があります。
ArcSDE 管理者によって所有されないスタンドアロン ログ ファイル テーブルを作成するには、以下の設定が必要です。
- MAXSTANDALONELOGS = <ユーザが作成できる SDE_LOGDATA<SDE_ID> テーブルの最大数>
- LOGFILEPOOLSIZE = 0
スタンドアロン ログ ファイルは、MAXSTANDALONELOGS サーバ コンフィグレーション パラメータで定義されたセッションの割り当てをすべて使い果たすまで使用されます。ユーザがスタンドアロン ログ ファイルを使い果たした場合(つまり、アプリケーションが MAXSTANDALONELOGS で許可されている数よりも多くの選択セット(ログ ファイル)を同時に作成する必要がある場合)、ALLOWSESSIONLOGFILE が TRUE に設定されている場合のみ、ArcSDE はセッションベース ログ ファイルを作成しようとします。セッションベース ログ ファイルを作成できない場合は、共有ログ ファイルの作成を試みます。共有ログ ファイルを作成できず、スタンドアロン ログ ファイルを使い果たした場合は、ArcSDE がエラーを返します。
ログ ファイルの使用順序の例については、「ArcSDE ログ ファイルはどのようにして決定されるか」をご参照ください。
スタンドアロン ログ ファイル テーブルとインデックスの格納を制御する設定
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメータがあります。スタンドアロン ログ ファイルを使用するためにこれらのパラメータを設定する必要はありませんが、SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_LOGDATA テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメータを設定することができます。
DB2 でスタンドアロン ログ ファイル テーブルとインデックスの格納を制御するパラメータは、次のとおりです。
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD_STORAGE
- LF_INDEXES
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
これらのパラメータの詳細については、「DB2 の DBTUNE コンフィグレーション パラメータ」をご参照ください。
スタンドアロン ログ ファイルに必要な権限
スタンドアロン ログ ファイルを使用するユーザ アカウントは、必要なデータベース オブジェクトを作成できなければなりません。共有ログ ファイルと異なり、ログ ファイル テーブルが作成された後にユーザの権限を取り消すことはできません。これは、セッションが十分に大きな選択セットを作成するたびに、ユーザが所有する新しいテーブルがレイヤごとに作成されるためです。
DB2 でスタンドアロン ログ ファイルを使用するすべてのユーザには、以下の権限が必要です。
- CONNECT
- CREATETAB
- IMPLICIT_SCHEMA
CONNECT 権限はデフォルトですべてのユーザに割り当てられます。したがって、この権限を明示的に割り当てる必要があるのは、この権限を PUBLIC から削除した場合だけです。
ArcSDE 管理者が所有するログ ファイルのプール
ArcSDE 管理者は、他のユーザがチェックアウトして使用できるログ ファイルのプールを作成できます。これらのプールは、セッションベースまたはスタンドアロン ログ ファイルのいずれかに使用できます。共有ログ ファイルを ArcSDE ログ ファイル プールからチェックアウトすることはできません。
ArcSDE ログ ファイルのプールを使用することで、データベースにオブジェクトを作成するために必要な権限をユーザに付与する必要がなくなります。
ArcSDE 管理者が所有するログ ファイルのプールを使用する場合
ログ ファイルのプールは、ユーザに各自のスキーマにログ ファイル テーブルを作成する権限を与えることができない場合に使用します。ただし、ユーザにはセッションを作成する権限またはデータベースに接続する権限が必要です。
プール リソースをより効果的に利用するには、プールでセッションベース ログ ファイルを使用します。これは、セッションベース ログ ファイルは複数の選択セットを単一のテーブルに書き込みますが、スタンドアロン ログ ファイルは対象の選択セットごとに 1 つのテーブルを使用するためです。
ArcSDE 管理者が所有するログ ファイルのプールを使用しない場合
全体として、ログ ファイルのプールを使用する場合は必要な保守作業が少し増えます。これは、必要なログ ファイル テーブルの数を見積もる必要があり、プールのサイズまたは使用するプールの数の調整を行うためです。ログ ファイル プールのサイズが大きい場合や、ログ ファイル プールの数が多い場合は、パフォーマンスに悪影響が出る可能性があることに注意してください。
ArcSDE 管理者が所有するログ ファイルのプールのために作成されるテーブル
ArcSDE 管理者のユーザ スキーマに作成される SDE_LOGPOOL_<table_ID> テーブルの数は、SERVER_CONFIG テーブルの LOGFILEPOOLSIZE パラメータに設定される値によって決まります。たとえば、LOGFILEPOOLSIZE を 5 に設定した場合、ArcSDE 管理者のスキーマには次のテーブルが作成されます。
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
ArcSDE 管理者のスキーマの追加テーブル SDE_LOGFILE_POOL には、ArcSDE セッションの SDE_ID とテーブル ID が記録されます。SDE_LOGPOOL テーブルの名前に含まれる <table_ID> は、SDE_LOGFILE_POOL テーブルの table_ID 列の値に対応します。
セッションベース ログ ファイルのプールを使用する場合は、閾値を超える選択を作成するセッションごとに、SDE_LOGFILE_POOL テーブルにレコードが 1 つ追加され、セッションは SDE_LOGPOOL_<table_ID> テーブルの 1 つに割り当てられます。同じセッションで追加のログ ファイルが作成される場合(たとえば、1 つの ArcMap セッションで 300 レコードの 2 つ目の選択セットが作成された場合)、新しいログ ファイル(選択セット)は同じ SDE_LOGPOOL テーブルに追加されます。
ログ ファイルが消去されるときに、セッションにチェックアウトされている SDE_LOGPOOL テーブルは空になります。たとえば、ArcMap セッションで 2 つ目の選択セットが解除された場合、SDE_LOGPOOL テーブルから 300 レコードが削除されますが、1 つ目の選択セットのレコードは残っています。1 つ目の選択セットが解除されるときに、これらのレコードが SDE_LOGPOOL テーブルから削除されます。
スタンドアロン ログ ファイルのプールを使用する場合は、ログ ファイルごと(必要なサイズの選択セットごと)に SDE_LOGFILE_POOL テーブルに新しいレコードが作成され、SDE_LOGPOOL テーブルの 1 つが使用されます。たとえば、1 つの ArcMap セッションで、(1)事業所に関する情報を格納するフィーチャクラスから、食品を提供するライセンスを受けたすべての事業所を選択し、(2)雨水管情報を保存するフィーチャクラスから、食品を提供する事業所から 1 km 以内にあるすべての集水溝を選択した場合、SDE_LOGFILE_POOL テーブルには事業所の選択セット用と集水溝の選択セット用の 2 つのレコードが追加されます。各選択セットは、それぞれに独自の SDE_LOGPOOL テーブルに割り当てられます。
ログ ファイル(選択セット)を解除するときに、対応する SDE_LOGPOOL テーブルが空になります。
ArcSDE 管理者が所有するログ ファイル プールを使用するために必要な設定
SERVER_CONFIG テーブルの中でログ ファイル プールに特に影響する設定は、LOGFILEPOOLSIZE と HOLDLOGPOOLTABLES です。
前のセクションで説明したように、ログ ファイルのプールを作成するには、コンフィグレーション パラメータの LOGFILEPOOLSIZE に、作成する必要があるログ ファイルの数(つまり、SDE_LOGPOOL テーブルの数)を設定します。この数は、サーバに接続するセッションの数と、スタンドアロン ログ ファイルの数(許可されている場合)を反映させてください。
ログ ファイル プールに設定するログ ファイルの合計数を計算するには、次の式を使用します。
- セッション ログ ファイルが許可されていて、スタンドアロン ログ ファイルが許可されていない場合
LOGFILEPOOLSIZE = 予想されるセッションの合計
たとえば、MAXSTANDALONELOGS が 0、ALLOWSESSIONLOGFILE が TRUE に設定されていて、ジオデータベースへの接続が一度に 30 以下であると予想される場合は、LOGFILEPOOLSIZE を 30 に設定します。
- スタンドアロン ログ ファイルが許可されていて、セッション ログ ファイルが許可されていない場合
LOGFILEPOOLSIZE = MAXSTANDALONELOGS * 予想されるセッションの合計
たとえば、MAXSTANDALONELOGS が 5、ALLOWSESSIONLOGFILE が FALSE に設定されていて、ジオデータベースへの接続が一度に 10 以下であると予想される場合は、LOGFILEPOOLSIZE を 5 * 10 = 50 に設定します。
- スタンドアロン ログ ファイルとセッション ログ ファイルの両方が許可されている場合
LOGFILEPOOLSIZE = (MAXSTANDALONELOGS + 1) * 予想されるセッションの合計
たとえば、MAXSTANDALONELOGS が 8、ALLOWSESSIONLOGFILE が true に設定されていて、ジオデータベースへの接続が一度に 20 以下であると予想される場合は、LOGFILEPOOLSIZE を (8 + 1) * 20 = 180 に設定します。
プールを使い果たして、別のログ ファイル テーブルが必要になった場合は、ArcSDE がユーザのスキーマにログ ファイル テーブルを作成しようとします。ログ ファイル テーブルをユーザのスキーマに作成できない場合は、エラーが返されます。
LOGFILEPOOLSIZE パラメータが変更されると、必ず SDE_LOGPOOL_<table_ID> テーブルが作成または削除されます。前の例で、LOGFILEPOOLSIZE を 180 に設定した場合、180 の SDE_LOGPOOL_<table_ID> テーブルが作成されます。LOGFILEPOOLSIZE パラメータを 100 に変更すると、80 のテーブルが削除されます。
ログ ファイル プール パラメータの HOLDLOGPOOLTABLES は、いつ SDE_LOGPOOL テーブルをプールに戻して、他のユーザが使用できるようにするかを決定します。HOLDLOGPOOLTABLES を TRUE(デフォルト値)に設定した場合は、レコードが SDE_LOGFILE_POOL テーブルに残り、SDE_LOGPOOL テーブルは接続中のセッションが終了するまでロックされます。HOLDLOGPOOLTABLES を FALSE に設定すると、選択セットが不要になるたびに、ログ ファイル テーブルは解放され、SDE_LOGFILE_POOL テーブルは空になります。この動作は、スタンドアロンおよびセッションベース ログ ファイルのどちらのプールでも同じです。
ArcSDE 管理者が所有するログ ファイル テーブルのプールとインデックスの格納を制御する設定
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードに、SDE_LOGPOOL<SDE_ID> とそのインデックスを格納する方法を制御するパラメータは数個しかありません。
ArcSDE for DB2 のジオデータベースでは、SDE_LOGPOOL<SDE_ID> テーブルとそのインデックスの格納の設定に、LD_STORAGE、LD_INDEX_ROWID、および LD_INDEX_DATA_ID DBTUNE の各パラメータを使用します。この 3 つのパラメータは、SDE_LOGFILE_DATA テーブルとインデックスの格納も制御します。これらのパラメータの詳細については、「DB2 の DBTUNE コンフィグレーション パラメータ」をご参照ください。
ログ ファイル テーブルのプールを使用するためにこれらのパラメータを設定する必要はありませんが、SDE_LOGPOOL<SDE_ID> テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメータを設定することができます。
ArcSDE 管理者が所有するログ ファイルのプールに必要な権限
プールのログ ファイル テーブルを使用するときにユーザに必要な権限は、データベースに接続して ArcSDE 管理者スキーマのオブジェクトを使用できることだけです。したがって、ログ ファイル テーブルのプールを使用するために必要な権限は CONNECT 権限のみです。
CONNECT 権限はデフォルトですべてのユーザに割り当てられます。したがって、この権限を明示的に割り当てる必要があるのは、この権限を PUBLIC から削除した場合だけです。