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

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

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

前提条件

Db2 でジオデータベースを作成する前に、以下を実行する必要があります。

Db2 のインストールと構成

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

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

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

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

  2. Db2 データベースを作成し、Spatial Extender モジュールに登録します。
  3. sde ユーザーに、データベースの DBADM 権限を付与します。

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

クライアントの構成

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

メモ:

次のセクションでは、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. DSNless 接続文字列を使用して ArcGIS から Db2 データベースに接続できます。ただし、代わりにデータ ソース名を使用して接続する場合、データベースをカタログ化し、それによってデータ ソース名を構成する必要があります。データ ソース名の作成手順については、IBM Db2 のドキュメントをご参照ください。

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

ジオデータベースの作成

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

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

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

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

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

    [データベース コネクション] ダイアログ ボックスで、必ず sde ユーザーのパスワードを保存してください。

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

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

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

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

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

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

Python スクリプトの使用

ArcGIS Desktop (Desktop Standard または Desktop Advanced)、ArcGIS Server (エンタープライズ エディション)、または ArcGIS Engine Geodatabase Update クライアント コンピューターから 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. ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。

    以下の例では、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 をご参照ください。