giomgr.defs ファイルと SERVER_CONFIG システム テーブル

SDEHOME の etc ディレクトリにある giomgr.defs ファイルには、SERVER_CONFIG テーブル(SQL Server と PostgreSQL では sde_server_config)に値を設定するためのデータが含まれています。このファイルは、SERVER_CONFIG リポジトリ テーブルが作成されるときに読み取られます。この処理は ArcSDE ジオデータベースを作成する際に行われます。

SERVER_CONFIG テーブルには、ArcSDE によるメモリの使用方法を定義する初期化パラメータと値が含まれます。このテーブルが作成された後、パラメータは giomgr.defs ファイルではなく SERVER_CONFIG テーブルから読み取られます。このトピックの「ArcSDE 初期化パラメータ」のセクションに、パラメータのリストを示します。

SERVER_CONFIG テーブルの初期化パラメータのほとんどは、デフォルト設定から変更する必要はありませんが、Windows インストールでの TEMP ディレクトリの場所と MINBUFFSIZE および MAXBUFFSIZE は例外で、データ読み込みのパフォーマンスを向上させるために調整することができます。これらのパラメータの設定については、「バッファ サイズ初期化パラメータ」をご参照ください。

TEMP パラメータは、SERVER_CONFIG の BLOBMEM パラメータによって指定されたサイズを超える属性 BLOB(Binary Large Object)の格納に使用する一時ディスク領域ディレクトリを指定する際に使用されます。TEMP パラメータを設定しない場合は、デフォルトの場所が割り当てられます。Windows でのデフォルトの場所は、Windows コンピュータに現在ログインしているユーザの一時フォルダです。この一時格納領域に別のディレクトリを設定するには、ポスト インストール セットアップを実行する前に giomgr.defs ファイルで TEMP パラメータのコメントを外すか、ジオデータベースの作成後に sdeconfig -o alter コマンドを使用して TEMP ディレクトリを変更します。以下に、この 2 つのオプションについて説明します。

ArcSDE ジオデータベースを作成するにサーバの初期化パラメータを変更する場合は、「ジオデータベースを作成する前の SERVER_CONFIG パラメータの変更」をご参照ください。

サーバの初期化パラメータを ArcSDE ジオデータベースが作成されたに変更するには、sdeconfig 管理コマンドを使用します。Windows では、ArcSDE のインストールとポスト インストール セットアップは通常続けて実行されるため、多くの場合は、この方法で初期化パラメータの値を変更します。これより前にパラメータを変更するには、ArcSDE コンポーネントのインストール完了後にウィザードを終了し、giomgr.defs ファイルを変更してから、ポスト インストール ウィザードを再度実行する必要があります。

sdeconfig コマンドを使用して SERVER_CONFIG テーブルの値を変更する方法については、「ジオデータベースを作成した後の SERVER_CONFIG パラメータの変更」と、ArcGIS Server Enterprise に付属している『ArcSDE コマンド リファレンス』をご参照ください。

ArcSDE 初期化パラメータ

参考までに、各 ArcSDE 初期化パラメータの機能とデフォルトの設定、およびヒントまたは注意事項をまとめます。

パラメータ

説明

デフォルト

注意

ALLOWSESSIONLOGFILE

ユーザにセッション ベースの ArcSDE ログ ファイルを使用させたい場合は、このパラメータを TRUE に設定します。セッション ベースのログ ファイルは、一定時間が経過しても ArcSDE への接続を維持し、多くのレコードを選択するアプリケーションに最適です。

DB2、Informix、Oracle、PostgreSQL = FALSE

SQL Server = TRUE

ATTRBUFSIZE

属性配列バッファのサイズ。

50,000(属性データにつき 500 バイトの行が 100)

属性バッファに取り出せる行の数が MAXARRAYSIZE パラメータの設定と一致しない場合は、パフォーマンスに影響します。

複数の列を使用するクエリでは、列ごとのバイト数を足して行の合計サイズを取得します。ATTRBUFSIZE を行のサイズで割った値が MAXARRAYSIZE で指定された行の数を超えた場合、ArcSDE は自動的に属性バッファを MAXARRAYSIZE 分の行を保持できるサイズに減らします。

AUTOCOMMIT

トランザクションでの暗黙的な ArcSDE ユーザの自動コミット レートです。AUTOCOMMIT を 0 に設定した場合、トランザクションはアプリケーションから明示的に発行されたコミットのみをコミットします。AUTOCOMMIT を 1 以上の値に設定した場合は、指定した数の更新が実行された後に、操作がコミットされます(たとえば、デフォルト設定では、1,000 個の更新の後にトランザクションがコミットされます)。この機能は、トランザクションが大きくなりすぎて、DBMS のログに記録しきれなくなるのを防ぎます。

1,000

AUTH_KEY

暗号化されたライセンス キーコード。

デフォルト値なし

この値はセットアップ時に割り当てられます。この値を SERVER_CONFIG テーブルまたは giomgr.defs ファイルで変更しないでください。

BLOBMEM

BLOB が格納される場合、サーバはアプリケーションがネットワーク経由で送信する BLOB データを蓄積する必要があります。BLOB のサイズが BLOBMEM の値を超える場合、サーバは BLOB データをデータベースに格納する前にディスクに書き込みます。BLOB のサイズが BLOBMEM の値より小さい場合、サーバは BLOB データをメモリ上に蓄積します。BLOBMEM の値が負数の場合、サーバは BLOB のサイズにかかわらず、常にメモリを使用します。

1,000,000

CONNECTIONS

アプリケーション サーバが処理する同時接続の最大数。

このパラメータの変更を有効にするには、ArcSDE サービスを再起動する必要があります。

48

ArcSDE 9 以降のリリースでは、このパラメータはダイレクト コネクションの数も制限します。したがって、このパラメータの値を超える数の 2 層接続および 3 層接続を確立することはできません。

DEFAULTPRECISION

このパラメータには、32 ビット整数の精度を設定することができます。64 ビットのデフォルト値で作成された空間列は、64 ビットのジオメトリを格納します。

64 ビット整数

ArcSDE 9.2 以降のバージョンを新しくインストールした場合は、デフォルトで 64 ビット整数に設定されます。

DISABLEDC

このパラメータを TRUE に設定するとクエリのキャッシュが無効になり、FALSE に設定するとクエリのキャッシュが有効になります。

FALSE

デフォルト設定(クエリのキャッシュの有効化)を使用することが推奨されます。この値を TRUE に変更する必要があるのは、SELECT 文または集約関数を使用して SQL 構文エラーが発生した場合だけです。

DISABLEAUTOREG

オブジェクト リレーショナル データ タイプで作成された空間列を含んでいるビジネス テーブルの自動登録を無効にします。

ArcSDE サービスは、起動時にシステム テーブルからデータベースに存在する未登録の空間列を検索し、それらを登録します。DISABLEAUTOREG を FALSE に設定すると、この機能が有効になります。

TRUE

この機能は、DB2 Spatial Extender、Informix Spatial DataBlade、および Oracle Spatial のジオメトリ格納タイプで使用できます。SQL Server または PostgreSQL のジオデータベースではサポートされません。

ERRLOGMODE

ArcSDE エラー ログ ファイルにエラーが書き込まれる際、エラーとともにタイムスタンプ、セッション ID、クライアント コンピュータ名が記録されるかどうかを決定します。エラーに記録するアイテムを制限したい場合は、このパラメータにそれらのアイテムを表す文字を設定します(デフォルト リストを参照)。これらのアイテムをエラーに記録したくない場合は、パラメータを NONE に設定します。

このパラメータは、デフォルトで TIC(T - タイム スタンプ、I - セッション ID、C - クライアント コンピュータ)に設定されます。

HOLDLOGPOOLTABLES

デフォルトでは、このパラメータは TRUE に設定されます。これにより、ArcSDE は接続を切断するまで、セッション ログ ファイル プールからチェックアウトしたセッション ベースのログ ファイルをすべて保持し、それらを再利用します。このパラメータを FALSE に設定すると、ArcSDE クライアント アプリケーションはログ ファイルが作成されるたびにログ ファイルをプールに戻します。

TRUE

通常は、このパラメータを TRUE に設定したままにしてください。

INT64TYPES

64 ビット整数を無効にしたい場合は、このパラメータを FALSE(デフォルト)のままにします。これは、アプリケーションが 64 ビット整数をサポートしない場合に必要です。このパラメータを FALSE に設定すると、ArcSDE は 64 ビット整数フィールドを倍精度として返し、64 ビット整数フィールドを作成できないようにします。このパラメータを TRUE に設定すると、64 ビット整数の属性列を使用できます。

FALSE

このパラメータを FALSE に設定する必要があるのは、アプリケーションが 64 ビット整数をサポートしない場合です。

LARGEIDBLOCK

このパラメータの値は、ArcSDE がバッファ ストリームに割り当てる RowID の数の計算に使用されます。

ArcSDE は、バッファ ストリームから大量のレコードがテーブルに読み込まれることを検出すると、このパラメータの最小値として割り当てる RowID の数を計算し、現在の RowID の割り当てを倍にします。RowID の割り当ては、初期状態では SMALLIDBLOCK の値に設定され、LARGEIDBLOCK の値になるまでサイズが倍に増えていきます。

0

LAYERAUTOLOCKING

ArcSDE 9 より、レイヤの自動ロックはデフォルトで無効になりました。これを有効にするには、コンフィグレーション パラメータである LAYERAUTOLOCKING を TRUE に設定します。この場合、自動ロック プロパティが有効になっているレイヤは、NORMAL_IO モードで編集されたときにシェープを自動的にロックします。

つまり、LAYERAUTOLOCKING パラメータはマスタ スイッチに類似しており、LAYERAUTOLOCKING を TRUE に設定すると、自動ロック プロパティが有効になっているすべてのレイヤは、NORMAL_IO モードで編集されたときにシェープを自動的にロックします。

デフォルトでは、レイヤは自動ロック プロパティが有効な状態で作成されます(レイヤの自動ロックの状態は、sdelayer -o describe_long コマンドを使用して確認することができます)。特定のレイヤの自動ロックを無効にするには、sdelayer 管理コマンドを alter 操作を指定して使用します。

ArcSDE 9 = FALSE、ArcSDE 9 より前のリリース = TRUE

このパラメータは、下位(9 より前のリリースとの)互換性を維持して、ユーザが自動ロックの使用を継続できるようにするために追加されました(自動ロックに依存するカスタム アプリケーションを使用しているユーザなど)。

LOGFILEPOOLSIZE

このパラメータは、セッション ベース ログ ファイルのプールのサイズを指定します。このパラメータは、ArcSDE 管理者によって所有され、ユーザ間で共有されるログ ファイル テーブルの数を表し、デフォルトでは 0 に設定されます。ユーザは、ログ ファイル テーブルを独自に作成するのではなく、プールからチェックアウトすることができます。

0

ArcSDE 9 より、SESSIONLOGPOOLSIZE はこのパラメータに置き換えられました。ログ ファイル プールを使用しない場合は、この値を 0 のままにします。

MAXARRAYBYTES

ストリームごとに割り当てられる配列の最大バイト数。このパラメータは、サーバ上での配列バッファのメモリ割り当てを管理するために使用されます。

550,000

ATTRBUFSIZE と SHAPEPTSBUFSIZE の値の合計は、MAXARRAYBYTES の値以下でなければなりません。そうでない場合、ArcSDE サービスは起動しません。この問題が発生した場合は、MAXARRAYBYTES の値を増やすか、ATTRBUFSIZE または SHAPEPTSBUFSIZE の値を減らします。

この値を SE_connection_set_stream_spec 関数で変更することはできません。この値は、ArcSDE 管理者が SERVER_CONFIG テーブルで変更できるだけです。

MAXARRAYSIZE

サーバがリクエストごとに取得できる行の最大数。

100

最適な値は、プラットフォームと DBMS に応じて、20 ~ 150 の範囲内です。シェープ ポイント データ(SHAPEPTSBUFSIZE)と属性バッファ(ATTRBUFSIZE)を適切に調整した後、複数の配列サイズを試して、インストールに最適な設定を判断してください。

MAXBLOBSIZE

ユーザ定義の BLOB の最大バイト数。

-1(SE_UNLIMITED_BLOBSIZE)

ArcGIS 10 より、このパラメータは -1(SE_UNLIMITED_BLOBSIZE)に設定されています。新しいジオデータベースとアップグレードされたジオデータベースでは、すべて制限なしになります。

MAXBUFSIZE

バッファの最大閾値。最小値は 12,288(12KB)です。

64KB

MAXBUFSIZE の値が 12KB よりも大きく、MINBUFSIZE の値よりも小さい場合、2 つの値が入れ替えられます。詳細については、「バッファ サイズ初期化パラメータ」をご参照ください。

MAXDISTINCT

このパラメータは、SE_table_calculate_stats または SE_stream_calculate_table_statistics の呼び出しに応じて、SE_DISTINCT_STATS 統計から返される個別値の最大数を制御します。0 の値は、返される個別値の数が制限されないことを意味します。

512

個別値はサーバ上のメモリに生成され、リストが完成したときにクライアントのメモリに渡されます。

大きなテーブルの統計情報を計算すると、クライアント リソースとサーバ リソースに負荷がかかる可能性があります。このパラメータの値を、複数のクエリを完了するのに十分で、かつサーバおよびクライアント アプリケーションがメモリ不足に陥らない程度の値に設定します。ユーザに SE_TOO_MANY_DISTINCTS エラー メッセージが表示される場合は、MAXDISTINCT パラメータの値を増やすこともできますが、クライアントとサーバのメモリに影響が出るため慎重に行ってください。アプリケーションを調べて、クエリをより効率よく実行できるかどうか検討してください。

MAXINITIALFEATS

このパラメータは、sdelayer 管理ツールおよび SE_layer_create 関数の初期フィーチャ引数に指定できるフィーチャの最大数を指定します。このパラメータは、初期範囲が広すぎるフィーチャクラスが誤って作成されるのを防ぎます。

10,000

ArcSDE for Oracle 専用のパラメータです。

MAXGRIDSPERFEAT

空間インデックスのフィーチャあたりのグリッドの最大数。

8,000

このパラメータは、1,000 より小さい値に設定できません。

このパラメータは、グリッド インデックスを使用する空間格納タイプのみに適用されます。

MAXSTANDALONELOGS

ユーザが作成できるスタンドアロン ログ ファイル テーブルの最大数。

0

スタンドアロン ログ ファイル テーブル以外のログ ファイル設定を使用する場合は、このパラメータの設定を 0 のままにしてください。

MAXTIMEDIFF

MAXTIMEDIFF は、サーバ コンピュータとクライアント コンピュータのシステム クロックに許容される時間差の最大値を秒単位で指定します。

このパラメータは、ArcSDE 接続文字列が含まれたネットワーク パケットを捕捉した何者かによる不正入力を防ぎます。この人物がパケットを再送しても、捕捉から再送までの経過時間が MAXTIMEDIFF の設定を超えていた場合は拒否されます。

1,800 秒

このパラメータはダイレクト コネクションを制限しません。このパラメータを無効にするには、値を -1 に設定します。正規の接続で「-99 password received was sent 7 MAXTIMEDIFF seconds before」というエラー メッセージが表示された場合は、クライアント コンピュータのシステム時間をホスト コンピュータのシステム時間にリセットしてください。

MINBUFOBJECTS

転送バッファのバッファ オブジェクト(行)の最小数。

512 行

MINBUFOBJECTS は、データ行のサイズ(バイト)に依存します。詳細については、「バッファ サイズ初期化パラメータ」をご参照ください。

MINBUFSIZE

バッファの最小閾値。最小値は 4KB。

16KB

MINBUFSIZE を大きな値に設定すると、待ち時間が長くなります。このため、MINBUFSIZE を MAXBUFSIZE の半分未満の値に設定します。詳細については、「バッファ サイズ初期化パラメータ」をご参照ください。

PROCSTATS

セッションで PROCESS_INFORMATION テーブルを更新する間隔を制御するプロセス統計パラメータ。デフォルトでは、このパラメータは -1 に設定され、PROCESS_INFORMATION テーブルへのエントリを無効にします。エントリを有効にするには、セッションが統計情報をテーブルに書き込む間隔(秒単位)を表す正の整数を設定します。

この間隔は、セッションが次の統計情報を書き込めるようになるまでの経過時間を表します。セッションが統計情報を書き込むのは、変更が発生した場合だけです。

-1

PROCESS_INFORMATION テーブルへの統計情報の書き込みにはコストがかかるので避けてください。

RASTERBUFSIZE

このパラメータは、ラスタ データ転送を制御するラスタ バッファのサイズを定義します。

ラスタ転送には、配列バッファと転送バッファの両方が含まれます。ラスタ配列バッファは RASTERBUFSIZE パラメータの 2 倍に設定され、ラスタ転送バッファは RASTERBUFSIZE の値に設定されます。したがって、サーバ上でのラスタ転送に割り当てられるメモリは、RASTERBUFSIZE の 3 倍になります。

クライアント側では、ストリームがラスタ タイプにアクセスしたときに、クライアントのラスタ転送バッファに RASTERBUFSIZE バイトのメモリが割り当てられます。ストリームがストリーム プールに追加された場合を除き、ラスタ バッファはストリームが閉じられるまで解放されません(STREAMPOOLSIZE を参照)。

204,800 バイト

この値はバイト単位で指定され、アクセス可能な最大ラスタ タイルを格納できる大きさでなければなりません。ラスタ タイルが転送バッファに収まらない場合は、SE_RASTERBUFFER_TOO_SMALL エラーが返されます。

メモリに制限がある場合は、RASTERBUFSIZE の値を増やすのではなく、小さなタイル サイズを指定してください。

ピクセルあたりのバイト数を計算する際には、ピクセル諧調を考慮に入れる必要があります。

例:イメージ ピクセル階調 = 64 ビット、タイル サイズ = 128 × 128 の場合、必要な RASTERBUFSIZE = 131,072 バイト(128 × 128 × 8)。イメージ ピクセル階調 = 8 ビット、タイル サイズ = 256 × 256 の場合、必要な RASTERBUFSIZE = 65,536 バイト(256 × 256 × 1)。

ArcSDE 9.2 以降のリリースでは、ArcSDE ラスタ データのスループットはサーバの処理能力をより効果的に利用するために使用されます。また、いくつかのメモリ バッファが使用されています。このため、RASTERBUFSIZE パラメータを 1MB 以下に設定することが非常に重要となります。

READONLY

このパラメータは、ArcSDE クライアントによるジオデータベースの編集を有効または無効にします。このパラメータを TRUE に設定すると、ArcSDE サービスは ArcSDE クライアントによる編集を許可しなくなります。

FALSE

FALSE = 編集を許可

TRUE = 読み取り専用の接続

SHAPEPTSBUFSIZE

シェープ ポイント配列バッファのサイズ。

400,000

デフォルト値(400,000)は、500 個のポイントを持つ 2 次元エリア フィーチャを対象に計算されています。

SMALLIDBLOCK

このパラメータの値は、ArcSDE がストリームに割り当てる RowID の最小数を計算するために使用されます。

16

STATEAUTOLOCKING

このパラメータは、ステートの自動ロックを有効または無効にします。

FALSE(ステートの自動ロックを無効化)

(Esri 以外の)サードパーティ アプリケーションの編集状態を使用する場合を除き、このパラメータを TRUE に設定する必要はありません。このパラメータを TRUE に設定すると、システムの全体的なパフォーマンスが低下します。

STATECACHING

ステート キャッシュを TRUE に設定すると、各ストリームのステートがサーバ上のメモリで保持されます。FALSE に設定した場合は、ストリームを操作するたびにステートをディスクから読み取る必要があります。

パフォーマンスを最適化するには、頻繁に実行されるストリーム操作をキャッシュする必要があります。

TRUE

STATUS

このインスタンスが新しい接続を受け付ける場合は 1、一時停止している(新しい接続を受け付けない)場合は 2。

1

このパラメータは、ArcSDE サービスとダイレクト コネクションの両方に適用されます。

STREAMPOOLSIZE

ストリーム プールに追加される割り当て済みのストリーム リソースの最大数。

ストリーム プールのリストは、新しいストリームが作成されるたびに再利用されます。STREAMPOOLSIZE の値を超えない限り、解放されたストリームのリソースがストリーム プールに追加されます。ストリームの解放時にストリーム プールがいっぱいである場合は、リソースの割り当てが解放されます。

6

STREAMPOOLSIZE が 0 に設定された場合、解放されたストリーム リソースのプールは作成されません。

TCPKEEPALIVE

TCPKEEPALIVE を TRUE に設定すると、ArcSDE サービス(アプリケーション サーバ)が現在のシステムの TCP/IP KEEPALIVE 設定を使用できるようになります。これにより、ArcSDE サービスは、コンピュータがクラッシュしたクライアント、または Windows のタスク マネージャまたは UNIX の kill コマンドによって強制終了されたクライアントを検出できるようになります。

TCPKEEPALIVE を TRUE に設定すると、オペレーティング システムのキープ アライブ間隔で指定されるアイドル時間が経過したらアイドル接続にパケットを送信して応答があるかどうかを確認するという、一種のプロービングが有効になります。応答がない場合、オペレーティング システムのキープ アライブ設定に基づいてさらにパケットが再送信されることもありますが、最終的にはクライアントがすでに存在せず、アプリケーション接続が切断されたことが確定されます。TCPKEEPALIVE によって、2 時間以上アイドル状態が続いているだけの有効な接続が切断されることはありません。TCPKEEPALIVE によって切断されるのは、終了しているアプリケーション接続またはクラッシュしたアプリケーション接続だけです。

TCPKEEPALIVE パラメータに対する変更は、ArcSDE サービスの再起動後に有効になります。

アプリケーション サーバ上のパラメータの設定を確認するには、sdemon -o info -I config コマンドを使用します。

キープ アライブ設定の詳細については、使用しているオペレーティング システムのドキュメントをご参照ください。

FALSE

TCPKEEPALIVE を TRUE に設定すると、短時間(~ 10 分間)のネットワーク ダウンによって切断が開始されることがあります。TCPKEEPALIVE によってダイレクト コネクションが切断されることはありません。

システムの TCP/IP KEEPALIVE 設定はシステム全体に適用され、TCP/IP 環境で実行されるすべてのアプリケーション サーバ プロセスに作用します。

TEMP

一時ディスク領域ディレクトリへの完全パスを指定します。TEMP ファイルに格納されるのは、SDEHOME 以下に etc ディレクトリが存在しない場合のログ ファイルや、gsrvr プロセスに名前付きパイプを設定するとき使用される一時ファイルなどです。

システムの一時ディレクトリへの完全パス(例: c:\documents and settings\<ユーザ名>\local settings\temp)

Windows でジオデータベースを作成する前に giomgr.defs でこのパラメータを設定しない場合、セットアップ中に警告が発行され、デフォルトの場所が割り当てられます。Windows でのデフォルトの場所は、現在の Windows ユーザの一時フォルダです。UNIX でのデフォルトの場所は /tmp です。

TLMINTERVAL

最終変更時刻の間隔(TLMINTERVAL)は、ArcSDE が TABLES_MODIFIED(SQL Server および PostgreSQL データベースの場合は SDE_TABLES_MODIFIED)システム テーブルにクエリを再度実行して、他の ArcSDE テーブルのいずれかが変更されているかどうかを確認できるようになるまでの経過時間(秒単位)です。

1 秒

ArcSDE メタデータが変化しない(つまり、レイヤ、ラスタ列、XML 列の追加、削除、変更、またはビジネス テーブルの登録の変更を行わない)場合は、このパラメータにデフォルト値よりも大きい値を設定して、TABLES_MODIFIED テーブルへのクエリのオーバーヘッドを避けることができます。

TRIMLOCKINGTYPE

TRIMLOCKINGTYPE は、圧縮処理またはバージョン対応の行の更新/削除の際に、バージョン対応のテーブルの D(DELETE)テーブルを明示的にロックするかどうかを定義します。デフォルトでは、明示的なテーブル ロックが有効になります。設定可能な値は次のとおりです。

  • NEVER:更新、切詰め、または削除操作の際に追加のロックを実行しません。

    NEVER は、ユーザの編集中に圧縮を実行しない場合にのみ使用します。

  • ALWAYS:バージョン対応のテーブルを編集する直前に、D テーブルを行排他表ロックします。バージョン対応のテーブルを切詰める場合は(圧縮操作時の切詰めを含む)、その直前に共有ロックします。

    ALWAYS は、切詰め関数を直接呼び出すカスタム クライアント アプリケーションを作成している場合に使用します。

  • ONLY DURING COMPRESS:ALWAYS モードと同様ですが、切詰めロックを実行するのは、切詰めが圧縮操作の一部として実行される場合に限られます。

ONLY DURING COMPRESS

このパラメータは ArcSDE for Oracle にのみ適用されます。テーブルに格納されるコードは次のとおりです:1 = Never、2 = Always、3 = Only during compress

初期化パラメータ

関連項目


3/6/2012