エンタープライズ ジオデータベースは、ログ ファイル テーブルを使用して、選択されたレコードのリストを管理します。レコードは、アプリケーションが次のような場合に後で使用できるように、ログ ファイル テーブルに書き込まれます。
- ユーザー (またはツール、あるいはユーザーが実行したプロセス) が、特定のサイズ (ArcMap では 100 レコード以上、ArcGIS Pro では 1,000 レコード以上、フィーチャ サービスから ObjectID が要求された場合は 1,000 レコード以上) の選択セットを作成する。
- バージョン対応登録されたジオデータベースにリコンサイルまたはポストする。
- クライアント アプリケーションが、切断された編集のデータをチェック アウトする。
ログ ファイル テーブルには選択されたフィーチャの ID が格納されるため、それらを再表示することが可能です。これにより、解析やデータ処理がより高速になります。
ArcGIS 10.7.1 以降、Oracle のジオデータベースは、ログ ファイル テーブルの作成につながる操作を実行したユーザーが所有するグローバル一時テーブルを使用します。 テーブルを作成するデータベース権限を持たないユーザーは、sde ユーザーが所有するグローバル一時ログ ファイル テーブルを使用します。
ユーザーが Oracle で独自のグローバル一時ログ ファイル テーブルを作成するには、次の権限が必要です。
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
10.7.1 より前では、Oracle のジオデータベースでは、デフォルトで共有ログ ファイル テーブルが使用されます。接続するユーザーにデータベースのテーブルまたはシーケンスを作成する権限がない場合、ジオデータベース管理者が所有するグローバル一時テーブルとしてログ ファイル テーブルが作成されます。ほとんどの配置ではこれで十分ですが、[ジオデータベース ログファイル テーブルの構成 (Configure Geodatabase Logfile Tables)] ジオプロセシング ツールを使用して、10.7 以前のジオデータベースのログ ファイル テーブル設定を変更できます。
共有ログ ファイル
共有ログ ファイルは、同じユーザーとして接続するすべてのセッションで共有されます。複数のユーザーが同じユーザー アカウントで接続する場合、それらのセッションはすべて、同じログ ファイルのデータ テーブルに対してレコードを挿入または削除します。
共有ログ ファイルを使用する場合
各クライアントとユーザーが異なるデータベース ユーザー アカウントを使用して接続する場合、共有ログ ファイルを使用します。
共有ログ ファイルを使用しない場合
同じログインで複数の接続を生成するフィーチャ サービスを公開する場合など、同じログインにより多数の接続が確立される場合は、共有ログ ファイルを使用しないようにします。多くのユーザーが同じフィーチャ サービスに対して属性検索を実行すると、競合が発生し、SDE_LOGFILE_DATA テーブルに対する待ち時間が長くなることがあります。このような場合は、セッションベース ログ ファイルを使用できます。
共有ログ ファイルのために作成されるテーブル
このオプションで使用されるログ ファイル テーブルは、SDE_LOGFILES と SDE_LOGFILE_DATA です。これらは、ユーザーが閾値を超える選択を最初に行ったときに、接続ユーザーのスキーマに作成されます。
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 は、どちらもユーザーのスキーマに残ります。
共有ログ ファイルに必要な権限
ログ ファイル テーブルは接続するユーザーが所有するため、ユーザーにはテーブルなどの必要なデータ オブジェクトを作成するための権限が付与されている必要があります。これは、ユーザーがジオデータベースに対する読み取り専用アクセス権限を持っている場合でも必要です。これらの権限が付与されていない場合、ユーザーには特定のクライアント アプリケーションで閾値のサイズを超える選択セットを最初に作成したときに、エラー メッセージが返されます。ただし、一度ユーザーの SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルが作成されたら、データベース管理者はこれらの権限を取り消すことができます。
たとえば、Ian は都市計画者で、ジオデータベースからデータを選択して自分の作業に関連する分析だけを実行します。したがって、Ian は読み取り専用のユーザーと考えられます。ただし、Ian は都市のエンタープライズ ジオデータベースに SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルを作成するため、ジオデータベースにテーブルを作成できる必要があります。
データベース管理者は、テーブルを無制限に作成する権限を Ian に付与せず、それらの権限を一時的に付与し、ジオデータベースにログインして閾値を超える選択を行うように Ian に要求します。次に、データベース管理者は、Ian のテーブル作成権限を取り消します。
Oracle で共有ログ ファイル テーブルを使用するには、以下の権限が必要です。
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
共有ログ ファイルの格納に関する制御 (オプション)
Oracle で共有ログ ファイル テーブルとインデックスの格納を制御するパラメーターは、次のとおりです。
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD _STORAGE
- LF_INDEXES
- LF_STORAGE
これらのパラメーターの詳細については、「Oracle のコンフィグレーション パラメーター」をご参照ください。
セッションベース ログ ファイル
セッションベース ログ ファイル データ テーブルは単一のセッションに割り当てられ、複数の選択セット (ログ ファイル) を含む場合があります。ログインする各セッションには、選択のための一連のテーブルが必要です。
セッションベース ログ ファイルを使用する場合
セッションベース ログ ファイルは、ジオデータベースに対して同じログインで多数の同時接続を行う場合に使用します。たとえば、多くのサービスがジオデータベース内のデータを参照している場合、セッションベース ログ ファイルを使用することができます。
セッションベース ログ ファイルを使用しない場合
データベースに接続する読み取り専用のユーザーがいる場合、セッションベース ログ ファイルは使用できません。
セッション テーブルは、セッションが終了するときにユーザーのスキーマから削除されます。つまり、セッション テーブルは、必要に応じて再作成しなければなりません。このため、ユーザーには、セッションベース ログ ファイル テーブルを使用できるようにするために、テーブルを作成する権限が必要となります。
セッションベース ログ ファイルのために作成されるテーブル
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> テーブルは、接続しているアプリケーションがログ ファイルを削除したときに空になります。テーブル自体はセッションの終了時に削除されます。
セッションベース ログ ファイルに必要な権限
セッションベース ログ ファイルは、接続しているセッションを開始したユーザーによって所有されます。つまり、ユーザーには必要なデータベース オブジェクトを作成する権限が必要です。
Oracle でセッションベース ログ ファイル テーブルを使用するすべてのユーザーには、以下の権限が必要です。
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
セッションベース ログ ファイル テーブルおよびインデックスの格納に関する制御 (オプション)
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメーターがあります。セッションベース ログ ファイルを使用するためにこれらのパラメーターを設定する必要はありませんが、SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_SESSION テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメーターを設定することができます。
Oracle でセッションベース ログ ファイル テーブルとインデックスの格納を制御するパラメーターは、次のとおりです。
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD_STORAGE
- LF_INDEXES
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
これらのパラメーターの詳細については、「Oracle のコンフィグレーション パラメーター」をご参照ください。
ジオデータベース管理者が所有するログ ファイルのプール
ジオデータベース管理者は、他のユーザーがチェックアウトして使用できるセッションベース ログ ファイルのプールを作成できます。共有ログ ファイルをログ ファイル プールからチェックアウトすることはできません。
ログ ファイルのプールを使用することで、データベースにオブジェクトを作成するために必要な権限をユーザーに付与する必要がなくなります。
ログ ファイル プールを使用する場合
ログ ファイルのプールは、各自のスキーマにログ ファイル テーブルを作成する権限をユーザーに付与することができない場合に使用します。ただし、ユーザーにはセッションを作成する権限またはデータベースに接続する権限が必要です。
ログ ファイル プールを使用しない場合
全体として、ログ ファイルのプールを使用する場合は必要な保守作業が少し増えます。これは、必要なログ ファイル テーブルの数を見積もる必要があり、プールのサイズまたは使用するプールの数の調整を行うためです。ログ ファイル プールのサイズが大きい場合や、ログ ファイル プールの数が多い場合は、パフォーマンスに悪影響が出る可能性があることに注意してください。
ログ ファイル プール用に作成されるテーブル
[ジオデータベース ログ ファイル テーブルの構成 (Configure Geodatabase Log File Tables)] ツールがジオデータベース管理者のスキーマに作成する SDE_LOGPOOL_<テーブル ID> テーブルの数を指定します。たとえば、テーブル数 5 を指定した場合、ジオデータベース管理者のスキーマには次のテーブルが作成されます。
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
ジオデータベース管理者のスキーマ内の追加テーブル SDE_LOGFILE_POOL には、セッションの SDE_ID とテーブル ID が記録されます。SDE_LOGPOOL テーブルの名前に含まれる <table_ID> は、SDE_LOGFILE_POOL テーブルの table_ID 列の値と一致します。
ログ ファイル テーブルを必要とするセッションごとに、1 つのレコードが SDE_LOGFILE_POOL テーブルに追加され、各セッションは SDE_LOGPOOL_<テーブル ID> テーブルのうちのいずれかに割り当てられます。同じセッションで追加のログ ファイルが作成される場合 (たとえば、1 つの ArcMap セッションで 300 レコードの 2 つ目の選択セットが作成された場合)、新しいログ ファイル (選択セット) は同じ SDE_LOGPOOL テーブルに追加されます。
ログ ファイルが消去されるときに、セッションにチェックアウトされている SDE_LOGPOOL テーブルは空になります。たとえば、ArcMap セッションで 2 つ目の選択セットが解除された場合、SDE_LOGPOOL テーブルから 300 レコードが削除されますが、1 つ目の選択セットのレコードは残っています。1 つ目の選択セットが解除されると、これらのレコードが SDE_LOGPOOL テーブルから削除されます。
ログ ファイル (選択セット) を解除するときに、対応する SDE_LOGPOOL テーブルが空になります。
ログ ファイル プールに必要な権限
プールのログ ファイル テーブルを使用する場合、データベースに接続し、ジオデータベース管理者スキーマのオブジェクトを使用できることのみがユーザーに必要とされます。したがって、ログ ファイル テーブルのプールを使用するために必要な権限は、CREATE SESSION のみです。
CREATE SESSION 権限はデフォルトですべてのユーザーに割り当てられます。したがって、この権限を明示的に割り当てる必要があるのは、この権限を PUBLIC から削除した場合だけです。
ログ ファイルのプールの格納に関する制御 (オプション)
LOGFILE_DEFAULTS キーワードに、SDE_LOGPOOL<SDE_ID> テーブルとそのインデックスを格納する方法を制御するパラメーターは数個しかありません。
Oracle のジオデータベースでは、SDE_LOGPOOL<SDE_ID> テーブルとそのインデックスの格納の設定に、LD_STORAGE、LD_INDEX_ROWID、および LD_INDEX_DATA_ID の各 DBTUNE パラメーターを使用します。この 3 つのパラメーターは、SDE_LOGFILE_DATA テーブルとインデックスの格納も制御します。これらのパラメーターの詳細については、「Oracle のコンフィグレーション パラメーター」をご参照ください。
ログ ファイル テーブルのプールを使用するためにこれらのパラメーターを設定する必要はありませんが、SDE_LOGPOOL<SDE_ID> テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメーターを設定することができます。