安裝與升級 > 升級 ThingWorx > 手動升級 > Linux 手動升級 > 手動就地升級至 9.0.x、9.1.x 和 9.2.x:Linux
手動就地升級至 9.0.x、9.1.x 和 9.2.x:Linux
請參閱升級表來決定您的升級途徑。下列步驟僅適用於就地升級。針對移轉升級,請參閱手動移轉至 ThingWorx 9.x:Linux
* 
目前,H2 不支援大整數/時區資料庫移轉指令集。這些移轉指令集針對其他支援的資料庫提供詳細說明。如果目前使用的是 H2 資料庫,且需要時區修正,則必須移轉至支援的資料庫,例如 PostgreSQL 或 MS SQL。如果您的應用程式在未進行時區修正的情況下也能正常運作,您可在 H2 上升級至最新的 ThingWorx 版本。請注意,您將會跳過設定 ThingWorx 伺服器時區部份,如所述。
A.) 升級之前 
1. 如果您的 OS 是 RHEL,請在執行 ThingWorx 升級之前,核對是否已升級至支援的版本。如需詳細資訊,請參閱 系統需求
* 
ThingWorx 9.1 僅在 RHEL 8.2 上受支援。
2. 在開始升級之前,建議您先執行下列操作:
資料庫傾印
備份 ThingworxStorageThingworxPlatform 資料夾中的所有資料。
備份 Tomcat_home 資料夾。這包括 binconflibtempwebappswork 資料夾。
3. 如果您使用除 ThingWorx 平台之外的 ThingWorx 應用程式:
a. 確認 ThingWorx 應用程式版本支援您要升級至的 ThingWorx 版本。請參閱 ThingWorx 應用程式升級支援一覽表
b. 您必須先執行一些步驟,然後才能升級平台。請先參閱升級 ThingWorx 應用程式,再繼續進行下一步。
4. 如果您也已安裝 Navigate,請於 ThingWorx Navigate 相容性一覽表中驗證相容性。
5. PTC 軟體下載中取得最新版本的 ThingWorx。
* 
在目前使用者擁有寫入權限的資料夾中下載並解壓縮 ThingWorx 內容。當更新指令集在流程中建立某些檔案時,需要寫入權限。
6. 核對您是否執行所需版本的 Tomcat 與 Java。請參閱適用於版本需求的系統需求
* 
如果您必須升級 Java 版本,請在升級 Java 之前先執行 ThingWorx 升級。
7. 如果您升級 MSSQL、Azure SQL 或 H2,且資料表格中遺失任何自訂索引欄位值,升級將會失敗。在開始升級流程之前,核對所有自訂索引欄位都有值。
* 
如果您無法執行此操作,升級將會失敗,且您必須再次部署較舊版本 (如果進行了結構描述更新,您必須回復/還原資料庫),並新增遺失的索引值,或從資料表中移除自訂索引,然後再執行升級。
8. 將下列項目新增至 Apache Tomcat Java 選項
-Dlog4j2.formatMsgNoLookups=true
B.) 匯出串流與值串流資料 (僅限 InfluxDB) 
* 
只有在您將 ThingWorx 的 InfluxDB 1.7.x (針對 ThingWorx 8.5.x 或 9.0.x) 升級至 InfluxDB 1.8.x (針對 ThingWorx 9.1.x 或 9.2.x) 時,才需要執行本節中的步驟。
1. 從 InfluxDB 1.7.x/MS SQL/PostgreSQL 匯出資料
a. 以管理員身分登入 ThingWorx。
b. 按一下「匯入/匯出」>「匯出」
c. 可使用下列選項:
針對「匯出選項」,選取「至檔案」
針對「匯出類型」,選取「資料集合」
針對「集合」,選取「串流」
按一下「匯出」
d. 針對值串流資料重複步驟 a-c。
e. 將從系統存放庫建立之串流與值串流資料的已匯出資料夾移至安全位置作為備份。
C.) 停止並刪除 ThingWorx Web 應用程式 
1. 停止 Tomcat。
2. 強烈建議您先備份下列兩個資料夾再繼續:
Apache Software Foundation/Tomcat x.x/webapps/Thingworx
/ThingworxStorage
3. 如果您目前的 Tomcat 版本較舊,不受目標 ThingWorx 版本支援,請更新至支援的 Tomcat 版本。
4. 欲保留現有安裝中的 SSO 組態,請備份 <Tomcat 安裝目錄>\webapps\Thingworx\WEB-INF 資料夾中的 web.xml 檔案。
5. 備份並刪除 /ThingworxStorage/esapi 目錄中的 validation.properties 檔案。
* 
validation.properties 檔案會在啟動 ThingWorx 時建立。如果您要保留所做的任何變更,請將檔案儲存在 ThingworxStorage 目錄外,然後繼續移除 esapi 目錄。在啟動時,ThingWorx 會重新建立該檔案,而且您可以將自訂 regex 新增回自動產生的 validation.properties 檔案中。
如需其他資訊,請參考此主題
6. 轉至 /Apache Software Foundation/Tomcat x.x/webapps 中的 Tomcat 安裝,然後刪除 Thingworx.war 檔案與 Thingworx 資料夾。
D.) 設定 ThingWorx 伺服器時區 
如果您是在 H2 上升級,請略過此步驟。針對其他所有資料庫,將下列參數新增至「Tomcat Java 選項」,以設定 ThingWorx 伺服器時區:
-Duser.timezone=UTC
E.) 更新結構描述並移轉資料 (僅限 PostgreSQL) 
* 
所有升級都只需要執行此部份中的步驟 1。
如果您要從 ThingWorx 8.4.x 或 8.5.x 升級 --> 9.0.x、9.1.x 或 9.2.x,請執行本節其餘部份的步驟。
如果您要從 ThingWorx 9.0.x 或 9.1.x 升級 --> 9.1.x 或 9.2.x,請跳過本節其餘部份的步驟。
1. 執行 ThingWorx 軟體下載 update 資料夾中的下列指令集 (從您升級的來源版本開始):
thingworxPostgresSchemaUpdate8.4-to-8.5.sh
thingworxPostgresSchemaUpdate8.5-to-9.0.sh
thingworxPostgresSchemaUpdate9.1-to-9.2.sh
* 
您不需要執行 thingworxPostgresSchemaUpdate9.0-to-9.1.sh 指令集,因為 9.1 中沒有結構描述更新。儘管指令集因完整性的原因包含在 update 資料夾中,但它是空白的,且僅供要執行自動升級流程的使用者使用。
* 
只有在您從 ThingWorx 8.4.x 或 8.5.x 升級至 9.0.x、9.1.x 或 9.2.x 時,才應執行本部份其餘內容中的步驟。如果您要從 ThingWorx 9.0.x 升級至 9.1.x 或 9.2.x,請跳過本節其餘部份中的步驟。
2. 執行大整數/時區設定指令集,以準備資料庫進行移轉:
* 
如果您已使用 UTC 執行 ThingWorx,您仍需要針對大整數變更執行移轉,但可同時為 sourceTZtargetTZ 參數 (可在以下步驟中的某些指令集中找到) 提供 UTC 的值。
thingworxPostgresDBSetupBigIntTimezoneDataUpdate.sh
3. 欲尋找所有支援的時區,請使用下列指令:
select pg_timezone_names()
* 
為以下資料移轉指令集指定時區時,指定的時區名稱必須與 pg_timezone_names() 指令集顯示的其中一個正式名稱完全相符。
4. 執行模型移轉指令集,以移轉所有模型資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxPostgresModelTablesDataUpdate.sh
* 
使用方式:
thingworxPostgresModelTablesDataUpdate.sh [-h <server>] [-p <port>] [-d <Thingworx database name>] [-u <thingworx database username>] [-r <password>] [-m <azure managed instance name>] [-sourceTZ <source timezone>] [-targetTZ <target timezone>]
範例:
thingworxPostgresModelTablesDataUpdate.sh -sourceTZ US/Eastern -targetTZ Etc/UTC
5. 執行下列每個結構描述移轉指令集,以建立所有資料表、串流及值串流資料的備份表:
* 
基於效能方面的原因,這些指令集實際上不會在這些表格中建立原始資料的副本。這些指令集會將這些現有表格從 "<original-table-name>" 重新命名為 "<original-table-name>_backup"。這樣會防止實際會複製資料的可能耗時流程執行。重新命名這些現有表格 (進而變成備份表) 之後,會以原始名稱建立新表格。這些新表格為空,且與原始表格的用途相同 (因為它們的名稱與原始表格相同)。這些新表格會在後面的步驟中填入移轉的資料。
thingworxPostgresDataTableSchemaUpdate.sh
thingworxPostgresStreamSchemaUpdate.sh
thingworxPostgresValueStreamSchemaUpdate.sh
6. 開啟新指令提示視窗並執行下列資料移轉指令集,以移轉備份表內的資料表資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxPostgresDataTableDataUpdate.sh
* 
使用方式:
thingworxPostgresDataTableDataUpdate.sh [-h <server>] [-p <port>] [-d <thingworx database name>] [-u <thingworx database username>] [-r <password>] [-m <azure managed instance name>] [-sourceTZ <source timezone>] [-targetTZ <target timezone>] [-chunkSize <chunk size>]
範例:
thingworxPostgresDataTablesDataUpdate.sh -sourceTZ US/Eastern -targetTZ Etc/UTC
在啟動此移轉指令集之後,請等候控制台顯示一則訊息,指出您可以安全地重新啟動 Tomcat。在顯示該訊息之後,即使此移轉指令集尚未完成執行,仍可安全地繼續進行下一個步驟。
7. 開啟新指令提示視窗並執行下列資料移轉指令集,以從備份表中移轉串流與值串流資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxPostgresStreamDataUpdate.sh
thingworxPostgresValueStreamDataUpdate.sh
* 
使用方式:
thingworxPostgresStreamDataUpdate.sh [-h <server>] [-p <port>] [-d <thingworx database name>] [-u <thingworx database username>] [-r <password>] [-m <azure managed instance name>] [-sourceTZ <source timezone>] [-targetTZ <target timezone>] [-chunkSize <chunk size>]
thingworxPostgresValueStreamDataUpdate.sh [-h <server>] [-p <port>] [-d <thingworx database name>] [-u <thingworx database username>] [-r <password>] [-m <azure managed instance name>] [-sourceTZ <source timezone>] [-targetTZ <target timezone>] [-chunkSize <chunk size>]
範例:
thingworxPostgresStreamDataUpdate.sh -sourceTz US/Eastern -targetTZ Etc/UTC -chunkSize 5000
thingworxPostgresValueStreamDataUpdate.sh -sourceTz US/Eastern -targetTZ Etc/UTC -chunkSize 5000
在啟動這兩個移轉指令集之後,請勿繼續進行下一個步驟,直到這些移轉指令集,以及資料表移轉指令集 (在上一個步驟中啟動) 皆已成功完成為止。
8. 手動核對下列指令集是否已全部成功完成:thingworxPostgresDataTableDataUpdate.shthingworxPostgresStreamDataUpdate.shthingworxPostgresValueStreamDataUpdate.sh。核對是否已成功移轉所有資料表、串流及值串流資料。
9. 執行清理指令集,以移除移轉期間需要的任何暫存資料庫物件:
* 
雖然此指令集會執行在升級流程期間建立之暫存資料庫物件的部份清理工作,但此指令集 *不會* 刪除在之前步驟中建立的任何備份表,也不會修改這些備份表中的任何資料。這是刻意的行為,可確保資料不會遭到意外刪除。如果您要刪除這些備份表,必須手動刪除。
thingworxPostgresDBCleanupBigIntTimezoneDataUpdate.sh
指令集疑難排解
* 
必須針對 ThingWorx 資料庫執行下列指令。
錯誤碼 23505 表示在插入時違反了重複金鑰唯一性條件約束。要解決這個問題:
a. 執行下列指令:
Select * from migration_log where status = -1 OR status = 0.
b. 針對傳回的這些列,記錄 fromIdtoId 的範圍。
c. 在資料表中查詢從移轉記錄檔寫入的 entry_ids
d. 如果記錄全都在此,針對其中的任何範圍,將 0 或 -1 變更為 1。如果某一範圍遺失部份記錄,請嘗試較小的內容塊大小,或刪除已移轉至表格的記錄,然後再次嘗試移轉。
欲尋找所有支援的時區,請使用下列指令:
select pg_timezone_names()
您必須使用先列出的正式名稱,才能讓 PostgreSQL 根據指定的時間戳記,自動解決移動日期的位移。
欲核對是否已移轉所有 entry_ids,請使用類似如下的 SQL 查詢:
SELECT entry_id FROM data_table_backup EXCEPT SELECT entry_id FROM data_table
SELECT entry_id FROM data_table EXCEPT SELECT entry_id FROM data_table_backup
如果正在系統中使用環境變數 PGPASSWORD,您必須將該變數傳遞至 -r 參數,才能設定執行指令集應使用的密碼。
F.) 更新結構描述並移轉資料 (僅限 MSSQL) 
* 
所有升級都只需要執行此部份中的步驟 1。
如果您要從 ThingWorx 8.4.x 或 8.5.x 升級 --> 9.0.x、9.1.x 或 9.2.x,請執行本節其餘部份的步驟。
如果您要從 ThingWorx 9.0.x 或 9.1.x 升級 --> 9.1.x 或 9.2.x,請跳過本節其餘部份的步驟。
1. 將 ThingWorx 軟體下載中的整個 update 資料夾複製到 MS SQL 伺服器,然後執行 update 資料夾中的下列指令集 (從您升級的來源版本開始):
thingworxMssqlSchemaUpdate8.4-to-8.5.sh
thingworxMssqlSchemaUpdate8.5-to-9.0.sh
thingworxMssqlSchemaUpdate9.1-to-9.2.sh
* 
您不需要執行 thingworxMssqlSchemaUpdate9.0-to-9.1.sh 指令集,因為 9.1 中沒有結構描述變更。儘管指令集因完整性的原因包含在 update 資料夾中,但它是空白的,且僅供要執行自動升級流程的使用者使用。
* 
只有在您從 ThingWorx 8.4.x 或 8.5.x 升級至 9.0.x、9.1.x 或 9.2.x 時,才應執行本部份其餘內容中的步驟。如果您要從 ThingWorx 9.0.x 升級至 9.1.x 或 9.2.x,請跳過本節其餘部份中的步驟。
2. 執行大整數/時區設定指令集,以準備資料庫進行移轉:
* 
如果您已使用 UTC 執行 ThingWorx,您仍需要針對大整數變更執行移轉,但可同時為 sourceTZtargetTZ 參數 (可在以下步驟中的某些指令集中找到) 提供 UTC 的值。
thingworxMssqlDBSetupBigIntTimezoneDataUpdate.sh
3. 執行模型移轉指令集,以移轉所有模型資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxMssqlModelTablesDataUpdate.sh
* 
使用方式:
thingworxMssqlModelTablesDataUpdate.sh [-h <server>] [-i <server-instance>] [-p <port>] [-r <password>] [-l <login-name>] [-d <thingworx-database-name>] [-sourceTZ <source-timezone>] [-targetTZ <target-timezone>]
範例:
thingworxMssqlModelTablesDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC
4. 執行下列每個結構描述移轉指令集,以建立所有資料表、串流及值串流資料的備份表。
* 
基於效能方面的原因,這些指令集實際上不會在這些表格中建立原始資料的副本。這些指令集會將這些現有表格從 "<original-table-name>" 重新命名為 "<original-table-name>_backup"。這樣會防止實際會複製資料的可能耗時流程執行。重新命名這些現有表格 (進而變成備份表) 之後,會以原始名稱建立新表格。這些新表格為空,且與原始表格的用途相同 (因為它們的名稱與原始表格相同)。這些新表格會在後面的步驟中填入移轉的資料。
thingworxMssqlDataTableSchemaUpdate.sh
thingworxMssqlStreamSchemaUpdate.sh
thingworxMssqlValueStreamSchemaUpdate.sh
5. 開啟新指令提示視窗並執行下列資料移轉指令集,以移轉備份表內的資料表資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxMssqlDataTableDataUpdate.sh
* 
使用方式:
thingworxMssqlDataTableDataUpdate.sh [-h <server>] [-i <server-instance>] [-p <port>] [-r <password>] [-l <login-name>] [-d <thingworx-database-name>] [-sourceTZ <source-timezone>] [-targetTZ <target-timezone>] [-chunkSize <chunk-size>]
範例:
thingworxMssqlDataTableDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
在啟動此移轉指令集之後,請等候控制台顯示一則訊息,指出您可以安全地重新啟動 Tomcat。在顯示該訊息之後,即使此移轉指令集尚未完成執行,仍可安全地繼續進行下一個步驟。
6. 開啟新指令提示視窗並執行下列資料移轉指令集,以從備份表中移轉串流與值串流資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxMssqlStreamDataUpdate.sh
thingworxMssqlValueStreamDataUpdate.sh
* 
使用方式:
thingworxMssqlStreamDataUpdate.sh [-h <server>] [-i <server-instance>] [-p <port>] [-r <password>] [-l <login-name>] [-d <thingworx-database-name>] [-sourceTZ <source-timezone>] [-targetTZ <target-timezone>] [-chunkSize <chunk-size>]
thingworxMssqlValueStreamDataUpdate.sh [-h <server>] [-i <server-instance>] [-p <port>] [-r <password>] [-l <login-name>] [-d <thingworx-database-name>] [-sourceTZ <source-timezone>] [-targetTZ <target-timezone>] [-chunkSize <chunk-size>]
範例:
thingworxMssqlStreamDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
thingworxMssqlValueStreamDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
在啟動這兩個移轉指令集之後,請勿繼續進行下一個步驟,直到這些移轉指令集,以及資料表移轉指令集 (在上一個步驟中啟動) 皆已成功完成為止。
7. 手動核對下列指令集是否已全部成功完成:thingworxMssqlDataTableDataUpdate.shthingworxMssqlStreamDataUpdate.shthingworxMssqlValueStreamDataUpdate.sh,然後核對是否已成功移轉所有資料表、串流與值串流資料。
8. 執行清理指令集,以移除移轉期間需要的任何暫存資料庫物件:
* 
雖然此指令集會執行在升級流程期間建立之暫存資料庫物件的部份清理工作,但此指令集 *不會* 刪除在之前步驟中建立的任何備份表,也不會修改這些備份表中的任何資料。這是刻意的行為,可確保資料不會遭到意外刪除。如果您要刪除這些備份表,必須手動刪除。
thingworxMssqlDBCleanupBigIntTimezoneDataUpdate.sh
指令集疑難排解
欲尋找所有支援的時區,請使用下列指令:
select * from sys.time_zone_info
欲核對是否已移轉所有 entry_ids,請使用類似如下的 SQL 查詢:
select dt.entry_id, dtb.entry_id from [thingworx].[twschema].[data_table_backup] dtb full join [thingworx].[twschema].[data_table] dt on dtb.entry_id = dt.entry_id where dtb.entry_id is null or dt.entry_id is null
G.) 更新結構描述並移轉資料 (僅限 Azure SQL) 
* 
所有升級都只需要執行此部份中的步驟 1。
如果您要從 ThingWorx 8.4.x 或 8.5.x 升級 --> 9.0.x、9.1.x 或 9.2.x,請執行本節其餘部份的步驟。
如果您要從 ThingWorx 9.0.x 或 9.1.x 升級 --> 9.1.x 或 9.2.x,請跳過本節其餘部份的步驟。
1. 執行 ThingWorx 軟體下載 update 資料夾中的下列指令集 (從您升級的來源版本開始):
* 
存在於平台中的權限數可能會影響完成升級的時間。更多權限可能會增加完成升級所需的時間。
thingworxAzureSchemaUpdate8.4-to-8.5.sh
thingworxAzureSchemaUpdate8.5-to-9.0.sh
thingworxAzureSchemaUpdate9.1-to-9.2.sh
* 
您不需要執行 thingworxAzureSchemaUpdate9.0-to-9.1.sh 指令集,因為 9.1 中沒有結構描述更新。儘管指令集因完整性的原因包含在 update 資料夾中,但它是空白的,且僅供要執行自動升級流程的使用者使用。
* 
使用方式:
./thingworxAzureSchemaUpdate8.4-to-8.5.sh -d ^database^ -h ^server^ -l ^username^ [-i ^serverInstance^] [-p ^port^] [-o ^option^]
範例:
./thingworxAzureSchemaUpdate8.4-to-8.5.sh -d thingworx -h test.sqldatabase.net -l sqlAdmin
2. 執行大整數/時區設定指令集,以準備資料庫進行移轉:
* 
如果您已使用 UTC 執行 ThingWorx,您仍需要針對大整數變更執行移轉,但可同時為 sourceTZtargetTZ 參數 (可在以下步驟中的某些指令集中找到) 提供 UTC 的值。
thingworxAzureDBSetupBigIntTimezoneDataUpdate.sh
3. 執行模型移轉指令集,以移轉所有模型資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxAzureModelTablesDataUpdate.sh
* 
使用方式:
thingworxAzureModelTablesDataUpdate.sh [-d database] [-h server] [-l loginname] [-i serverinstance] [-r password] [-p port] [-sourceTZ source-timezone] [-targetTZ target-timezone] [-chunkSize chunk-size]
範例:
thingworxAzureModelTablesDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
4. 執行下列每個結構描述移轉指令集,以建立所有資料表、串流及值串流資料的備份表。
* 
基於效能方面的原因,這些指令集實際上不會在這些表格中建立原始資料的副本。這些指令集會將這些現有表格從 "<original-table-name>" 重新命名為 "<original-table-name>_backup"。這樣會防止實際會複製資料的可能耗時流程執行。重新命名這些現有表格 (進而變成備份表) 之後,會以原始名稱建立新表格。這些新表格為空,且與原始表格的用途相同 (因為它們的名稱與原始表格相同)。這些新表格會在後面的步驟中填入移轉的資料。
* 
執行資料表指令集時,會顯示下列預期警告:Warning! The maximum key length for a clustered index is 900 bytes. The index 'data_table_indexes_pkey' has maximum length of 902 bytes. For some combination of large values, the insert/update operation will fail.
thingworxAzureDataTableSchemaUpdate.sh
thingworxAzureStreamSchemaUpdate.sh
thingworxAzureValueStreamSchemaUpdate.sh
5. 開啟新指令提示視窗並執行下列資料移轉指令集,以移轉備份表內的資料表資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxAzureDataTableDataUpdate.sh
* 
使用方式:
thingworxAzureDataTableDataUpdate.sh [-d database] [-h server] [-l loginname] [-i serverinstance] [-r password] [-p port] [-sourceTZ source-timezone] [-targetTZ target-timezone] [-chunkSize chunk-size]
範例:
thingworxAzureDataTableDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
在啟動此移轉指令集之後,請等候控制台顯示一則訊息,指出您可以安全地重新啟動 Tomcat。在顯示該訊息之後,即使此移轉指令集尚未完成執行,仍可安全地繼續進行下一個步驟。
6. 開啟新指令提示視窗並執行下列資料移轉指令集,以從備份表中移轉串流與值串流資料:
* 
在執行指令集之前,請在文字編輯器中開啟指令集,以確保其預設環境值 (例如伺服器、埠、時區等) 正確且足以用於您的環境。如果在指令集中定義的任何預設值看似不適合您的環境,請透過指定一或多個指令行引數來在執行指令集時覆寫預設值。
thingworxAzureStreamDataUpdate.sh
thingworxAzureValueStreamDataUpdate.sh
* 
使用方式:
thingworxAzureStreamDataUpdate.sh [-d database] [-h server] [-l loginname] [-i serverinstance] [-r password] [-p port] [-sourceTZ source-timezone] [-targetTZ target-timezone] [-chunkSize chunk-size]
thingworxAzureValueStreamDataUpdate.sh [-d database] [-h server] [-l loginname] [-i serverinstance] [-r password] [-p port] [-sourceTZ source-timezone] [-targetTZ target-timezone] [-chunkSize chunk-size]
範例:
thingworxAzureStreamDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
thingworxAzureValueStreamDataUpdate.sh -sourceTZ "Eastern Standard Time" -targetTZ UTC -chunkSize 5000
在啟動這兩個移轉指令集之後,請勿繼續進行下一個步驟,直到這些移轉指令集,以及資料表移轉指令集 (在上一個步驟中啟動) 皆已成功完成為止。
7. 手動核對下列指令集是否已全部成功完成:thingworxAzureDataTableDataUpdate.sh thingworxAzureStreamDataUpdate.shthingworxAzureValueStreamDataUpdate.sh。核對是否已成功移轉所有資料表、串流及值串流資料。
8. 執行清理指令集,以移除移轉期間需要的任何暫存資料庫物件:
* 
雖然此指令集會執行在升級流程期間建立之暫存資料庫物件的部份清理工作,但此指令集 *不會* 刪除在之前步驟中建立的任何備份表,也不會修改這些備份表中的任何資料。這是刻意的行為,可確保資料不會遭到意外刪除。如果您要刪除這些備份表,必須手動刪除。
thingworxAzureDBCleanupBigIntTimezoneDataUpdate.sh
H.) 升級至 Java 11 
* 
ThingWorx 9.2.0 及更新版本需要 Java 11。如需詳細資訊,請參閱 系統需求
1. 如果您要升級至 Java 11,需要執行下列步驟:如果已安裝 Java 11,請跳過此部份。
a. 下載 OpenJDKJava 11
b. 在 Linux 中安裝 jEnv:
i. 對 jEnv 存放庫執行 Git clone:
git clone https://github.com/jenv/jenv.git ~/.jenv
ii. 將 jEnv 新增至您的 $PATH:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
iii. 初始化 jEnv:
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
iv. 更新在 ~/.bash_profile 中進行的變更:
source ~/.bash_profile
v. 設定 JAVA_HOME 環境變數:
jenv enable-plugin export
vi. 重新啟動目前 shell 工作階段:
exec $SHELL -l
vii. 執行下列指令,jEnv 即會根據目前的使用中 Java 環境,自動設定 JAVA_HOME 變數:
jenv doctor
c. 新增 Java 環境:
i. 新增任何環境。所有 Java 安裝都位於 /usr/lib/jvm/。使用 jenv add 指令。範例如下:
jenv add /usr/lib/jvm/java-11-amazon-corretto
jenv add /usr/lib/jvm/jdk-11.0.7
ii. 檢查 jenv 的所有可用 Java 版本:
jenv versions
iii. 設定全域 Java 環境:
jenv global <version>
iv. 設定 shell 特定 Java 環境:
jenv shell <version>
v. 確認 jenv 所設定的目前版本:
jenv versions
vi. 更新 Tomcat Java 設定中的路徑。
I.) 部署 ThingWorx war 檔案並重新啟動 
1. 複製新的 Thingworx.war 檔案,然後將其置於 Tomcat 安裝的下列位置:/Apache Software Foundation/Tomcat x.x/webapps
2. 啟用延伸功能匯入。依預設,延伸功能匯入針對所有使用者皆為禁用。將下列內容新增到 platform-settings.json 檔案中。新增下列 ExtensionPackageImportPolicy 參數或將其更新為 true 以允許匯入延伸功能。
"ExtensionPackageImportPolicy": {
"importEnabled": <true or false>,
"allowJarResources": <true or false>,
"allowJavascriptResources": <true or false>,
"allowCSSResources": <true or false>,
"allowJSONResources": <true or false>,
"allowWebAppResources": <true or false>,
"allowEntities": <true or false>,
"allowExtensibleEntities": <true or false>
},
3. 如果您使用 H2 作為 ThingWorx 的資料庫,必須將使用者名稱與密碼新增至 platform-settings.json 檔案。
},
"PersistenceProviderPackageConfigs":{
"H2PersistenceProviderPackage":{
"ConnectionInformation":
{
"password": "<changeme>",
"username": "twadmin"
}
},
4. 啟動 Tomcat。
5. 欲還原 SSO 組態:
a. 從備份 web.xml 檔案中複製 SSOSecurityContextFilter 區塊。
b. 在新建立的 web.xm 檔案中,將 SSOSecurityContextFilter 區塊貼上到最後一個 AuthenticationFilter 區塊之後。
6. 欲啟動 ThingWorx,請在 web 瀏覽器中轉至 <伺服器名稱>\Thingworx。使用下列登入資訊:
登入名稱:Administrator
密碼:<來源伺服器管理員密碼>
J.) 匯入串流與值串流資料 (僅限 InfluxDB) 
* 
只有在您將 ThingWorx 的 InfluxDB 1.7.x (針對 ThingWorx 8.5.x 或 9.0.x) 升級至 InfluxDB 1.8.x (針對 ThingWorx 9.1.x 或 9.2.x) 時,才需要執行本節中的步驟。
1. 為 InfluxDB 1.8.x 建立新持續性提供者,或提供現有 1.7.x 持續性提供者的新連線資訊。
2. 將串流與值串流資料匯入至伺服器。針對串流與值串流資料執行下列步驟。
a. 以管理員身分登入 ThingWorx 9.x。
b. 按一下「匯入/匯出」>「匯入」
c. 可使用下列選項:
i. 針對「匯入選項」,選取「從檔案」
ii. 針對「匯入類型」,選取「資料」
iii. 針對「匯入來源」,選取「檔案存放庫」
iv. 針對「檔案存放庫」,選取「系統」
v. 針對「路徑」,提供有效的「系統存放庫」路徑。
K.) 升級其他元件 
如果您使用「整合連接器」,必須取得並安裝最新版本的 Integration Runtime。如需詳細資訊,請參閱整合連接器的 Integration Runtime 服務的初始設定
如果您要升級 MSSQL JDBC 驅動程式,請核對系統需求,並參閱配置 ThingWorx for MSSQL 以尋找適當的驅動程式。
如果您是從 8.x 升級到 9.x,且有 Java 延伸功能,請參閱將 Java 延伸功能從 8.x 移轉至 9.x
如果您要使用 ThingWorx Analytics 作為解決方案的一部份,則可以使用兩個安裝程式來處理元件升級:
Analytics Server - 安裝或升級 Analytics Server 與 Analytics Extension
Platform Analytics - 安裝或升級 Descriptive Analytics 與 Property Tranforms
如需有關升級程序的詳細資訊,請參閱 ThingWorx Analytics 升級、修改、修復
L.) 針對 9.2+ 執行清理指令集 
如果您要升級至 ThingWorx 9.2.x 或更新版本,您必須執行清理指令集來移除在升級流程期間建立的臨時表格。
執行位於 <installDir>/schema/update 中的 thingworx<database_name>DBCleanupPermissionTempTableUpdate.sh 清理指令集。
指令集會取用參數,例如:
-h <server>
-p <port>
-d <thingworx database name>
-l <thingworx database username> for MSSQL
-u <thingworx database username> for PostgreSQL
-i <SQL server instance name> (optional, for MSSQL installations only)
系統會提示您輸入資料庫使用者的密碼,此密碼會傳入 -u or -l 參數。
M.) 疑難排解 
如果由於缺少自訂索引欄位值而導致升級失敗,您必須再次部署舊版本 (如果進行了結構描述更新,您必須回滾/恢復資料庫) 並新增遺失的索引值,或從資料表中移除自訂索引,然後再執行升級。
在啟動 ThingWorx 平台之後,請檢查平台的應用程式記錄檔。如果您使用 MSSQL、PostgreSQL 或 H2,可能會看到下列內容衝突錯誤訊息。
錯誤疑難排解
應用程式記錄檔錯誤
解決方案
Error in copying permissions: Problems migrating database
MSSQL 升級時常見此移轉錯誤,並會顯示是否有配置了執行時間權限的任何已移轉服務、內容或事件名稱,且其名稱是否包含超過 256 個字元。欲修正此錯誤,請將所有服務、內容和事件名稱限制為少於 256 個字元。
[L: ERROR] [O: c.t.p.m.BaseReportingMigrator] [I: ] [U: SuperUser] [S: ]
[T: localhost-startStop-1] Thing: <Name of Thing>, has a property which conflicts
with one of the following system properties: isReporting,reportingLastChange,reportingLastEvaluation.
Please refer to the ThingWorx Platform 8.4 documentation on how to resolve this problem.
作為新增至 ThingWorx 平台 8.4 之「物件存在」功能的一部份,已將下列內容新增至「可報告的物形式」,並會將其作為實行此形式之物件存在評估的一部份使用:
isReporting
reportingLastChange
reportingLastEvaluation
如果上述其中一個內容名稱之前存在於物件、物範本或物形式中,當平台啟動時,會在應用程式記錄檔中顯示下列錯誤。欲解決此問題,必須移除每個受影響實體上發生衝突的內容,且任何關聯實體已更新來適應此變更 (例如「混搭」或「服務」)。若沒有此更新,關聯物件無法正確顯示其報告狀況,且無法更新/儲存。正確更新這些實體之後,會顯示平台特定的報告內容,並將其用於評估裝置是否已連線且正在進行通訊。
[L: ERROR] [O: c.t.p.m.BaseReportingMigrator] [I: ] [U: SuperUser]
[S: ] [T: localhost-startStop-1] ThingTempate: <Name of ThingTemplate>, has a
property which conflicts with one of the following system properties:
isReporting,reportingLastChange,reportingLastEvaluation.
Please refer to the ThingWorx Platform 8.4 documentation on how to resolve this problem.
[L: ERROR] [O: c.t.p.m.BaseReportingMigrator]
[I: ] [U: SuperUser] [S: ] [T: localhost-startStop-1] ThingShape:
<Name of ThingShape>, has a property which conflicts with one of the following system properties:
isReporting,reportingLastChange,reportingLastEvaluation. Please refer to the ThingWorx Platform
8.4 documentation on how to resolve this problem.
這是否有幫助?