エンタープライズ ジオデータベースの作成 (データの管理)
サマリ
[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ツールは、使用するデータベース管理システム(DBMS)に応じて、データベース、格納場所、およびジオデータベースの管理者またはジオデータベースの所有者として使用するデータベース ユーザを作成します。まずデータベース管理者にジオデータベースの作成に必要な権限を与えます。次にデータベースにジオデータベースを作成します。
使用法
次の表は、各 DBMS におけるツールの機能を示しています。
機能
DBMS
データベースの作成
PostgreSQL および Microsoft SQL Server
表領域の作成
Oracle
データベースにジオデータベース管理ユーザを作成
Oracle、PostgreSQL、SQL Server(sde スキーマ ジオデータベースを作成する場合)
ジオデータベースの作成、ジオデータベースのアップグレードおよびデータベース接続の切断に必要なジオデータベース管理者権限を付与します。
Oracle および PostgreSQL
ジオデータベースの作成およびデータベース接続の切断に必要なジオデータベース管理者権限の付与
SQL Server(sde スキーマ ジオデータベースを作成する場合)
指定されたデータベースにジオデータベースを作成
Oracle、PostgreSQL、SQL Server
-
ジオデータベースを作成するコンピュータには、ArcGIS for Desktop(Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、もしくは ArcGIS for Server(Standard または Advanced)をインストールしておく必要があります。データベース オブジェクトとジオデータベースを作成するためには、直接 DBMS に接続できる必要があります。これには ArcGIS クライアントがインストールされているコンピュータに DBMS クライアントをインストールして構成する必要があります。
構文
パラメータ | 説明 | データ タイプ |
database_platform [database_platform,...] |
ジオデータベースを作成するために接続する、データベース管理システムの種類を指定します。
| String |
instance_name |
SQL Server の場合、SQL Server のインスタンス名を指定します。Oracle の場合、TNS 名または Oracle Easy Connection 文字列を指定します。PostgreSQL の場合、PostgreSQL がインストールされているサーバ名を指定します。 | String |
database_name (オプション) |
このパラメータは DBMS の種類が PostgreSQL と SQL Server である場合のみ有効です。すでに構成されている既存のデータベースの名前を入力するか、またはこれから作成するデータベースの名前を入力します。ツールを利用して SQL Server にデータベースを作成する場合、ファイル サイズは SQL Server のモデル データベースに対して定義したのと同じサイズか、MDF ファイルの場合は 500 MB、LDF ファイルの場合は 125 MB のどちらか大きい方になります。MDF と LDF ファイルは、データベース サーバ上のデフォルトの SQL Server の場所に作成されます。ツールを利用して PostgreSQL にデータベースを作成する場合は、テンプレート 1 のデータベースがテンプレートとして使用されます。 | String |
account_authentication (オプション) |
データベース接続に使用する認証の種類を指定します。
| Boolean |
database_admin (オプション) |
データベース認証を使用する場合は、データベース管理者ユーザを指定する必要があります。Oracle の場合、データベース管理者は sys です。Postgres の場合、postgres スーパーユーザです。SQL Server の場合、sysadmin 固定サーバ ロールのメンバーです。 | String |
database_admin_password (オプション) |
データベース管理者のパスワードを入力します。データベース認証を使用する場合は、データベース管理者ユーザのパスワードを指定する必要があります。 | Encrypted String |
sde_schema (オプション) |
このパラメータは SQL Server の場合のみ該当し、ジオデータベースがデータベースの sde という名前のユーザのスキーマに作成されるか、または dbo スキーマに作成されるかを指定します。dbo スキーマのジオデータベースを作成する場合、SQL Server のインスタンスの dbo であるユーザで接続する必要があります。したがって、オペレーティング システム認証を使用する場合は、使用するログインが SQL Server インスタンスの dbo である必要があります。
| Boolean |
gdb_admin_name (オプション) |
PostgreSQL を使用する場合は、この値は sde である必要があります。sde ログイン ロールが存在しない場合、このツールはロールを作成し、それにスーパーユーザ権限を付与します。また、データベース内に sde スキーマも作成します。sde ログイン ロールが存在する場合、このロールにスーパーユーザ権限が付与されていない場合は付与します。 Oracle を使用する場合は、デフォルトの値は sde です。しかし、ユーザ スキーマのジオデータベースをマスタ sde ジオデータベースの中に作成する場合には、ジオデータベースを所有するユーザの名前を指定します。このユーザが DBMS 内に存在しない場合は、[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ツールによって作成され、ジオデータベースの作成およびアップグレードとユーザ接続の切断に必要な権限が付与されます。このユーザが存在する場合は、ツールによって必要な権限が付与されます。 SQL Server を使用し sde スキーマのジオデータベースを指定した場合、この値は sde である必要があります。ツールは、sde ログイン、データベース ユーザおよびスキーマを作成し、ジオデータベースの作成および SQL サーバ インスタンスへの接続の切断のための権限を付与します。dbo スキーマを指定した場合、このパラメータに値を指定しないでください。 | String |
gdb_admin_password (オプション) |
ジオデータベース管理者ユーザのパスワードを指定します。ジオデータベース管理者ユーザがすでに DBMS に存在する場合、入力するパスワードは既存のパスワードと一致する必要があります。ジオデータベース管理者ユーザがまだ存在していない場合、新規ユーザのための有効なデータベース パスワードを入力します。パスワードは、DBMS が設定するパスワード ポリシーを満たしている必要があります。 パスワードは、ジオプロセシングで暗号化された文字列です。 | Encrypted String |
tablespace_name (オプション) |
このパラメータは DBMS タイプが Oracle および PostgreSQL である場合に有効です。Oracle の場合は、次のいずれかを実行します。
PostgreSQL の場合、既存の表領域の名前を指定してデータベースのデフォルトの表領域として使用するか、このパラメータを空白にしておきます。このツールは PostgreSQL に表領域を作成しません。PostgreSQL では、このパラメータに値を設定しない場合、データベースは pg_default 表領域に作成されます。 | String |
authorization_file |
ArcGIS for Server Enterprise を認証したときに作成されたキーコード ファイルのパスとファイル名を指定します。このファイルは Windows では \\Program Files\ESRI\License<release#>\sysgen フォルダに、Linux では /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen ディレクトリにあります。まだ行っていない場合には、ArcGIS for Server を認証して、このファイルを作成します。 | File |
コードのサンプル
次のスクリプトは Oracle データベースにジオデータベースを作成します。sde ユーザを作成し、sde ユーザに対してデフォルトの表領域である sdetbs を作成します。キーコード ファイルは、リモート Linux サーバ上にあります。
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("ORACLE", "ora11g:1521/elf", "", "DATABASE_AUTH", "sys", "manager", "", "sde", "supersecret", "sdetbs", "//myserver/mymounteddrive/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")
このスクリプトはSQL Server のインスタンス(tor\ssinstance)に接続し、sp_data という名前のデータベースを作成し、その中に sde スキーマのジオデータベースを作成します。オペレーティング システム認証を使用して接続します。キーコード ファイルは、リモート Windows サーバ上にあります。
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("SQLSERVER", "tor\ssinstance1", "sp_data", "OPERATING_SYSTEM_AUTH", "", "", "SDE_SCHEMA", "sde", "sde", "", "//myserver/Program Files/ESRI/License10.1/sysgen/keycodes")
このスクリプトは feldspar という名前のサーバ上の PostgreSQL データベース クラスタに接続します。既存の表領域 gdbspace に sde ユーザとデータベース pggdb が作成されます。キーコード ファイルは、ローカル Linux サーバ上にあります。
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("POSTGRESQL", "feldspar", "pggdb", "DATABASE_AUTH", "postgres", "averturis", "", "sde", "nomira", "gdbspace", "/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")
次のスタンドアロン Python スクリプトにより、オプションを使用して各サイトに固有の情報を提供できます。
"""
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 release")
#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")
# 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"
sys.exit(3)
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 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.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)