Db2 でのジオデータベースの作成

Standard または Advancedのライセンスで利用可能。

IBM Db2 および ArcGIS クライアントをインストールおよび構成し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用して Db2 データベースにジオデータベースを作成します。

ArcGIS Pro 3.3 からジオデータベースを作成する場合、そのジオデータベースのバージョンは 11.3.0 になります。

前提条件

ジオデータベースを Linux、UNIX、または Windows 上の Db2 内に作成する前に、以下を実行します。

  • 使用する ArcGIS、Db2、およびオペレーティング システムのバージョンに互換性があることを確認します。
  • ジオデータベースの格納に使用する Db2 のバージョンへの接続に必要な Db2 クライアントを入手します。
  • ArcGIS Server の認証時に作成された ArcGIS Server キーコード ファイルを入手し、ジオデータベースの作成に使用する ArcGIS クライアントからアクセスできる位置に配置します。
  • Db2 をインストールして構成します。

Db2 のインストールと構成

[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールまたはスクリプトを実行して、ジオデータベースを Db2 内に作成するには、まず自身で (または IT 部門/データベース管理者が) Db2 データベース管理システムをインストールして構成する必要があります。

Db2 インスタンスをインストールおよび構成する場合は、最初に、IBM から提供された手順に従ってください。 その後、ジオデータベースを使用するために、以下の手順に従ってデータベースとログインを構成します。

  1. Db2 サーバー上に sde というオペレーティング システム ログイン名を作成します。

    ジオデータベースを作成するために、sde ログインを使用してデータベースに接続します。

  2. Db2 データベースを作成し、Spatial Extender モジュールに登録します。
  3. sde ユーザーに、データベースの DBADM 権限を付与します。
  4. 一時表領域を作成して、そのテーブル スペースへのアクセス権をジオデータベース ユーザーに付与します。

    一時表領域のページ領域は 8K 以下である必要があります。

    次の例では、geospace という名前のユーザー一時表領域が 8K のページ サイズで作成されます。 表領域の使用は geodatausers という名前のグループに許可されます。このグループには、ジオデータベース アーカイブの作成や、フィーチャ ビンの使用、ジオデータベースのログ ファイル テーブルを生成する大きな選択セットの作成といったジオデータベースの操作を実行するすべてのデータベース ユーザーが含まれます。

    CREATE USER TEMPORARY TABLESPACE geospace PAGESIZE 8 K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL IBMDEFAULTBP;
    
    GRANT USE OF TABLESPACE geospace TO geodatausers WITH GRANT OPTION;

次に、ArcGIS クライアントを構成し、そこから Db2 データベースに接続してジオデータベースを作成します。

クライアントの構成

ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server (エンタープライズ エディション) から Python スクリプトを実行して、ジオデータベース作成できます。 スクリプトの代わりに [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを実行するには、ArcGIS Pro を使用します。

注意:

次のセクションでは、ArcGIS Server (エンタープライズ) のキーコード ファイルを使用してジオデータベースを認証する必要があります。 ArcGIS Server コンピューターから Python スクリプトを実行してジオデータベースを作成する場合以外でも、ArcGIS Server をインストールして認証し、キーコード ファイルを取得する必要があります。 場合によって、ArcGIS Server コンピューターから、ジオプロセシング ツールまたは Python スクリプトがアクセスできる場所にファイルをコピーする必要があります。

  1. ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。

    ソフトウェア インストール ガイドに記載されている手順に従います。

  2. ほとんどの場合、ArcGIS クライアントは、Db2 サーバーとは異なるコンピューターにインストールされます。そのため、Db2 クライアントを ArcGIS クライアント コンピューターにインストールして構成します。

    IBM Data Server Runtime Client for Db2My Esri からダウンロードするか、独自の Db2 クライアントのインストールを使用することができます。 インストール手順については、Db2 のドキュメントをご参照ください。 Db2 クライアントを 64 ビット オペレーティング システムにインストールする場合、64 ビットの実行可能ファイルを実行します。これによって、32 ビットと 64 ビットの両方のファイルがインストールされ、32 ビットおよび 64 ビットの両方の ArcGIS クライアントから接続できます。

  3. 必要に応じて、データ ソース名を使用して接続できるようにデータベースをカタログ化します。

    データ ソース名の作成手順については、IBM Db2 のドキュメントをご参照ください。

    ArcGIS から Db2 データベースに接続するのにデータデータ ソース名は必要ありません。代わりに DSNless 接続文字列を使用できます。

これで、ジオデータベースを作成できるようになりました。

ジオデータベースの作成

以下のいずれかの方法を使用して、Db2 データベースにジオデータベースを作成します。

エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase) ツールの使用

ArcGIS Pro をインストールして Db2 データベースに接続するように構成してある場合、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行できます。

ArcGIS Pro でジオデータベースを作成するには、次の手順に従います。

  1. ArcGIS Pro を起動します。
  2. sde ログインを使用し、Db2データベースに接続します。

    [データベース コネクション] ダイアログ ボックスで、sde ユーザーのパスワードを保存します。 保存しなかった場合、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールで接続ファイルは動作しません。

  3. [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを開きます。
  4. Db2 データベースのデータベース接続ファイルを [入力データベース] テキスト ボックスに追加します。
  5. ArcGIS Server の認証時に作成された ArcGIS Server キーコード ファイルを選択し、そのファイルを [認証ファイル] テキスト ボックスに追加します。

    ウィザードを使用して ArcGIS Server を認証する際に、ソフトウェアがインストールされているコンピューターにキーコード ファイルが書き込まれます。 まだ作成していない場合には、ArcGIS Server を認証して作成します。 Linux コンピューター上で ArcGIS Server を認証した場合、ファイルは /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen に作成されています。 Microsoft Windows サーバー上で認証した場合、ファイルは Program Files\ESRI\License<release>\sysgen に作成されています。 このファイルを、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールからアクセスできる場所にコピーします。

  6. [実行] をクリックします。

    ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、ツールを実行したコンピューター上の %TEMP% 変数で指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

Db2 データベース内にジオデータベースが作成されます。

次に、ジオデータベースにデータを読み込むユーザーを作成します。 ユーザーの作成手順については、IBM Db2 Information Center をご参照ください。

Python スクリプトの使用

ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server (エンタープライズ エディション) クライアント コンピューターから Python スクリプトを実行して、Db2 データベースにジオデータベースを作成できます。

以下の手順に従って Python スクリプトを実行し、Db2 データベースにジオデータベースを作成します。

  1. 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
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, 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)
    
    		
    	# 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 Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS 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)

  2. .py 拡張子を付けてファイルを保存します。
  3. ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。

    以下の例では、Microsoft Windows コンピューターから実行しています。enable_gdb.py ファイルは、インスタンス db2prod 上のデータベース spdata に対して実行されます。 パスワード Tgdbst@rtsh3r3 を使用して sde ログインで接続が確立されます。 ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所のキーコード ファイルが指定されます。

    enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\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/License/sysgen/keycodes'
    ヒント:

    Type -h or --help at the command prompt to get syntax help.

    ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、この Python スクリプトを実行したコンピューター上で TEMP 変数または TMP 変数に指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

ジオデータベースが Db2 データベース内に作成されます。

次に、ジオデータベースにデータを読み込むユーザーを作成します。 ユーザーの作成手順およびデータを読み込むための権限の付与については、IBM Db2 Information Center をご参照ください。