Standard または Advancedのライセンスで利用可能。
IBM DB2 をインストールおよび構成し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用して DB2 データベースにジオデータベースを作成します。
このトピックは、Linux、UNIX、または Windows サーバー上の DB2 でのジオデータベースの作成を対象にしています。z/OS (z オペレーティング システム) 上の DB2 のジオデータベースの設定手順については、「z/OS 上の DB2 でのジオデータベースの設定」をご参照ください。
DB2 の設定
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールまたはスクリプトを実行して DB2 にジオデータベースを作成するには、まず、DB2 データベース管理システムをインストールして構成する必要があります。ジオデータベースを設定する前に、使用するデータベース、ArcGIS、およびハードウェアの組み合わせがサポートされていることを、ArcGIS のシステム要件から確認してください。
DB2 インスタンスをインストールおよび構成する場合は、IBM から提供された手順に従ってください。その後、ジオデータベースを使用するために、以下の手順に従ってデータベースとログインを構成します。
-
DB2 サーバー上に sde というオペレーティング システム ログイン名を作成します。
ジオデータベースを作成するために、sde ログインを使用してデータベースに接続します。
- DB2 データベースを作成し、Spatial Extender モジュールに登録します。
- sde ユーザーに、データベースの DBADM 権限を付与します。
次に、ArcGIS クライアントを設定し、そこから DB2 データベースに接続してジオデータベースを作成します。
ArcGIS クライアントの構成
ArcGIS for Desktop (Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、または ArcGIS for Server (Standard または Advanced) から Python スクリプトを実行して、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS for Desktop を使用します。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- ほとんどの場合、ArcGIS クライアントは、DB2 サーバーとは異なるコンピューターにインストールされます。そのため、DB2 クライアントを ArcGIS クライアント コンピューターにインストールして構成します。
IBM Data Server Runtime Client for DB2 を My Esri からダウンロードするか、DB2 クライアントの独自のインストールを使用することができます。インストール手順については、DB2 のドキュメントをご参照ください。DB2 クライアントを 64 ビット オペレーティング システムにインストールする場合、64 ビットの実行可能ファイルを実行します。これによって、32 ビットと 64 ビットの両方のファイルがインストールされます。
- DSNless 接続文字列を使用して ArcGIS から DB2 データベースに接続できます。ただし、代わりにデータ ソース名を使用して接続する場合、データベースをカタログ化し、それによってデータ ソース名を構成する必要があります。データ ソース名の作成手順については、IBM DB2 のドキュメントをご参照ください。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
以下のいずれかの方法を使用して、DB2 データベースにジオデータベースを作成します。
エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)ツールの使用
ArcGIS for Desktop をインストールして DB2 データベースに接続するように構成してある場合、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行できます。
- ArcMap または ArcCatalog を起動します。
-
カタログ ツリーから DB2 データベースに接続します。sde ログインを使用して接続します。
[データベース コネクション] ダイアログ ボックスで、必ず sde ユーザーのパスワードを保存してください。
- データベース接続を右クリックして、[ジオデータベースの有効化] をクリックします。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールが開きます。
- DB2 データベースのデータベース接続ファイルを [入力データベース] テキスト ボックスに追加します。
-
ArcGIS for Server を認証したときに作成された 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% 変数で指定された、ディレクトリに書き込まれます。ツールの実行時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
ジオデータベースが DB2 データベース内に作成されます。
次に、ジオデータベースにデータを読み込むユーザーを作成します。ユーザーの作成手順については、IBM DB2 Information Center をご参照ください。
Python スクリプトの使用
ArcGIS for Desktop (Standard または Advanced)、ArcGIS for Server (Standard または Advanced)、または ArcGIS Engine (と Geodatabase Update エクステンション) クライアント コンピューターから Python スクリプトを実行して、DB2 データベースにジオデータベースを作成できます。
以下の手順に従って Python スクリプトを実行し、DB2 データベースにジオデータベースを作成します。
- 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 を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
以下の例では、Windows コンピューターから実行しています。enable_gdb.py ファイルは、インスタンス db2prod 上のデータベース spdata に対して実行されます。パスワード Tgdbst@rtsh3r3 を使用して SDE ログインで接続が確立されます。ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所の keycodes ファイルが指定されます。
enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -D spdata -l \\Program Files\ESRI\License10.3\sysgen\keycodes
次の例では、Linux コンピューター上でスクリプトを実行しています。
/enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -D spdata -l /usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.3/sysgen/keycodes
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、スクリプトを実行したコンピューターの TEMP または TMP 変数で指定されたディレクトリに書き込まれます。
ジオデータベースが DB2 データベース内に作成されます。
次に、ジオデータベースにデータを読み込むユーザーを作成します。ユーザーの作成手順およびデータを読み込むための権限の付与については、IBM DB2 Information Center をご参照ください。