Standard または Advancedのライセンスで利用可能。
ジオデータベースの作成方法は、使用している環境によって変わります。自分の組織に適用されるシナリオの手順に従ってください。
- データベースおよびジオデータベースの管理者である場合
- Oracle 管理者がデータベースを構成し、ジオデータベース管理者がジオデータベースを作成する場合
- 同じ Oracle データベースに複数のジオデータベースを格納する場合
データベースおよびジオデータベースの管理者である場合
データベース管理者とジオデータベース管理者の両方のロールを実行するため、両方のログインのパスワードを知っている場合、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用して、ジオデータベースを Oracle に作成できます。
[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールで、sde ユーザー、スキーマ、および表領域を作成し、sde ユーザーに必要な権限を付与することによって、ジオデータベースを簡単に設定できます。このためには、ツールで次のデフォルト設定を使用します。
- sde という名前のデータベース ユーザーを作成する
- 400 MB の表領域を Oracle のデフォルトの場所に作成し、sde ユーザーの表領域として設定する
- ジオデータベースの作成とアップグレード、データベース接続の削除、Oracle Data Pump によるデータのインポート (Oracle 12c の場合のみ) を実行できる権限を sde ユーザーに付与する
- ジオデータベースの作成に必要なパッケージの権限を付与する
- ジオデータベースを作成する
必要な権限の詳細については、「Oracle でのジオデータベースの権限」をご参照ください。
ツールまたはスクリプトを実行してジオデータベースを作成する前に、Oracle を設定する必要があります。
Oracle のインストールと構成
ジオデータベースを作成する前に、Oracle をインストールして構成する必要があります。Oracle インスタンスの構成方法は、各組織に固有の要件に応じて変わります。インストールと構成の詳細については、Oracle のドキュメントをご参照ください。
ジオデータベースを設定する前に、使用する Oracle、ArcGIS、およびハードウェアの組み合わせがサポートされているかどうかを「Oracle に対する ArcGIS のシステム要件」で確認してください。
以下のいずれかを実行する機能が必要な場合は、Esri ST ライブラリにアクセスするように Oracle extproc を構成する必要もあります。
- SQL クライアントから SQL 関数 ST_Geometry または ST_Raster を実行する。
- GDB_ITEMS_VW および GDB_ITEMRELATIONSHIPS_VW ジオデータベース システム ビュー内の ArcSDE XML 列にアクセスする。
- ST_Geometry 列で SQL 関数を実行するクエリ レイヤーを ArcMap または ArcGIS Pro 内に定義する。
- ArcMap または ArcGIS Pro からデータベース ビュー内のフィーチャを特定する。
- ST_Raster 列を含むテーブルをバージョン対応登録する。
- ArcGIS クライアントを使用して ST_Raster 列を含む行を削除する。
Oracle をインストールおよび構成した後に、ArcGIS クライアントと Oracle クライアントをインストールします。
クライアントのインストールと構成
ArcGIS Desktop (Desktop Standard または Desktop Advanced)、ArcGIS Engine Geodatabase Update、または ArcGIS Server (エンタープライズ エディション) をインストールし、スクリプトを実行してジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS Desktop をインストールします。
ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンの決定、および Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。
32 ビット ArcGIS クライアント (ArcMap など) から接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしていて、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアント (ArcGIS Server または ArcGIS Pro など) から接続する場合、64 ビット Oracle クライアントをインストールする必要があります。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
- オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントをインストールしたディレクトリのパスと名前を設定します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
。 - Windows では、PATH 環境変数を設定します。ArcMap が ArcGIS 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; を付加します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
- ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
- Easy Connect (簡易接続) 文字列を使用して、ArcGIS から Oracle に接続できます。ただし、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。Oracle クライアントを完全にインストールするが、接続に Easy Connect (簡易接続) 構文を使用する場合、Easy Connect (簡易接続) の使用を許可するため、クライアント側で sqlnet.ora ファイルを構成し、Easy Connect (簡易接続) 構文を許可するように Oracle サーバーを構成してください。詳細な手順については、Oracle のドキュメントをご参照ください。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
ArcGIS Desktop (Desktop Standard または Desktop Advanced) から [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するか、ArcGIS Desktop、ArcGIS Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、sde ユーザー、スキーマ、表領域、およびジオデータベースを作成できます。
[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの実行
ArcGIS Desktop にアクセスできる場合は、ジオプロセシング ツールを実行してジオデータベースを作成できます。
以下の手順に従って、ArcMap で [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを使用してジオデータベースを作成します。
- ArcGIS Desktop クライアントを起動します。
- [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを開きます。
このツールは、[データ管理] ツールボックスの [ジオデータベース管理] ツールセットで検索または選択できます。
- [データベース プラットフォーム] ドロップダウン リストから [Oracle] を選択します。
- Oracle インスタンスへの接続に必要な情報を入力します。
- TNS ネットワーク エイリアスを使用するように Oracle クライアントがすでに設定されている場合、[サービス] テキスト ボックスに Net サービス エイリアスを入力します。
- Oracle クライアントのネットワーク エイリアスが設定されておらず、Oracle データベースおよびクライアントが簡易接続文字列を使用するように設定されている場合は、Oracle 簡易接続文字列を [インスタンス] テキスト ボックスに入力します。
使用できる簡易接続文字列については、「ArcGIS から Oracle への接続」をご参照ください。
- [データベース管理者パスワード] テキスト ボックスに、sys ユーザーのパスワードを入力します。
- 「sde」を [ジオデータベース管理者] テキスト ボックスに入力します。
sde ユーザーがデータベース内にまだ存在しない場合は、ツールによって作成され、ジオデータベースの作成に必要な権限が付与されます。このユーザーがすでに存在する場合、必要な権限が付与されます。
- [ジオデータベース管理者パスワード] テキスト ボックスに、sde ユーザーのパスワードを入力します。
sde ユーザーがデータベース内にすでに存在する場合、既存のユーザーのパスワードを正しく入力してください。このツールでは、パスワードは変更されません。sde ユーザーを作成する場合、入力したパスワードは sde ユーザーの作成時に使用されます。
- sde ユーザーの表領域を指定します。
- ジオデータベース リポジトリに使用する表領域がすでに構成されている場合は、[表領域名] テキスト ボックスにその名前を入力します。
- ツールで表領域を作成する場合は、[表領域名] テキスト ボックスに有効な名前を入力すると、ツールによって、Oracle のデフォルトの場所に 400 MB の表領域が作成されます。表領域の名前を入力しない場合は、SDE_TBS 表領域が作成され、sde ユーザーのデフォルトの表領域として設定されます。
- [認証ファイル] を指定するには、ArcGIS Server Enterprise を認証したときに作成されたキーコード ファイルを参照して選択します。
このファイルは、Windows サーバーの場合は \\Program Files\ESRI\License<release#>\sysgen フォルダー、Linux サーバーの場合は /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen に書き込まれます。キーコード ファイルを、ツールがアクセスできる場所にコピーします。このファイルをまだ作成していない場合には、ArcGIS Server を認証して作成します。
- [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 エクステンション) から実行します。
-
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=['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: 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 master 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 == "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( 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)
- *.py 拡張子を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
下の例では、create_gdb.py ファイルを、orcl という SID を持つ Oracle インスタンスに対して、Linux コンピューターから実行しています。このインスタンスは、サーバー 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
これで、ジオデータベースが 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 を構成する必要もあります。
- SQL クライアントから SQL 関数 ST_Geometry または ST_Raster を実行する。
- GDB_ITEMS_VW および GDB_ITEMRELATIONSHIPS_VW ジオデータベース システム ビュー内の ArcSDE XML 列にアクセスする。
- ST_Geometry 列で SQL 関数を実行するクエリ レイヤーを ArcMap または ArcGIS Pro 内に定義する。
- ArcMap または ArcGIS Pro からデータベース ビュー内のフィーチャを特定する。
- ST_Raster 列を含むテーブルをバージョン対応登録する。
- ArcGIS クライアントを使用して ST_Raster 列を含む行を削除する。
Oracle がインストールおよび構成された後に、ジオデータベース管理者は ArcGIS クライアントと Oracle クライアントをインストールできます。
クライアントのインストールと構成
ArcGIS Desktop (Desktop Standard または Desktop Advanced)、ArcGIS Engine Geodatabase Update または ArcGIS Server をインストールして Python スクリプトを実行し、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS Desktop をインストールします。
ほとんどの場合、ArcGIS クライアントは、Oracle とは別のコンピューターにインストールされます。そのため、Oracle インスタンスに接続するには、サポートされている Oracle クライアントが ArcGIS クライアント コンピューター上に存在する必要があります。使用している Oracle のバージョンに接続するためにインストールする必要のある Oracle クライアントのバージョンの決定、および Oracle クライアントのインストールと構成の手順については、Oracle のドキュメントをご参照ください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- Oracle クライアントを ArcGIS クライアント コンピューターにインストールして構成します。
32 ビット ArcGIS クライアント (ArcMap など) から接続する場合、32 ビット Oracle クライアントをインストールする必要があります。これは、ArcGIS クライアント アプリケーションを 64 ビット オペレーティング システムのコンピューターにインストールしていて、データベースとサーバーのオペレーティング システムが 64 ビットの場合も、該当します。64 ビット ArcGIS クライアント (ArcGIS Server または ArcGIS Pro など) から接続する場合、64 ビット Oracle クライアントをインストールする必要があります。
Oracle から Oracle Instant、Runtime、または Administrator Client を入手できます。インストール手順については、Oracle のドキュメントをご参照ください。
- オペレーティング システムの環境変数またはユーザー プロファイルに、Oracle クライアントをインストールしたディレクトリのパスと名前を設定します。
- Linux では、LD_LIBRARY_PATH 環境変数を設定します。
- Windows では、PATH 環境変数を設定します。ArcMap が ArcGIS 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; を付加します。
- ArcGIS クライアントがすでに実行されている場合、再起動して、Oracle クライアントと新しい環境変数を認識させます。
- Easy Connect (簡易接続) 文字列を使用して、ArcGIS から Oracle に接続できます。ただし、データベース管理者は、簡易接続文字列を許可するように Oracle データベースを構成する必要があります。Oracle クライアントを完全にインストールするが、接続に簡易接続構文を使用する場合、簡易接続の使用を許可するため、クライアント側で sqlnet.ora ファイルを構成し、データベース管理者によって、簡易接続構文を許可するように Oracle サーバーを構成してください。詳細な手順については、Oracle のドキュメントをご参照ください。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
ジオデータベース管理者は、ArcGIS Desktop (Desktop Standard または Desktop Advanced) から [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行するか、ArcGIS Desktop、ArcGIS Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、既存のデータベース内にジオデータベースを作成できます。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ArcGIS Desktop ツールの実行
アクセス権がある場合は、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行してジオデータベースを作成できます。
以下の手順に従って、ArcGIS Desktop で [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを使用してジオデータベースを作成します。
- ArcGIS Desktop クライアントを起動します。
- sde ユーザーとして Oracle データベースに接続します。
[データベース接続] ダイアログ ボックスで、必ずユーザーのパスワードを保存してください。
- [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを開きます。
- ステップ 2 で作成したデータベース接続を [入力データベース接続] で使用します。
- 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 を認証して作成します。キーコード ファイルを、ツールがアクセスできる場所にコピーします。
- [OK] (ArcMap または ArcCatalog) または [実行] (ArcGIS Pro) をクリックします。
データベース内にジオデータベースが作成されます。
ジオデータベース作成に関するメッセージは、sde_setup.log ファイルに書き込まれます。このファイルは、ツールを実行したコンピューター上の %TEMP% 変数で指定されたディレクトリに作成されます。ジオデータベースの作成時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
SQL を使用してクライアントからジオデータベースにアクセスする場合は、アクセスを許可するように Oracle extproc を構成します。
次に、データベース管理者は、sde.gdb_util.update_open_cursors ストアド プロシージャを使用して、Oracle とジオデータベースの間で open_cursors 設定を同期させることができます。
Python スクリプトの実行
ArcGIS Server、ArcGIS Desktop、または ArcGIS Engine のインストールからスクリプトを実行してジオデータベースを作成する場合、下に示すスクリプトを使用できます。
- 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=['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 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)
- *.py 拡張子を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
下の例では、enable_gdb.py ファイルを、orcl という SID を持つ Oracle インスタンスに対して、Linux コンピューターから実行しています。このインスタンスは、サーバー 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
これで、ジオデータベースが Oracle データベースに作成されました。
ジオデータベース作成に関するメッセージは、sde_setup.log ファイルに書き込まれます。このファイルは、スクリプトを実行したコンピューター上の TEMP 変数または TMP 変数で指定されたディレクトリに作成されます。ジオデータベースの作成時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
次に、データベース管理者は、sde.gdb_util.update_open_cursors ストアド プロシージャを使用して、Oracle とジオデータベースの間で open_cursors 設定を同期させることができます。
同じ Oracle データベースに複数のジオデータベースを格納する場合
前のセクションで説明したプロシージャを使用して sde ユーザーのスキーマ (マスター sde ジオデータベースとも呼ばれる) にジオデータベースが作成されている場合、他のユーザーは自分のスキーマにジオデータベースを作成できます。異なるチームまたはプロジェクトのデータをグループ化したり分けたりする手段として、他のユーザーが独自のジオデータベースを作成することを許可できます。
以下のルールが、ユーザーのスキーマのジオデータベースに適用されます。
- ジオデータベースを作成したユーザーが、その所有者になります。そのユーザーは、そのジオデータベースのジオデータベース管理者であり、ジオデータベース管理者権限が必要です。特定のジオデータベース管理者権限については、「Oracle でのジオデータベースの権限」をご参照ください。
- ユーザーが所有できるジオデータベースは 1 つだけです。
- ユーザースキーマ ジオデータベースの所有者のみが、そのジオデータベース内のデータを所有できます。
- ユーザーがジオデータベースを所有する場合、マスター sde ジオデータベース内のデータは所有できません。
- ユーザーがマスター sde ジオデータベース内のデータを所有する場合、ユーザースキーマ ジオデータベースは所有できません。
- 作成および使用するユーザースキーマ ジオデータベースの数が増えると、Oracle データベースへの接続にかかる時間が長くなります。これは特に、ユーザースキーマ ジオデータベースにジオデータベース テーブルとジオデータベースに登録されていないテーブルが混在している場合に当てはまります。
マスター sde ジオデータベースが存在する場合、前述したツールまたはスクリプトのいずれかを使用してユーザースキーマ ジオデータベースを作成できます。
- エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase): このトピックで前述したように、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するには、sys ユーザーのパスワードを認識しておく必要があります。そのため、このツールはデータベース管理者が実行する必要があります。必ずスキーマの所有者の名前をジオデータベース管理者に対して指定してください。
- エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase): sys ユーザーのパスワードを使用できない場合は、ジオデータベースの作成に必要な権限をデータベース管理者から付与してもらうことができます。その後、自分のログインを使用してジオデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールまたはスクリプトを実行して、スキーマにジオデータベースを作成できます。