Standard または Advancedのライセンスで利用可能。
エンタープライズ ジオデータベースをアップグレードする目的は、新機能と修正された不具合を利用するために、ジオデータベースのシステム テーブル、ストアド プロシージャ、タイプ、および機能を更新することです。
ArcGIS クライアントの最新バージョンをインストールするか、サービス パック、パッチ、またはホット フィックスを既存のインストールに適用し、ジオデータベースをアップグレードします。
アップグレードの前に必要な手順を完了してから、[ジオデータベースのアップグレード (Upgrade Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用してジオデータベースをアップグレードします。
アップグレードする前に
ジオデータベースを含め、エンタープライズ システムをアップグレードする場合は、まず計画を立てます。開発サーバーまたはテスト サーバーで新しいバージョンをテストして、すべてのクライアント アプリケーションで動作することを確認します。
新しいシステムが想定したとおりに機能することが確認できたら、アップグレードのスケジュールを設定します。アップグレードに必要な人員を確保し、各担当者が割り当てられたタスクを実行するために必要な権限を持っていることを確認します。
次の点に注意してください。
- ArcSDE アプリケーション サーバーは、ArcGIS 10.3 以降のバージョンでは使用できません。ジオデータベースをアップグレードする前に、マップまたはサービスで使用されるすべてのアプリケーション サーバー接続をデータベースに直接接続するように移行しておく必要があります。
- ユーザースキーマ ジオデータベースをアップグレードするには、まず、マスター sde ジオデータベースをアップグレードする必要があります。
- ソフトウェアのベータ バージョンからのアップグレードはサポートされていません。
- お使いのジオデータベースのバージョンがサポート対象の場合は、10.1、10.2.x、10.3.x、10.4.x、10.5.x のジオデータベースから直接アップグレードできます。
- お使いのジオデータベースのバージョンが 10 以前の場合は、まずサポートされているバージョンのジオデータベースにアップグレードし、その後で最新バージョンの ArcGIS にアップグレードしてください。
- ジオデータベースを現在のバージョンにアップグレードすると、ArcGIS 10 以前のクライアントは、そのジオデータベースに接続できなくなります。
- ジオデータベースを以前のバージョンにダウングレードするための正式のメカニズムはありません。新しいバージョンにアップグレードした後でジオデータベースをダウングレードする場合は、元のデータベースをバックアップ ファイルから復元する必要があります。
- ジオデータベースが Oracle 11.x または 12.1.0.1 にあり、ブランチ バージョニングを使用したい場合は、ジオデータベースをアップグレードする前に、ブランチ バージョニングがサポートされているバージョンの Oracle に移行する必要があります。これにより、ジオデータベースにブランチ バージョニング システム テーブルが作成されます。
以下は、ジオデータベースをアップグレードする前に実行する手順のチェックリストです。
- 使用する Oracle と ArcGIS のバージョンの組み合わせが Esri でサポートされているかどうかを確認するには、「ArcGIS に対する Oracle のデータベース要件」をご参照ください。
- ジオデータベースをアップグレードできるかどうかを確認します。これを行うには、移行する ArcGIS クライアントのバージョンを、1 台のコンピューターにインストールします。ArcGIS Desktop をインストールすると、ジオデータベースに接続し、[データベース プロパティ] ダイアログ ボックスを開いてジオデータベースをアップグレードできるかどうかを確認できます。ArcGIS Server (エンタープライズ エディション) または ArcGIS Engine Geodatabase Update エクステンションをインストールすると、ArcPy の Describe 関数を使用して、ジオデータベースをアップグレードできるかどうかを確認できます。
# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/tmp/", "egdb_connection.sde", "ORACLE", "myogdb", "DATABASE_AUTH", "sde", "mysdepassword", "SAVE_USERNAME") # Import ArcPy and check the geodatabase release. import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
false が返された場合、ジオデータベースをアップグレードできます。true が返された場合、ジオデータベースをアップグレードする必要はありません。以降の手順を省略してください。
- Oracle Text コンポーネントがインストールされていることを確認します。
Oracle ではデフォルトで Text コンポーネントがインストールされますが、デフォルトのインストールを実行していない場合、Text コンポーネントがインストールされていない可能性があります。
このコンポーネントがインストールされているかどうかを確認するには、SYSTEM ユーザーまたはデータベースの DBA 権限のあるユーザーとしてログインし、次の SQL ステートメントを実行します。
レコードが返されなかった場合は、Text コンポーネントがインストールされていません。Oracle インストールを実行して Text コンポーネントをインストールしてください。SELECT owner, object_name FROM all_objects WHERE object_type = 'PACKAGE' AND object_name = 'CTX_DDL';
- 既存のマップまたはサービスで使用されているアプリケーション サーバー接続を直接接続に変換します。
- データベースのバックアップを作成します。
- ArcGIS の外部にあるジオデータベース システム テーブルに追加したカスタム機能 (トリガーや追加のインデックスなど) をすべて削除します。
アップグレード手順では、ユーザーがシステム テーブルに追加したカスタマイズは考慮されません。このようなカスタマイズによってシステム テーブルのスキーマ変更が妨げられた場合、アップグレードが失敗します。
- ジオデータベース管理者に、ジオデータベースのアップグレードに必要な権限を付与します。
必要な権限の一覧については、「Oracle でのジオデータベースの権限」をご参照ください。
- SQL からデータに直接アクセスする場合、Oracle サーバー上にある既存の st_shapelib を新しいバージョンのライブラリに置き換えます。10.5.1 の ArcMap または ArcGIS Server がインストールされている DatabaseSupport フォルダーから新しい st_shapelib ファイルをコピーすることができます。
必ず、Oracle サーバーのオペレーティング システムに対応するライブラリを使用してください。
ライブラリを Oracle サーバー上の以前とは異なる場所に配置する場合、extproc が新しいライブラリの場所を指すように再構成し、Oracle リスナーを再起動する必要があります。詳細については、「SQL を使用してジオデータベースにアクセスするための Oracle extproc の構成」をご参照ください。
- ジオデータベースで ST_Raster 格納タイプを使用している場合、Oracle サーバー上にある既存の libst_raster_ora ファイルを新しいバージョンのライブラリに置き換えます。ArcMap または ArcGIS Server がインストールされている DatabaseSupport フォルダーから新しい libst_raster_ora ファイルをコピーすることができます。
必ず、Oracle サーバーのオペレーティング システムに対応するライブラリを使用してください。
- アップグレードするジオデータベースに接続しているユーザーがいないことを確認します。sde マスター ジオデータベースをアップグレードする場合も、Oracle データベース内のユーザースキーマ ジオデータベースに接続しているユーザーが存在しないことを確認します。
ジオデータベースに現在接続しているユーザーのリストを確認するには、ArcGIS Desktop クライアントの [ジオデータベース管理] ダイアログ ボックスに移動します。
これで、ジオデータベースをアップグレードできるようになりました。
ジオデータベースのアップグレード
ArcMap または ArcGIS Pro の [ジオデータベースのアップグレード (Upgrade Geodatabase)] ツールを使用するか、ArcGIS クライアント コンピューター上で実行される Python スクリプトを使用して、ジオデータベースをアップグレードできます。
[ジオデータベースのアップグレード (Upgrade Geodatabase)] ツールの使用
[ジオデータベースのアップグレード (Upgrade Geodatabase)] ジオプロセシング ツールは、次の場所から開くことができます。
- [データ管理] ツールボックス内の [ジオデータベース管理] ツールセット
- ArcMap または ArcCatalog 内の [データベース プロパティ] ダイアログ ボックスの [一般] タブにある [ジオデータベースのアップグレード] ボタン
- ArcGIS Pro 内の [データベース プロパティ] ダイアログ ボックスの [一般] タブにある [アップグレードの実行] ボタン
[前提条件を確認] および [ジオデータベースをアップグレード] オプションをオンのままにすることをお勧めします。これにより、ジオデータベースのアップグレードを続ける前に、アップグレードを行うための前提条件を満たしているかどうかが確認されます。
前提条件のチェックでは、ジオデータベースへの他のアクティブな接続が検出され、接続しているユーザーにジオデータベースをアップグレードするための十分な権限があるかどうか、データベースが XML 列に対応しているかどうか、すべてのデータセットを開くことができるかどうか、データベースとライブラリのリリースが同じかどうかが確認されます。前提条件のいずれかが満たされていない場合、ツールは終了します。アップグレードの手順を再度実行する前に、問題を修正する必要があります。
確認の結果は、ジオプロセシング ツールのダイアログ ボックスで報告されます。チェックで不合格になった (またはアップグレードに失敗した) 場合は、GDBUpgrade.log にある c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product> ファイルにも結果が書き込まれます。
すべてのチェックに合格した場合、ツールはアップグレードに進みます。前提条件チェックとアップグレードの状態は、ジオプロセシング ツールの進行状況を示すダイアログ ボックスに表示されます。アップグレードが失敗すると、情報が GDBUpgrade.log ファイルに書き込まれます。システムの sde_setup.log ディレクトリにある TEMP ファイルに追加情報が書き込まれます。
スクリプトの実行
ジオデータベースをアップグレードするには、以下のサンプル スクリプトのいずれかをテキスト エディターにコピーします。環境の情報に合わせて、変数の値を変更します。
- ダイレクト コネクションを使用する既存のデータベース接続ファイルが存在し、sde ユーザーとして接続する場合、使用しているオペレーティング システムに適用するスクリプトをコピーし、テキスト エディターに貼り付け、環境に固有の情報を使用するように変更し、そのファイルを保存して閉じてから、実行します。
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing database connection file # and upgrade an enterprise geodatabase # Import arcpy module import arcpy # Local variables: Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>" Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
# Name: upgradesdegdb_example.py # Description: Connect from a Linux or UNIX computer # with an existing database connection file # and upgrade an enterprise geodatabase # Import arcpy module import arcpy # Local variables: Output_Workspace = "<user>/connections/<Connection_file>" Default_gdb = "<user>/connections/<Connection_file>" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
- アップグレードのスクリプティングを行うコンピューター上にデータベース接続ファイルがない場合、次のスクリプトをコピーして、環境に固有の情報をコマンド ラインに入力できます。たとえば、テキスト ファイルを gdbupgrade として保存しており、データベースが mydbgdb で、sde マスター ジオデータベースをアップグレードする場合、コマンド プロンプトで以下を入力します。
""" Name: upgrade_gdb.py Description: Provide connection information to an Enterprise geodatabase and upgrade the geodatabase Type upgrade_gdb.py -h or upgrade_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 2.0; valid for 10.1 only") #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, or POSTGRESQL.") 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 ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive): TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only. Default=FALSE") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") # 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 to upgrade account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password do_upgrade = options.Upgrade database = options.Database.lower() database_type = options.Database_type.upper() instance = options.Instance if (database_type == ""): print("\nDatabase type must be specified!\n") parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level to upgrade if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Enterprise geodatabase upgrade requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.") sys.exit("Re-authorize ArcGIS before upgrading.") else: print("\n" + product_license + " license available! Continuing to upgrade...") 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") # Check whether geodatabase needs upgrade isCurrent = arcpy.Describe(Connection_File_Name_full_path).currentRelease if isCurrent == True: print("The geodatabase is already at the current release and cannot be upgraded!") sys.exit("Upgrade did not run.") # Process: Upgrade geodatabase... try: if do_upgrade.lower() == "true": print("Upgrading Geodatabase...\n") arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") else: print("Running Pre-Requisite Check...\n") arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="NO_UPGRADE") 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)
gdbupgrade --DBMS ORACLE -i myogdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE
Oracle のリリースとブランチ バージョン
ArcGIS によってブランチ バージョンがサポートされている Oracle リリースでジオデータベースを作成またはアップグレードする場合にのみ、ブランチ バージョン システム テーブルが作成されます。つまり、ブランチ バージョニングがサポートされていないバージョンの Oracle にジオデータベースがある場合は、ブランチ バージョニングを使用できません。
ジオデータベース バージョンがブランチ バージョニングをサポートしている場合でも、ジオデータベースが Oracle 11.x または 12.1.0.1 データベースにあると (たとえば、10.5.x ジオデータベースが Oracle 11.x にあると)、Oracle をアップグレードしても、ジオデータベースをサポートされているリリースの Oracle に復元しても、ブランチ バージョニングは実装されません。新しい、サポートされている Oracle リリースに移行した後、ジオデータベースをアップグレードする必要があります。