アップグレード手順についてはマニュアルに記載がありますが、Windows環境においてはSharePlex10.2.xよりも前のバージョンからSharePlex12.x以降へのアップグレードは、使用されている内部コンポーネントの大幅な刷新に影響を受け、実質的にアンインストールしたうえでの再インストールが必要となります。この記事では、実際に動作している環境でどのような手順でアップグレードすればよいのかを、実例を交えて解説していきます。
| >> デモ環境について |
実際に動作を確認した環境は以下の通りです。OSがWindows Server 2022であるためSharePlex10.2.1を使用していますが、Windows Server 2019の場合にはSharePlex10.2を使用していたり、若干それよりも低いバージョンを使用されているユーザの方もいるかもしれませんが、基本的な手順は一緒ですので、参考になると思います
■デモ環境:ソース
- OS: Windows Server 2022
- DB: Oracle 19c 19.19 Standard Edition
- SharePlex: SharePlex10.2.1
- Hostname: win1
- SID: o19w1
- SharePlex管理用Oracleユーザ: splex
■デモ環境:ソース
- OS: Windows Server 2022
- DB: Oracle 19c 19.19 Standard Edition
- SharePlex: SharePlex10.2.1
- Hostname: win2
- SID: o19w2
- SharePlex管理用Oracleユーザ: splex
| 1. 動作状況確認 [ソース/ターゲット] |
まず、ソース側で動作状況を確認します。レプリケーションはSharePlexのデモテーブルが対象になっています。
sp_ctrl (win1:2100)> status Brief Status for win1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 3380 16-Oct-25 15:44:02 Cmd & Ctrl Running 5860 16-Oct-25 15:44:28 Capture Running 5392 16-Oct-25 15:46:12 Read Running 5064 16-Oct-25 15:46:14 Export Running 5436 16-Oct-25 15:46:23 System is used as a source machine There is 1 active configuration file sp_ctrl (win1:2100)> show config Tables Replicating with no key: "SPLEX"."DEMO_SRC" File Name :TEST_config Datasource :o19w1 Activated :16-Oct-25 15:46:11 Actid :1 Total Objects :1 Total Objects Replicating :1 Total Objects Not Replicating :0 View config summary in C:\Program Files\Quest Software\SharePlex\vardir2100/log/o19w1_config_log sp_ctrl (win1:2100)> view config TEST_config datasource:o.o19w1 #source tables target tables routing map splex.demo_src splex.demo_dest WIN2@o.o19w2 sp_ctrl (win1:2100)> version full SharePlex Version = 10.2.1-b67 (m64, mks) |
次に、ターゲット側でも動作状況を確認します。
sp_ctrl (win2:2100)> version full SharePlex Version = 10.2.1-b67 (m64, mks) sp_ctrl (win2:2100)> status Brief Status for win2 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 4088 16-Oct-25 15:44:09 Import Running 2732 16-Oct-25 15:46:23 Post Running 3068 16-Oct-25 15:46:41 Cmd & Ctrl Running 6052 16-Oct-25 15:46:42 There are no active configuration files |
| 2. Oracleのユーザトランザクションを停止 [ソース] |
Oracleから発生するトランザクションをすべて停止します。SharePlexのアップグレードガイドには、ある程度トランザクション発生を見越して最終反映のSCNを確認して、レプリケーション再開をSCN指定したactivateにより再開させる手法が記載されています。しかし、SharePlex10.2以前から12.x以降へのアップグレードには複数回のOS再起動が必要であり、必然的にDBサーバの停止が必要になります。そのため、そのタイミングでトランザクションの発生を許可してアップグレードを実行することは現実的ではありません。手順や考慮事項が増えるよりもシンプルに発生しない前提を作っての作業をお勧めします。
なお、今回は内部コンポーネントが大幅に刷新されるタイミングであったために、例外的なアップグレードということでご了承ください。通常のアップグレードは、設定内容を引き継いだインプレースアップグレードが可能ですので、Windowsの場合には再起動は必要であるものの、トランザクションの発生抑制は削減することができます。
また、トランザクションは停止するものの、念のためターゲット側で反映されたソース側の最終SCNを確認したい場合には、下記手順で可能です。
ターゲット側でshow scnコマンドを使用するのですが、デフォルトでは使用するためのSP_OPO_UPDATE_SCNパラメータが有効になっていません。パラメータを設定してpostを再起動することで確認することができます。
sp_ctrl (win2:2100)> show scn
No information to display
This command displays information gathered when SP_OPO_UPDATE_SCN is enabled
Usage: show scn
[for datadest]
[on {host}] | [on {host}:{port}] |
[on {login}/{password}@{host}] |
[on {login}/{password}@{host}:{port}]
sp_ctrl (win2:2100)> set param SP_OPO_UPDATE_SCN 1
sp_ctrl (win2:2100)> stop post
sp_ctrl (win2:2100)> start post
sp_ctrl (win2:2100)> status
Brief Status for win2
Process State PID Running Since
--------------- ------------------------------ -------- --------------------
Cop Running 4088 16-Oct-25 15:44:09
Import Running 2732 16-Oct-25 15:46:23
Post Running 5600 20-Oct-25 10:16:42
Cmd & Ctrl Running 6052 16-Oct-25 15:46:42
There are no active configuration files
sp_ctrl (win2:2100)> show scn
For resume replication from o19w1
On source activate to scn=4544616
reconcile queue win1 for o.o19w1-o.o19w2 scn 4544617
|
上記の手順は必須ではなく、それよりもOracleへの一般トランザクションの停止が重要です。APサーバからの接続を停止したり、Oracle LISTENERを停止するなど様々な方法があると思います。SharePlexのora_setupにて接続方式をBEQにしている場合、SQL Net経由の接続は不要であるためOracle LISTENERの起動は必須ではありません。
| 3. deactivateによるレプリケーションの停止 [ソース] |
Oracleへのトランザクションが完全に停止していることを確認してから、SharePlexによるレプリケーションを停止します。
停止するには、deactivateコマンドを使用しますが、その前にかならずソースとターゲットでqstatusコマンドによりキューの滞留が無い状態を確認して、deactivateを実行します。deactivate実行後は、ソースとターゲットでSharePlexの関連プロセスがstatusコマンドによりメインのcopとsp_ctrl制御のCmd&Ctrl以外動作していないことを確認します。
sp_ctrl (win1:2100)> qstatus
Queues Statistics for win1
Name: o.o19w1 (Capture queue)
Number of messages: 0 (Age 0 min; Size 9 mb)
Backlog (messages): 0 (Age 0 min)
Name: win1 (Export queue)
Number of messages: 0 (Age 0 min; Size 9 mb)
Backlog (messages): 0 (Age 0 min)
sp_ctrl (win2:2100)> qstatus
Queues Statistics for win2
Name: win1 (o.o19w1-o.o19w2) (Post queue)
Number of messages: 0 (Age 0 min; Size 65 mb)
Backlog (messages): 0 (Age 0 min)
sp_ctrl (win1:2100)> deactivate config TEST_config
sp_ctrl (win1:2100)> status
Brief Status for win1
Process State PID Running Since
--------------- ------------------------------ -------- --------------------
Cop Running 3380 16-Oct-25 15:44:02
Cmd & Ctrl Running 5860 16-Oct-25 15:44:28
There are no active configuration files
sp_ctrl (win2:2100)> status
Brief Status for win2
Process State PID Running Since
--------------- ------------------------------ -------- --------------------
Cop Running 4088 16-Oct-25 15:44:09
Cmd & Ctrl Running 6052 16-Oct-25 15:46:42
There are no active configuration files
|
deactivateはソース側だけで実行しますが、状況の確認はソースとターゲットで実行します。
| 4. アンインストール前にora_cleanspによりDBのsplexユーザの管理テーブルをクリーンナップ [ソース/ターゲット] |
OracleのSharePlex管理ユーザであるsplexで使用している管理用データについては一旦まっさらにする必要があります。
アンインストール前にora_cleanspを実行してデータを消去します。なお、SharePlexのフォルダから一緒にログ等も削除されるため古いバージョンのvardir/log以下のデータの保持が必要な場合には事前退避してください。
ora_cleanspの実行にはsp_copがシャットダウンされている必要があるため、SpUtilsからサービスのStopを押して停止します。
→ 
ついでに、この後アンインストールするためRemoveボタンを押してサービスの削除もしておいてください。この作業をソースとターゲット両方で実施します。

サービスを停止後に、ora_cleanspでクリーンナップします。以下実行例は、DBのsplexユーザのパスワードがデフォルトの場合の例ですが、本番環境では絶対に複雑なパスワードに変更していただいていると思いますので、パスワードは実行環境に合わせてください。ポート番号とSIDを確認して、ソースとターゲットの両方で実行します。
DBのsplexユーザをオブジェクト毎dropして、新規インストール時にユーザから再作成してもよいです。ただし、その場合には管理テーブル内で特別な制御を実施しているような環境では、必要な設定を再度SQLとして投入していただく必要があります。ora_cleanspを実行した場合には、そうした設定情報はtruncateされないため、再利用すれば再開が容易になります。(例えばDDL除外設定をスキーマやテーブル単位で設定している場合など)
C:\Users\Administrator>ora_cleansp splex/splex Clean port 2100 user splex sid o19w1 Are you sure you want to perform the clean for 'C:\Program Files\Quest Software\SharePlex\vardir2100' and Port 2100? (N) y Starting OraCleanSp Checking for Sp_Copsrv running? Executing Sql : truncate table shareplex_config Executing Sql : truncate table shareplex_objmap Executing Sql : update shareplex_actid set actid=0, seqno=0, offset=0, instance_name = '', host_name = '', ab_flag = 0, que_seq_no_1 = 0, que_seq_no_2 = 0, activation_flag = 0, log_start_offset=0, pitr_start_scn = 0, pitr_complete_scn = 0 Executing Sql : truncate table shareplex_trans Executing Sql : truncate table shareplex_command Executing Sql : truncate table shareplex_dataequator Executing Sql : truncate table shareplex_lobmap Executing Sql : truncate table shareplex_partition_cache Executing Sql : truncate table shareplex_lob_cache Executing Sql : truncate table shareplex_loglist Executing Sql : update shareplex_marker set marker_id = 0 Executing Sql : truncate table shareplex_act_marker Cleaning Directory : rim Cleaning Directory : data Cleaning Directory : db Cleaning Directory : idx Cleaning Directory : save Cleaning Directory : dump Cleaning Directory : log Cleaning Directory : temp Cleaning Directory : state Cleaning Directory : state\openbridge Cleaning Directory : osql Cleaning Directory : cap Cleaning Directory : opx Cleaning Directory : oos Cleaning Directory : jobs Successfully Finished OraCleanSp C:\Users\Administrator>ora_cleansp splex/splex Clean port 2100 user splex sid o19w2 Are you sure you want to perform the clean for 'C:\Program Files\Quest Software\SharePlex\vardir2100' and Port 2100? (N) y Starting OraCleanSp Checking for Sp_Copsrv running? Executing Sql : truncate table shareplex_config Executing Sql : truncate table shareplex_objmap Executing Sql : update shareplex_actid set actid=0, seqno=0, offset=0, instance_name = '', host_name = '', ab_flag = 0, que_seq_no_1 = 0, que_seq_no_2 = 0, activation_flag = 0, log_start_offset=0, pitr_start_scn = 0, pitr_complete_scn = 0 Executing Sql : truncate table shareplex_trans Executing Sql : truncate table shareplex_command Executing Sql : truncate table shareplex_dataequator Executing Sql : truncate table shareplex_lobmap Executing Sql : truncate table shareplex_partition_cache Executing Sql : truncate table shareplex_lob_cache Executing Sql : truncate table shareplex_loglist Executing Sql : update shareplex_marker set marker_id = 0 Executing Sql : truncate table shareplex_act_marker Cleaning Directory : rim Cleaning Directory : data Cleaning Directory : db Cleaning Directory : idx Cleaning Directory : save Cleaning Directory : dump Cleaning Directory : log Cleaning Directory : temp Cleaning Directory : state Cleaning Directory : state\openbridge Cleaning Directory : osql Cleaning Directory : cap Cleaning Directory : opx Cleaning Directory : oos Cleaning Directory : jobs Successfully Finished OraCleanSp |
| 5. 必要なデータの退避 [ソース/ターゲット] |
一旦ディレクトリ等をきれいにして再インストールしてから、必要な設定ファイルを元に戻すため、後で必要になるファイル等を退避します。ora_cleanspを実行するとログ等はすべてきれいになってしまいますが、設定ファイル等は正しく残されます。
C:\Program Files\Quest Software\SharePlex\vardir2100
以下から必要なデータを退避します。
ライセンスキーはSharePlex12.x用のものを新たに適応するため退避不要です。
configディレクトリ以下
[TEST]_config: 自分で作成したconfigファイル:
※ファイル名の設定は自由なので、上記の書式は関係ない。ただ、デフォルトがORA_configというサンプル設定による。
datasource:o.o19w1 #source tables target tables routing map splex.demo_src splex.demo_dest WIN2@o.o19w2 |
dataディレクトリ以下
paramdb: ユーザ定義パラメータ設定
SP_SYS_LIC_[マシン固有hostid] "XXXXXX[34桁のライセンスキー]:会社名" SP_SYS_NETWORK_SECURITY "OLD" # network security model SP_SYS_NETWORK_PASSWORD "" # network password (encrypted) SP_SYS_SSL_KEY_PASS "" # password for private key file (encrypted) |
基本的には上記のファイルだけで問題ありませんが、特殊な設定を行っている場合には他の設定も移行する必要がある場合があります。
conflict_resolution.[sid]: 競合解決設定
transformation.[sid]: トランスフォーメーション設定:
hints.[sid]: ヒント強制指定
oramsglist: SharePlexのPostプロセスが特定のOracleエラーやSharePlexエラーを無視し、処理を継続するために使用する設定ファイル
sp_nt_mon.txt: Windows用通知設定
一見必要そうに見えて対象外なファイル
connections.yaml: 新バージョンインストール時にora_setupにて再作成されるため
上記から使うか使わないかに関わらず、config以下とdata以下をバックアップしておけば安全です。

MKS Toolkit上の設定値の確認と情報の退避
もし、特殊な環境でMKS Toolkitの設定値を変更しないと動作しないような環境だった場合には、バージョンアップ後もなんらかの設定が必要になるケースがあります。
そのため、現在の設定情報を念のため控えておきます。大多数のデフォルト値で動作していた環境の場合には、これらの情報の確認と保存は必要ありません。
MKS Toolkitの設定状況を確認するには、コントロールパネルから"MKS"のキーワードで検索して、Configure PTC MKS Toolkitの項目を開きます。

Configure PTC MKS ToolkitウィンドウのRuntime SettingsタブのCategoryからSemaphore SettingsやMiscellaneous Settingsの項目のスクリーンショットを取っておくとよいでしょう。

これらについて一切設定した経緯が無い場合には、確認自体無視することができます。特殊なケースではご確認ください。
| 6. SharePlexとMKS Toolkitのアンインストール [ソース/ターゲット] |
正しく事前に必要なデータの退避が完了していることを確認してから、ソースおよびターゲットともにアンインストールを実行します。
アプリの一覧からSharePlexを選択して、アンインストールを実行します。

特に理由がなければAutomaticアンインストールで問題ありません。ロールバックも不要なので、確認してアンインストールを進めます。

SharePlexをアンインストールしても、別インストールされているMKS Toolkitは残っています。表示上PTC NuTCRACKER Platform Componentsとなっているものが該当しますので、同様にアンインストールします。

最終的にSharePlexもMKS Toolkitもインストールされていない状態になります。

最後に残存しているフォルダを念のため削除しておきます。念のためc:\Program Files\Quest Softwareのディレクトリは以下がSharePlexしかないことを確認します。
※他のQuest製品がインストールされている場合には、この親フォルダは残す必要があります。

もしSharePlex以外に使用が確認されなかった場合には、c:\Program FilesからMKSとQuest Softwareのフォルダを削除できます。

アンインストール後は念のため再起動してください。これらの作業をソースとターゲットで実行します。なお再起動後にOracleへのトランザクションが発生しないように注意してください。
| 7. SharePlex12.xのインストール [ソース/ターゲット] |
アップグレード作業を実施する時点での最新バージョンを新規インストールします。フォルダはすべて適切に削除されているため、プログラムのインストール自体は、新規の手順で実施すれば問題ありません。
ポート番号やディレクトリなどについて、過去にデフォルトとは異なる設定にしていた場合には、その内容に沿います。
インストール後に再起動します。詳細な説明は割愛させていただきますが、下記にてインストール過程を示します。
→
→ 
→
→ 
→
→ 
→ 
| 8. ライセンスキー投入 [ソース/ターゲット] |
Windows版のSharePlex12.xからは従来とは異なり、インストール後に後からライセンスキーを投入する方法に変更になりました。
SpUtilsからライセンスキーを投入します。





