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

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

ジオデータベースを Oracle データベース内に作成するには、ジオプロセシング ツールまたは Python スクリプトを ArcGIS クライアントから実行します。まず前提条件に目を通した上で、状況に当てはまる手順を実行します。

注意:

ArcGIS 10.7 および ArcGIS Pro 2.3 以降、Oracle でユーザースキーマ ジオデータベースを作成できなくなりました。

前提条件

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

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

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

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

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

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

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

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

Oracle のインストールと構成

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

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

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

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

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

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

注意:

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

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

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

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

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

    32 ビット ArcGIS クライアント (ArcMap など) から接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしていて、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアント (ArcGIS ServerArcGIS Pro など) から接続する場合、64 ビット Oracle クライアントをインストールする必要があります。

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

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

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

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

    • Microsoft Windows では、PATH 環境変数を設定します。ArcMapArcGIS Pro または ArcGIS Server と同じ Windows コンピューター上にインストールされている場合は、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; を付加します。

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

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

ジオデータベースの作成

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

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

ArcGIS Desktop にアクセスできる場合は、ジオプロセシング ツールを実行してジオデータベースを作成できます。

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

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

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

  3. [データベース プラットフォーム] ドロップダウン リストから [Oracle] を選択します。
  4. Oracle インスタンスへの接続に必要な情報を入力します。
    • TNS ネットワーク エイリアスを使用するように Oracle クライアントがすでに設定されている場合、[インスタンス] テキスト ボックスに Net サービス エイリアスを入力します。
    • Oracle クライアントのネットワーク エイリアスが設定されておらず、Oracle データベースおよびクライアントが簡易接続文字列を使用するように設定されている場合は、Oracle 簡易接続文字列を [インスタンス] テキスト ボックスに入力します。
  5. ジオデータベース管理者と表領域を作成するには、データベース管理者としてデータベースに接続する必要があります。そのため、[データベース管理者] テキスト ボックスには、sys ユーザー名を入力します。
  6. [データベース管理者パスワード] テキスト ボックスに、sys ユーザーのパスワードを入力します。
  7. sde」を [ジオデータベース管理者] テキスト ボックスに入力します。

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

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

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

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

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

  11. [OK] (ArcMap または ArcCatalog) または [実行] (ArcGIS Pro) をクリックします。

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

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

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

Python スクリプトの実行

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

  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
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, 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 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 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 ==""):	
    		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 Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS 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)
  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 のシステム要件から確認してください。必要な権限の一覧については、「Oracle でのジオデータベースの権限」をご参照ください。

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

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

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

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

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

注意:

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

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

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

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

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

    32 ビット ArcGIS クライアント (ArcMap など) から接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしていて、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアント (ArcGIS ServerArcGIS Pro など) から接続する場合、64 ビット Oracle クライアントをインストールする必要があります。

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

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

    • Linux では、LD_LIBRARY_PATH 環境変数を設定します。
    • Windows では、PATH 環境変数を設定します。ArcMapArcGIS Pro または ArcGIS Server と同じ Windows コンピューター上にインストールされている場合は、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; を付加します。

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

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

ジオデータベースの作成

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

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

アクセス権がある場合は、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行してジオデータベースを作成できます。

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

  1. ArcGIS Desktop クライアントを起動します。
  2. sde ユーザーとして Oracle データベースに接続します。

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

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

  6. [OK] (ArcMap または ArcCatalog) または [実行] (ArcGIS Pro) をクリックします。

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

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

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

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

Python スクリプトの実行

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

  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 設定を同期させることができます。