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

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

ジオデータベースを Oracle データベース内に作成するには、ジオプロセシング ツールまたは Python スクリプトを ArcGIS クライアントから実行します。

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

まず前提条件に目を通した上で、状況に当てはまる手順を実行します。

注意:

Oracle でのユーザースキーマ ジオデータベースの作成またはアップグレードのサポートは終了しました。

前提条件

ジオデータベースを Oracle 内に作成するには、次のことを行っておく必要があります。

  1. 使用する ArcGIS、Oracle、およびオペレーティング システムの組み合わせに互換性があることを確認します。
  2. ジオデータベースの格納に使用する Oracle のバージョンへの接続に必要な Oracle クライアントを入手します。
  3. ArcGIS Server の認証時に作成された ArcGIS Server キーコード ファイルを入手し、ジオデータベースの作成に使用する ArcGIS クライアントからアクセスできる位置に配置します。
  4. ジオデータベースを作成するユーザーを決定します (これによって、ジオデータベースを作成するときに実行するツールが決まります)。 次のうち、状況に当てはまる手順に従ってください。

データベースおよびジオデータベースの管理者である場合

データベース管理者とジオデータベース管理者の両方のロールを実行するため、両方のログインのパスワードを知っている場合は、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツール、またはこのツールを呼び出す Python スクリプトを使用して、ジオデータベースを Oracle 内に作成できます。

[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールは、sde ユーザー、スキーマ、表領域を作成し、ジオデータベースの作成に必要な権限を sde ユーザーに付与します。 このためには、ツールで次のデフォルト設定を使用します。

  • sde という名前のデータベース ユーザーを作成する
  • 400 MB の表領域を Oracle のデフォルトの場所に作成し、sde ユーザーの表領域として設定する
  • ジオデータベースの作成とアップグレード、データベース接続の削除、Oracle Data Pump によるデータのインポートを実行できる権限を sde ユーザーに付与する
  • ジオデータベースの作成に必要なパッケージの権限を付与する
  • ジオデータベースを作成する

必要な権限の詳細については、「Oracle でのジオデータベースの権限」をご参照ください。

注意:

このワークフローは、データベース サービスでのジオデータベースの作成には使用できません。

ツールまたはスクリプトを実行してジオデータベースを作成する前に、Oracle を設定しておく必要があります。

Oracle のインストールと構成

ジオデータベースを作成する前に、Oracle をインストールして構成しておく必要があります。 Oracle インスタンスの構成方法は、各組織に固有の要件に応じて変わります。 インストールと構成の詳細については、Oracle のドキュメントをご参照ください。

ジオデータベースを作成する前に、使用する Oracle、ArcGIS、およびハードウェアの組み合わせがサポートされていることを「Oracle の ArcGIS システム要件」で確認してください。

以下のいずれかを実行する機能が必要な場合は、Esri ST_Geometry ライブラリにアクセスするように Oracle extproc を構成するひ必要もあります。

Oracle をインストールおよび構成した後に、ArcGIS クライアントと Oracle クライアントをインストールします。

クライアントのインストールと構成

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

注意:

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

ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。 そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。 使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンを確認するには、また Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。

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

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

  2. Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。

    Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。 インストール手順については、Oracle のドキュメントをご参照ください。

  3. オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントがインストールされたディレクトリのパスと名前を含めるように設定します。

    • Linux では、LD_LIBRARY_PATH 環境変数を設定します。
    • Microsoft Windows では、PATH 環境変数を設定します。

  4. ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
  5. 簡易接続文字列を使用して ArcGIS から Oracle に接続することはできますが、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。

    Oracle クライアントを完全にインストールするが、接続に Easy Connect (簡易接続) 構文を使用する場合、Easy Connect (簡易接続) の使用を許可するため、クライアント側で sqlnet.ora ファイルを構成し、Easy Connect (簡易接続) 構文を許可するように Oracle サーバーを構成してください。 詳細な手順については、Oracle のドキュメントをご参照ください。

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

ジオデータベースの作成

ArcGIS Pro (Desktop Standard または Desktop Advanced) から [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するか、ArcGIS Pro または ArcGIS Server コンピューターから Python スクリプトを実行して、sde ユーザー、スキーマ、表領域、およびジオデータベースを作成できます。

[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの実行

ArcGIS Pro でジオプロセシング ツールを実行してジオデータベースを作成できます。

以下の手順に従って、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを使用してジオデータベースを作成します。

  1. ArcGIS Pro を起動します。
  2. [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを開きます。

    このツールは、[データ管理] ツールボックスの [ジオデータベース管理] ツールセットで検索または選択できます。

  3. [データベース プラットフォーム] ドロップダウン リストから [Oracle] を選択します。
  4. Oracle インスタンスへの接続に必要な情報を入力します。
    • TNS ネットワーク エイリアスを使用するように Oracle クライアントがすでに設定されている場合、[インスタンス] テキスト ボックスに Net サービス エイリアスを入力します。
    • Oracle クライアントのネットワーク エイリアスが設定されておらず、Oracle データベースおよびクライアントが簡易接続文字列を使用するように設定されている場合は、Oracle 簡易接続文字列を [インスタンス] テキスト ボックスに入力します。

    使用できる簡易接続文字列については、「ArcGIS から Oracle への接続」をご参照ください。

  5. [データベース管理者] テキスト ボックスに sys ユーザー名が入力されます。ジオデータベース管理者と表領域を作成するには、データベース管理者としてデータベースに接続する必要があるためです。
  6. [データベース管理者パスワード] テキスト ボックスに、sys ユーザーのパスワードを入力します。
  7. sde」を [ジオデータベース管理者] テキスト ボックスに入力します。

    sde ユーザーがデータベース内に存在しない場合は、ツールによって作成され、ジオデータベースの作成に必要な権限が付与されます。 このユーザーが存在する場合、必要な権限が付与されます。

  8. [ジオデータベース管理者パスワード] テキスト ボックスに、sde ユーザーのパスワードを入力します。

    sde ユーザーがデータベース内にすでに存在する場合は、既存のユーザーの正しいパスワードを入力する必要があります。このツールでは、パスワードは変更されません。 sde ユーザーを作成する場合、入力したパスワードは sde ユーザーの作成時に使用されます。

  9. sde ユーザーの表領域を指定します。
    • ジオデータベース リポジトリに使用する表領域がすでに構成されている場合は、[表領域名] テキスト ボックスにその名前を入力します。
    • 表領域を作成するには、[表領域名] テキスト ボックスに有効な名前を入力すると、ツールによって Oracle のデフォルトの場所に 400 MB の表領域が作成されます。 表領域の名前を入力しない場合は、SDE_TBS 表領域が作成され、sde ユーザーのデフォルトの表領域として設定されます。
  10. [認証ファイル] を指定するには、ArcGIS Server を認証したときに作成されたキーコード ファイルを参照して選択します。

    まだ行っていない場合には、この時点で ArcGIS Server を認証してキーコード ファイルを作成します。 このファイルは、\\Program Files\ESRI\License<release#>\sysgen フォルダー (Windows サーバーの場合) または /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen (Linux サーバーの場合) に書き込まれます。 キーコード ファイルを、ツールがアクセスできる場所にコピーします。

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

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

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

次に、Oracle データベースの open_cursors パラメーターが 300 以外の値に設定されている場合は、sde.gdb_util.update_open_cursors ストアド プロシージャを実行して、Oracle データベースのパラメーターをジオデータベースの設定と同期させます。

Python スクリプトの実行

ジオデータベースを作成するには、下に示したスクリプトをコピーおよび保存して、ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server のコンピューターから実行します。

  1. 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
    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 10.1 and higher releases")
    
    #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:  Not required 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 for SQL Server geodatabase, SDE or DBO. Default=SDE_SCHEMA")
    parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name")
    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")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    parser.add_option ("--type", dest="Spatial_type", type="choice", choices=['ST_GEOMETRY', 'POSTGIS'], default="ST_GEOMETRY", help="Spatial Type for PostgreSQL geodatabase, ST_GEOMETRY or POSTGIS. Default=ST_GEOMETRY")
    
    # 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
    	spatial_type = options.Spatial_type.upper()
    	
    	
    	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( 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.management.CreateEnterpriseGeodatabase(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, spatial_type=spatial_type)
    		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)
  2. .py 拡張子を付けてファイルを保存します。
  3. ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。

    Linux コンピューターから実行する例を次に示します。SID が orcl の Oracle インスタンスに対して create_gdb.py ファイルが実行されます。 このインスタンスは、サーバー gisprod 上で実行されています。 sde ユーザーが Tgdbst@rtsh3r3 というパスワードおよび sde という名前の表領域で作成されます。 ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所のキーコード ファイルが指定されます。

    ./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/License/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\License\sysgen\keycodes'
    ヒント:

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

これで、ジオデータベースが Oracle に作成されました。

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

次に、Oracle データベースの open_cursors パラメーターが 300 以外の値に設定されている場合は、sde.gdb_util.update_open_cursors ストアド プロシージャを実行して、Oracle データベースのパラメーターをジオデータベースの設定と同期させます。

Oracle 管理者がデータベースを構成し、ジオデータベース管理者がジオデータベースを作成する場合

ジオデータベースを作成するユーザーがデータベース管理者のパスワードを使用できない場合は、データベース管理者がデータベースと sde ユーザーを設定し、その後、ジオデータベース管理者が sde ログインを使用してデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用してジオデータベースを作成できます。

[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールは、データベース接続ファイルを入力として受け取り、ジオデータベース システム テーブル、ビュー、関数、プロシージャを sde ユーザーのスキーマに作成します。

Oracle のインストールと構成

ジオデータベース管理者がジオデータベースを作成するには、まず、データベース管理者が以下を実行する必要があります。

  • Oracle インスタンスをインストールして構成します。 Oracle インスタンスの構成方法は、各組織に固有の要件に応じて変わります。 インストールと構成の詳細については、Oracle のドキュメントをご参照ください。

    使用するデータベース管理システム、ArcGIS、およびハードウェアの組み合わせがサポートされていることを ArcGIS のシステム要件で確認してください。

  • sde ユーザーとスキーマを作成します。
  • ジオデータベースの作成に必要な権限を sde ユーザーに付与します。 必要な権限の一覧については、「Oracle でのジオデータベースの権限」をご参照ください。
  • sde ユーザーの表領域を作成し、sde ユーザーのデフォルトの表領域として設定します。
  • ジオデータベースの作成に必要なパッケージに対する execute 権限を付与します。 パッケージの一覧については、「Oracle でのジオデータベースの権限」をご参照ください。

以下のいずれかを実行する機能が必要な場合は、Esri ST_Geometry ライブラリにアクセスするように Oracle extproc を構成する必要もあります。

Oracle のインストールと構成が終了したら、ジオデータベース管理者は ArcGIS クライアントと Oracle クライアントをインストールできます。

クライアントのインストールと構成

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

注意:

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

ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。 そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。 使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンを確認するには、また Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。

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

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

  2. Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。

    Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。 インストール手順については、Oracle のドキュメントをご参照ください。

  3. オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントがインストールされたディレクトリのパスと名前を含めるように設定します。

    • Linux では、LD_LIBRARY_PATH 環境変数を設定します。
    • Windows では、PATH 環境変数を設定します。

  4. ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
  5. 簡易接続文字列を使用して、ArcGIS から Oracle に接続できます。 ただし、データベース管理者は、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。 完全な Oracle クライアントはインストール済みであるが、接続に簡易接続構文を使用する場合は、簡易接続の使用を許可するようにクライアント側で sqlnet.ora ファイルが構成されており、データベース管理者が簡易接続構文を許可するように Oracle サーバーを構成していることを確認してください。 詳細な手順については、Oracle のドキュメントをご参照ください。

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

ジオデータベースの作成

ジオデータベース管理者は、ArcGIS Pro (Desktop Standard または Desktop Advanced) から [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行するか、ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server コンピューターから Python スクリプトを実行して、既存のデータベース内にジオデータベースを作成できます。

[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ArcGIS Desktop ツールの実行

ArcGIS Pro からジオプロセシング ツールを実行してジオデータベースを作成します。

以下の手順に従って、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを使用してジオデータベースを作成します。

  1. ArcGIS Pro を起動します。
  2. sde ユーザーとして Oracle データベースに接続します。

    [データベース コネクション] ダイアログ ボックスで、ユーザーのパスワードを保存します。

  3. [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを開きます。
  4. ステップ 2 で作成したデータベース接続を [入力データベース接続] で使用します。
  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 に作成されています。 キーコード ファイルを、ツールがアクセスできる場所にコピーします。

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

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

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

SQL を使用してクライアントからジオデータベースにアクセスする場合は、アクセスを許可するように Oracle extproc を構成します。

次に、データベース管理者は、sde.gdb_util.update_open_cursors ストアド プロシージャを使用して、Oracle とジオデータベースの間で open_cursors 設定を同期させることができます。

Python スクリプトの実行

ArcGIS Server または ArcGIS Pro のインストールからスクリプトを実行してジオデータベースを作成する場合は、下記のスクリプトを使用できます。

  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. ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。

    Linux コンピューターから実行する例を次に示します。SID が orcl の Oracle インスタンスに対して enable_gdb.py ファイルが実行されます。 このインスタンスは、サーバー gisprod 上で実行されています。 ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所のキーコード ファイルが指定されます。

    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/License/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\License\sysgen\keycodes'
    ヒント:

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

これで、ジオデータベースが Oracle データベースに作成されました。

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

次に、データベース管理者は、sde.gdb_util.update_open_cursors ストアド プロシージャを使用して、Oracle とジオデータベースの間で open_cursors 設定を同期させることができます。