Standard または Advancedのライセンスで利用可能。
ジオデータベースの設定方法は、使用している環境によって変わります。自分の組織に適用されるシナリオの手順に従ってください。
- データベースおよびジオデータベースの管理者である場合
- Oracle 管理者がデータベースを構成し、ジオデータベース管理者がジオデータベースを作成する場合
- 同じ Oracle データベースに複数のジオデータベースを格納する場合
データベースおよびジオデータベースの管理者である場合
データベース管理者とジオデータベース管理者の両方のロールを実行するため、両方のログインのパスワードを知っている場合、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用して、ジオデータベースを Oracle に作成できます。
[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールで、sde ユーザー、スキーマ、および表領域を作成し、sde ユーザーに必要な権限を付与することによって、ジオデータベースを簡単に設定できます。これを実行する場合、特定のデフォルト設定を使用します。以下では、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの機能と使用する設定について説明します。
- sde という名前のデータベース ユーザーを作成する
- 400 MB の表領域を Oracle のデフォルトの場所に作成し、sde ユーザーの表領域として設定する
- ジオデータベースの作成と更新、およびデータベース接続の削除を実行できる権限を sde ユーザーに付与する
- ジオデータベースの作成に必要なパッケージの権限を付与する
- ジオデータベースを作成する
必要な権限の詳細については、「Oracle でのジオデータベースの権限」をご参照ください。
ツールまたはスクリプトを実行してジオデータベースを作成する前に、Oracle を設定する必要があります。
Oracle の設定
ジオデータベースを作成する前に、Oracle をインストールして構成する必要があります。Oracle インスタンスの構成方法は、各組織に固有の要件に応じて変わります。インストールと構成の詳細については、Oracle のドキュメントをご参照ください。
ジオデータベースを設定する前に、使用するデータベース管理システム、ArcGIS、およびハードウェアの組み合わせがサポートされていることを、ArcGIS のシステム要件から確認してください。
Oracle をインストールおよび構成した後に、ArcGIS クライアントと Oracle クライアントをインストールします。
ArcGIS クライアントの構成
ArcGIS for Desktop (Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、または ArcGIS for Server から Python スクリプトを実行して、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS for Desktop を使用します。
ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンの決定、および Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。
32 ビット ArcGIS クライアントから接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしていて、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアントから接続する場合、64 ビット Oracle クライアントをインストールする必要があります。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
- オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントをインストールしたディレクトリのパスと名前を設定します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
. - Windows では、PATH 環境変数を設定します。同じ Windows コンピューター上に ArcGIS for Server と ArcGIS for Desktop がどちらもインストールされている場合は、32 ビット クライアントを読み込む前に 64 ビット クライアントを読み込むように PATH 変数を設定します。たとえば、32 ビットの Oracle クライアントが c:\Program Files (x86)\Oracle にインストールされており、64 ビットの Oracle Instant Client が c:\Program Files\Oracle にインストールされている場合は、PATH 変数値の先頭に C:\Program Files\Oracle;C:\Program Files (x86)\Oracle; を付加します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
- ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
- Easy Connect (簡易接続) 文字列を使用して、ArcGIS から Oracle に接続できます。ただし、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。Oracle クライアントを完全にインストールするが、接続にEasy Connect (簡易接続) 構文を使用する場合、Easy Connect (簡易接続) の使用を許可するため、クライアント側で sqlnet.ora ファイルを構成し、Easy Connect (簡易接続) 構文を許可するように Oracle サーバーを構成してください。詳細な手順については、Oracle のドキュメントをご参照ください。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
ArcGIS for Desktop (Standard または Advanced) から [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するか、ArcGIS for Desktop、ArcGIS for Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、sde ユーザー、スキーマ、表領域、およびジオデータベースを作成できます。
エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)ツールの実行
ArcGIS for Desktop にアクセスできる場合、ジオプロセシング ツールを実行してジオデータベースを作成できます。
- ArcMap または ArcCatalog を起動します。
- [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを開きます。
このツールは、[データ管理] ツールボックスの [ジオデータベース管理] ツールセットで検索または選択できます。
- [データベース プラットフォーム] ドロップダウン リストから [Oracle] を選択します。
- Oracle インスタンスへの接続に必要な情報を入力します。
- TNS ネットワーク エイリアスを使用するように Oracle クライアントがすでに設定されている場合、[サービス] テキスト ボックスに Net サービス エイリアスを入力します。
- Oracle クライアントのネットワーク エイリアスが設定されておらず、Oracle データベースおよびクライアントが簡易接続文字列を使用するように設定されている場合は、Oracle 簡易接続文字列を [インスタンス] テキスト ボックスに入力します。
使用できる簡易接続文字列については、「ArcGIS から Oracle への接続」をご参照ください。
- [データベース管理者パスワード] テキスト ボックスに、sys ユーザーのパスワードを入力します。
- 「sde」を [ジオデータベース管理者] テキスト ボックスに入力します。
sde ユーザーがデータベース内にまだ存在しない場合は、ツールによって作成され、ジオデータベースの作成に必要な権限が付与されます。このユーザーがすでに存在する場合、必要な権限が付与されます。
- [ジオデータベース管理者パスワード] テキスト ボックスに、sde ユーザーのパスワードを入力します。
sde ユーザーがデータベース内にすでに存在する場合、既存のユーザーのパスワードを正しく入力してください。このツールでは、パスワードは変更されません。sde ユーザーを作成する場合、入力したパスワードは sde ユーザーの作成時に使用されます。
- sde ユーザーの表領域を指定します。
- ジオデータベース リポジトリに使用する表領域がすでに構成されている場合は、[表領域名] テキスト ボックスにその名前を入力します。
- ツールで表領域を作成する場合は、[表領域名] テキスト ボックスに有効な名前を入力すると、ツールによって、Oracle のデフォルトの場所に 400 MB の表領域が作成されます。表領域の名前を入力しない場合は、SDE_TBS 表領域が作成され、sde ユーザーのデフォルトの表領域として設定されます。
- [認証ファイル] を指定するには、ArcGIS for Server Enterprise を認証したときに作成されたキーコード ファイルを参照して選択します。
このファイルは、Windows サーバー上の \\Program Files\ESRI\License<release#>\sysgen フォルダーに書き込まれます。まだ keycodes ファイルを作成していない場合には、ArcGIS for Server を認証して作成します。
- [OK] をクリックして、このツールを実行します。
ジオデータベースが Oracle データベース内に作成されます。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、ツールを実行したコンピューター上の %TEMP% 変数で指定された、ディレクトリに書き込まれます。ツールの実行時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
Python スクリプトの実行
ジオデータベースを作成するには、下に示したスクリプトをコピーおよび保存して、ArcGIS for Desktop (Standard または Advanced)、ArcGIS for Server (Standard または Advanced)、または ArcGIS Runtime (と Geodatabase Update エクステンション) から実行します。
-
ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーします。
""" Name: create_enterprise_gdb.py Description: Provide connection information to a DBMS instance and create an enterprise geodatabase. Type create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Do not specify for Oracle") parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS for Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print("%s: error: %s\n" % (sys.argv[0], "No command options given")) parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance database = options.Database.lower() account_authentication = options.Account_authentication.upper() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd schema_type = options.Schema_type.upper() gdb_admin = options.Gdb_admin gdb_admin_pwd = options.Gdb_admin_pwd tablespace = options.Tablespace license = options.Authorization_file if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" if( database_type ==""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) if (license == ""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")) parser.print_help() sys.exit(3) if(database_type == "SQL_SERVER"): if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"): print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE.")) sys.exit(3) if (schema_type == "DBO_SCHEMA" and gdb_admin != ""): print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema...")) if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")) sys.exit(3) if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""): print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication...")) else: if (schema_type == "DBO_SCHEMA"): print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." )) if( gdb_admin.lower() == ""): print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified.")) sys.exit(3) if( gdb_admin.lower() != "sde"): if (database_type == "ORACLE"): print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n") else: print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type)) sys.exit(3) if( dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")) sys.exit(3) if (account_authentication == "OPERATING_SYSTEM_AUTH"): print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." )) # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license.") sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.") else: print("\n" + product_license + " license available! Continuing to create...") arcpy.AddMessage("+++++++++") try: print("Creating enterprise geodatabase...\n") arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2)
- 拡張子 .py を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
下の例では、create_gdb.py ファイルを、orcl という SID を持つ Oracle インスタンスに対して、Linux コンピューターから実行しています。このインスタンスは、サーバー gisprod 上で実行されています。sde ユーザーが Tgdbst@rtsh3r3 というパスワードおよび sde という名前の表領域で作成されます。ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所の keycodes ファイルが指定されます。
./create_gdb.py --DBMS ORACLE -i gisprod/orcl --auth DATABASE_AUTH -U sys -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t sde -l /usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.3/sysgen/keycodes
次の例では、同じスクリプトが Windows コンピューターから実行されます。
create_gdb.py --DBMS ORACLE -i gisprod/orcl --auth DATABASE_AUTH -U sys -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t sde -l \\Program Files\ESRI\License10.3\sysgen\keycodes
これで、ジオデータベースが Oracle に作成されました。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、スクリプトを実行したコンピューターの TEMP または TMP 変数で指定されたディレクトリに書き込まれます。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
Oracle 管理者がデータベースを構成し、ジオデータベース管理者がジオデータベースを作成する場合
ジオデータベースを作成するユーザーがデータベース管理者のパスワードを使用できない場合は、データベース管理者がデータベースと sde ユーザーを設定し、その後、ジオデータベース管理者が sde ログインを使用してデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用してジオデータベースをデータベースに作成できます。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールは、データベース接続ファイルを入力として受け取り、ジオデータベース システム テーブル、ビュー、関数、プロシージャを sde ユーザーのスキーマに作成します。
Oracle の設定
ジオデータベース管理者がジオデータベースを作成するには、まず、データベース管理者が以下を実行する必要があります。
- Oracle インスタンスをインストールして構成します。Oracle インスタンスの構成方法は、各組織に固有の要件に応じて変わります。インストールと構成の詳細については、Oracle のドキュメントをご参照ください。
ジオデータベースを設定する前に、使用するデータベース管理システム、ArcGIS、およびハードウェアの組み合わせがサポートされていることを、ArcGIS のシステム要件から確認してください。必要な権限の一覧については、「Oracle でのジオデータベースの権限」をご参照ください。
- sde ユーザーとスキーマを作成します。
- ジオデータベースの作成に必要な権限を sde ユーザーに付与します。
- sde ユーザーの表領域を作成し、sde ユーザーのデフォルトの表領域として設定します。
- ジオデータベースの作成に必要なパッケージに対する実行権限を付与します。権限の一覧については、「Oracle でのジオデータベースの権限」をご参照ください。
Oracle がインストールおよび構成された後に、ジオデータベース管理者は ArcGIS クライアントと Oracle クライアントをインストールできます。
ArcGIS クライアントの構成
ArcGIS for Desktop (Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、または ArcGIS for Server (Standard または Advanced) から Python スクリプトを実行して、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS for Desktop を使用します。
ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンの決定、および Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。
32 ビット ArcGIS クライアントから接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしている場合、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアントから接続する場合、64 ビット Oracle クライアントをインストールする必要があります。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
- オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントをインストールしたディレクトリのパスと名前を設定します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
- Windows では、PATH 環境変数を設定します。同じ Windows コンピューター上に ArcGIS for Server と ArcGIS for Desktop がどちらもインストールされている場合は、32 ビット クライアントを読み込む前に 64 ビット クライアントを読み込むように PATH 変数を設定します。たとえば、32 ビットの Oracle クライアントが c:\Program Files (x86)\Oracle にインストールされており、64 ビットの Oracle Instant Client が c:\Program Files\Oracle にインストールされている場合は、PATH 変数値の先頭に C:\Program Files\Oracle;C:\Program Files (x86)\Oracle; を付加します。
- ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
- Easy Connect (簡易接続) 文字列を使用して、ArcGIS から Oracle に接続できます。ただし、データベース管理者は、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。Oracle クライアントを完全にインストールするが、接続に簡易接続構文を使用する場合、簡易接続の使用を許可するため、クライアント側で sqlnet.ora ファイルを構成し、データベース管理者によって、簡易接続構文を許可するように Oracle サーバーを構成してください。詳細な手順については、Oracle のドキュメントをご参照ください。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
ジオデータベース管理者は、ArcGIS for Desktop (Standard または Advanced) から [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行するか、ArcGIS for Desktop、ArcGIS for Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、既存のデータベースにジオデータベースを作成できます。
エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)ツールの実行
ArcGIS for Desktop にアクセスできる場合、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行してジオデータベースを作成できます。
- ArcMap または ArcCatalog を起動します。
-
sde ユーザーでカタログ ツリーから Oracle データベースに接続します。
[データベース コネクション] ダイアログ ボックスで、必ずユーザーのパスワードを保存してください。
- データベース接続を右クリックして、[ジオデータベースの有効化] をクリックします。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールが開き、[入力データベース接続] フィールドに接続ファイルの名前と場所が入力されます。
- ArcGIS for Server を認証したときに作成された認証ファイルを参照し、[認証ファイル] テキスト ボックスに追加します。
ウィザードを使用して ArcGIS for Server を認証する際に、ソフトウェアがインストールされているサーバーに keycodes ファイルが書き込まれます。Linux コンピューター上で ArcGIS for Server を認証した場合、キーコード ファイルは /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen に作成されています。Windows サーバーで認証した場合、このファイルは Program Files\ESRI\License<release>\sysgen に作成されています。まだ keycodes ファイルを作成していない場合には、ArcGIS for Server を認証して作成します。
- [OK] をクリックして、このツールを実行します。
データベース内にジオデータベースが作成されます。
ツールによって、GDBCreateGeodatabase<#>.log ログ ファイルが、ツールを実行したコンピューター上の %TEMP% 変数に指定したディレクトリに作成されます。ツールの実行時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
Python スクリプトの実行
Windows コンピューター上で、ArcGIS for Server、ArcGIS for Desktop、または ArcGIS Engine のインストールからスクリプトを実行してジオデータベースを作成する場合、下に示すスクリプトを使用できます。
- ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーします。
""" Name: enable_enterprise_gdb.py Description: Provide connection information to an enterprise database and enable enterprise geodatabase. Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage Author: Esri """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() license = options.Authorization_file if( database_type ==""): print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.") parser.print_help() sys.exit(3) if (license == ""): print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enabling enterprise geodatabase functionality requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license." sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print "\nCreating Database Connection File...\n" # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Enable geodatabase... try: print "Enabling Enterprise Geodatabase...\n" arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)
- 拡張子 .py を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
下の例では、enable_gdb.py ファイルを、orcl という SID を持つ Oracle インスタンスに対して、Linux コンピューターから実行しています。このインスタンスは、サーバー gisprod 上で実行されています。ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所の keycodes ファイルが指定されます。
enable_gdb.py --DBMS ORACLE -i gisprod/orcl --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -l /usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.3/sysgen/keycodes
次の例では、同じスクリプトが Windows コンピューターから実行されます。
create_gdb.py --DBMS ORACLE -i gisprod/orcl --auth DATABASE_AUTH -U sys -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t sde -l \\Program Files\ESRI\License10.3\sysgen\keycodes
これで、ジオデータベースが Oracle データベースに作成されました。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、スクリプトを実行したコンピューターの TEMP または TMP 変数で指定されたディレクトリに書き込まれます。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
同じ Oracle データベースに複数のジオデータベースを格納する場合
前のセクションで説明したプロシージャを使用して sde ユーザーのスキーマ (マスター sde ジオデータベースとも呼ばれる) にジオデータベースが作成されている場合、他のユーザーは自分のスキーマにジオデータベースを作成できます。異なるチームまたはプロジェクトのデータをグループ化したり分けたりする手段として、他のユーザーが独自のジオデータベースを作成することを許可できます。
以下のルールが、ユーザーのスキーマのジオデータベースに適用されます。
- ジオデータベースを作成したユーザーが、その所有者になります。そのユーザーは、そのジオデータベースのジオデータベース管理者であり、ジオデータベース管理者権限が必要です。特定のジオデータベース管理者権限については、「Oracle でのジオデータベースの権限」をご参照ください。
- ユーザーが所有できるジオデータベースは 1 つだけです。
- ユーザースキーマ ジオデータベースの所有者のみが、そのジオデータベース内のデータを所有できます。
- ユーザーがジオデータベースを所有する場合、マスター sde ジオデータベース内のデータは所有できません。
- ユーザーがマスター sde ジオデータベース内のデータを所有する場合、ユーザースキーマ ジオデータベースは所有できません。
- 作成および使用するユーザースキーマ ジオデータベースの数が増えると、Oracle データベースへの接続にかかる時間が長くなります。これは特に、ユーザースキーマ ジオデータベースにジオデータベース テーブルとジオデータベースに登録されていないテーブルが混在している場合に当てはまります。
マスター sde ジオデータベースが存在する場合、前述したツールまたはスクリプトのいずれかを使用してユーザースキーマ ジオデータベースを作成できます。
- [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)]: このトピックで前述したように、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] を実行するには、sys ユーザーのパスワードを知っている必要があります。そのため、このツールはデータベース管理者が実行する必要があります。必ずスキーマの所有者の名前をジオデータベース管理者に対して指定してください。
- [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)]: sys ユーザーのパスワードを使用できない場合、ジオデータベースの作成に必要な権限をデータベース管理者から付与してもらうことができます。その後、自分のログインを使用してジオデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールまたはスクリプトを実行して、スキーマにジオデータベースを作成できます。