アップグレード手順についてはマニュアルに記載がありますが、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
|
a
| 4. アンインストール前にora_cleanspによりDBのsplexユーザの管理テーブルをクリーンナップ |
OracleのSharePlex管理ユーザであるsplexで使用している管理用データについては一旦まっさらにする必要があります。
アンインストール前にora_cleanspを実行してデータを消去します。なお、SharePlexのフォルダから一緒にログ等も削除されるため古いバージョンのvardir/log以下のデータの保持が必要な場合には事前退避してください。
ora_cleanspの実行にはsp_copがシャットダウンされている必要があるため、SpUtilsから停止します。
→ 
ついでに、この後アンインストールするためサービスの削除もしておいてください。

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 |
a