Oracle GoldenGate: 初期ロードを使用したOracle Databaseインスタンス化へのMySQL (2025/09/09)

Oracle GoldenGate: 初期ロードを使用したOracle Databaseインスタンス化へのMySQL (2025/09/09)

https://blogs.oracle.com/dataintegration/post/oracle-goldengate-mysql-to-oracle-database-instantiation-using-initial-load

投稿者:Loren Penton | Principal Solutions Architect, Oracle GoldenGate A-Team

多くの組織では、Oracle Databaseが注文管理、請求、顧客プロファイルといった重要なシステムを支え、MySQLはeコマース、コンテンツ管理、Webベース、あるいは医療アプリケーションを支えています。この2つのデータベースを連携させるには、静的データとリアルタイムで変化するデータを移行する必要があり、これはOracle GoldenGateの最適なユースケースとなります。

ここで Oracle GoldenGate が役立ちます。 

MySQL と Oracle 間のレプリケーションの設定は、インスタンス化から始まり、MySQL データの一貫したスナップショットをキャプチャして、Oracle Databaseに静的データをすばやく入力するとともに、リアルタイム同期の準備をします。

ヘルスケア情報をデータ ウェアハウスに複製する場合でも、地域間で電子商取引データを同期する場合でも、レガシー アプリを移行する場合でも、インスタンス化は最初の重要なステップです。

この記事では、複数の Oracle GoldenGate 初期ロード プロセスを使用して、MySQL データベースから Oracle Databaseをインスタンス化し、アプリケーションを停止せずに異機種間 (MySQL から Oracle Database) レプリケーション実装を作成する方法を説明します。

アーキテクチャ図
図1. アーキテクチャ図

前提条件

インスタンス化プロセスを開始する前に、ソースおよびターゲットのOracle GoldenGate Hubマシン、およびソースおよびターゲットのデータベース環境をレプリケーションを有効にするように構成する必要があります。これらの手順をすべて完全に完了することが重要です。完了しないと、セットアップの失敗、データの不整合、またはサポートされていない構成エラーが発生します。

  1. MySQLテーブルをOracleに変換する:Oracle GoldenGateにはデータベース変換ツールは用意されていません。MySQLのテーブル、ビュー、ストアドプロシージャ、およびファンクションをOracleに変換するには、このタスクを実行するユーティリティを選択する必要があります。Oracle SQL DeveloperやSQLinesなど、利用可能なユーティリティは多数あります。
  2. ソースOGG HubにOpenSSLをインストールしてください。Oracle GoldenGate 23ai for MySQLでは、デプロイメントを作成する前に、Oracle GoldenGateサーバーにOpenSSL 1.1がインストールされている必要があります。詳細は、Oracle GoldenGateのドキュメントをご覧ください。
  3. GoldenGateのインストール:ソースOracle GoldenGate HubサーバーにOracle GoldenGate 23ai (Microservices Architecture) for MySQLの最新パッチリリースをインストールし、ターゲットOracle GoldenGate HubサーバーにOracle GoldenGate 23ai (Microservices Architecture) for Oracleをインストールしてください。ソフトウェアのインストールとパッチ適用の詳細については、Oracle GoldenGateのドキュメントを参照してください。
  4. MySQLとOracle GoldenGateのデプロイメントの作成:ソースとターゲットのOracle GoldenGateデプロイメントを作成します。詳細については、Oracle GoldenGateのドキュメントを参照してください。
  5. データベースのバージョン: ソース (MySQL) データベースとターゲット (Oracle) データベースがパッチ リリースで最新であることを確認します。
  6. データベース構成

インスタンス化前の手順

Oracle GoldenGate をレプリケーション用に設定する場合、テーブル メタデータを理解するために時間をかけることは、単に良い習慣であるだけでなく、パフォーマンスと信頼性にとって不可欠です。

Oracle GoldenGateの初期ロード抽出プロセスはシングルスレッドで、各テーブルから(アルファベット順に)フェッチを実行します。このアプローチはシンプルですが、大規模なテーブルやテーブル数が多い環境では非効率になる可能性があります。すべての行が選択され、ターゲットにストリーミングされるため、適切な準備がなければすぐに時間がかかるようになります。

これを最適化するには、次のことが重要です。

  • 複製される各ソース テーブルの行数とサイズを取得します。
    • 移動する必要があるデータの量を把握しておくと、インスタンス化に必要な時間とリソースを見積もるのに役立ちます。
  • ソース テーブルでラージ オブジェクト データ型を確認します。
    • データベースから大きなオブジェクトを取得すると、多くのリソースが消費され、初期ロード抽出のパフォーマンスに影響します。
  • ターゲット テーブルのキー制約を確認します。
    • 主キー、一意キー、および外部キーは、Oracle GoldenGate が変更を正確かつ効率的に複製する機能に影響します。
    • キーのないテーブルでは、変更データのレプリケーションと初期ロードの完了に特別な処理が必要になります。
    • データ適用エラーを防ぐために、インスタンス化では外部キーを無効にする必要があります。

このメタデータを事前に理解しておくことで、情報に基づいた意思決定を行い、潜在的なボトルネックを特定し、環境の規模と複雑さに合わせてインスタンス化戦略を調整することができます。

ソーステーブルの行数とサイズ

テーブル統計を更新した後、次の SQL クエリを使用してソース テーブルのサイズを取得しました。

SELECT
    LEFT(T​​ABLE_NAME,10) AS `Table`,
    LEFT(T​​ABLE_ROWS,10) AS `Rows`,
    LEFT(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2),10) AS `Size (MB)`
FROM
    information_schema.tables
WHERE
    TABLE_SCHEMA = '[データベース名]'
ORDER BY
    (DATA_LENGTH + INDEX_LENGTH) DESC;
ソーステーブルのサイズ
画像2. ソーステーブルのサイズ

上記の出力では、table_17 を除き、ソース テーブルのサイズは非常に小さいため、単一の Oracle GoldenGate 初期ロード抽出によって効率的に処理される必要があります。

Oracle GoldenGateの@RANGE関数を使用して、table_17のデータフェッチを複数の初期ロード抽出プロセスに分割することで、並列処理を実現できます。この関数の詳細については、Oracle GoldenGateのドキュメントを参照してください。このデモでは2つの初期ロード抽出プロセスを使用しますが、さらに並列化することで、ワークロードを3つ、4つ、あるいは任意の数の初期ロード抽出プロセスに分割することも可能です。

@RANGE を使用する場合、データのハッシュ化とフィルタリングはデータベースではなく、初期ロード抽出で行われます。テーブルのデータを取得するように構成された各初期ロード抽出は、取得する値の正しいデータ範囲を決定するために、テーブル全体の初期読み取りを実行する必要があります。テーブルのサイズによっては、この初期読み取りにかなりの時間がかかる場合があります。

ラージオブジェクトのクエリソース

以下は、ラージ オブジェクト データ型の MySQL テーブルを見つけるために使用したクエリです。

select 
    LEFT(tab.table_name,10) as `TABLE`,
    LEFT(col.column_name,10) as `COLUMN`,
    LEFT(col.data_type, 10) as `Data Type`
from information_schema.tables as tab
inner join information_schema.columns as col
    on col.table_schema = tab.table_schema
    and col.table_name = tab.table_name
where tab.table_schema = '[データベース名]'
    and tab.table_type = 'BASE TABLE'
    and col.data_type in ('blob', 'mediumblob', 'longblob',
                         'text','mediumtext','longtext')
order by tab.table_name,
    col.column_name;
LOBデータを含むテーブル
図3. ラージオブジェクトデータを含むテーブル

mylobテーブルは、MySQLからOracleへの実装には含まれません。ただし、ラージオブジェクトを含むテーブルは、初期ロード抽出のパフォーマンスに悪影響を及ぼします。

制約のないターゲットテーブルを識別する

次のクエリは、主キーまたは一意キー制約を持たない Oracle スキーマ内のすべてのテーブルを一覧表示します。

SELECT DISTINCT TABLE_NAME
  FROM (SELECT t.TABLE_NAME
          FROM USER_TABLES t
          WHERE t.TABLE_NAME NOT IN (SELECT DISTINCT u.TABLE_NAME
                                       FROM USER_CONSTRAINTS u
                                       WHERE u.CONSTRAINT_TYPE IN ('U', 'P')) AND
                t.TABLE_NAME NOT IN (SELECT i.TABLE_NAME
                                       FROM USER_INDEXES i
                                       WHERE i.UNIQUENESS = 'UNIQUE'))
  ORDER BY TABLE_NAME;
制約のないテーブル
図4. 制約のないテーブル

主キー制約または一意キー制約のないテーブルの場合は、追加の調査が必要となり、インスタンス化の際に特別な処理が必要になる場合があります。上記のデモテーブルを使用して、これらの追加手順を順に見ていきましょう。

1. ソーステーブルには主キーまたは一意キーがありますか?次のMySQLクエリは、テーブルのすべての制約を一覧表示します。

SELECT
    CONSTRAINT_NAME,
    CONSTRAINT_TYPE
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    TABLE_SCHEMA = '[データベース名]' AND TABLE_NAME = '[テーブル名]';
MySQLの制約
図5. テーブル制約

 

ソース MySQL テーブルには主キーまたは一意キーがありません。

2. 一意の疑似キーを作成するために使用できる数値列またはタイムスタンプ列はありますか?

ソースMySQLテーブルに制約がない場合、疑似キーの作成に使用できる列がテーブルメタデータにあるか確認してください。数値型とタイムスタンプ型が最適です。以下のクエリは、これらのデータ型の列を返します。

SELECT 
  COLUMN_NAME, 
  DATA_TYPE
FROM 
  INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '[データベース名]'
  AND TABLE_NAME = '[テーブル名]'
  AND DATA_TYPE in ('int', 'decimal', 'datetime');
列
画像6. 列

3. 疑似キー列の候補に重複データが含まれていますか?
返された列ごとに、次のクエリを実行して重複データが含まれているかどうかを確認します。

SELECT 
  [列名], 
  COUNT([列名]) AS duplicate_count
FROM 
  [テーブル名]
GROUP BY [列名]
HAVING COUNT([列名]) > 1;
重複行
画像7. 重複のある列

4. 選択した疑似キー列に NULL データが含まれていますか?
重複データが含まれていない列については、NULL が含まれているかどうかを確認します。

select
  count(*)
from 
  [テーブル名]
where 
  [列名] IS NULL;
ヌルデータ
画像8. NULLカウント

この調査では、デモ テーブル table_25 について、INT データ型の列「id」が擬似キーとして使用するための基準 (一意性と NULL データなし) を満たしていることが確認されました。

疑似キーの作成に使用できる列を識別できない場合は、Oracle GoldenGate 初期ロードを使用してテーブルをインスタンス化できません。

ターゲットテーブルの制約を特定する

次のクエリは、Oracle スキーマ内の各テーブルの制約の種類とそのステータスを識別します。

SELECT
    acc.table_name、
    acc.column_name、
    ac.constraint_type、
    ac.validated、
    ac.status
FROM
    all_cons_columns acc
JOIN
    all_constraints ac ON acc.owner = ac.owner
    AND acc.constraint_name = ac.constraint_name
    AND acc.table_name = ac.table_name
WHERE
    ac.constraint_type in ('P','U','R')
    and acc.owner = '[schema]'
    order by table_name;
Oracle制約
図9. Oracleテーブル制約

Oracle GoldenGate for Oracle Database では、制約列の一意性が保証されないため、有効化されていない、または NOVALIDATE として作成された主キー制約または一意キー制約は使用されないことに注意してください。

データ整合性の障害を防ぐため、初期ロード適用プロセスを開始する前に、参照整合性(外部キー)制約をすべて無効化する必要があります。これらの制約は、初期ロードが完了した後に有効化できます。

ソースGoldenGateプロセス

前提条件と調査が完了したら、変更データ キャプチャ (CDC) と初期ロード抽出のための Oracle GoldenGate for MySQL ソース デプロイメントのセットアップに進むことができます。

重要: 抽出のみを作成するため、「作成して実行」は選択しないでください。

チェンジデータキャプチャ抽出

Oracle GoldenGate for MySQL Hub サーバーの管理サービスにログインし、Change Data Capture Extract を作成します。

使用したパラメータ設定は次のとおりです。

EXTRACT edemo
USERIDALIAS [extract database alias] DOMAIN OracleGoldenGate
TRANLOGOPTIONS ALTLOGDEST REMOTE 
EXTTRAIL dm
-- Every 60 minutes, report the count of records 
-- processed since Extract start to the process 
-- report file.
-- Rate reports the number of operations per second
-- The report file also contains DELTA throughput which is
-- the number of records since the last report divided by 
-- the time since the last report
REPORTCOUNT EVERY 60 MINUTES, RATE

-- These two parameters are required because table_25
-- does not have “not null” constraints enabled.
-- Capture all table columns for update operations
NOCOMPRESSUPDATES
-- Capture all table columns for delete operations
NOCOMPRESSDELETES

-- "table_25" does not have a PK or UK, use the "id"
-- column as the pseudo-key
TABLE demodb.table_25, KEYCOLS (id);
TABLE demodb.*;

初期ロード抽出

Oracle GoldenGate for MySQL Hub サーバーの管理サービスにログインし、初期ロード抽出を 3 つ作成します。2 つは大きなテーブル table_17 に関連するワークロードを分割するためのもので、もう 1 つは他のすべてのテーブル用です。

以下は、table_17 を除くすべてのテーブルのパラメータ ファイルです。

EXTRACT L1DEMO
USERIDALIAS [extract database alias] DOMAIN OracleGoldenGate
EXTFILE L1, MEGABYTES 2000, PURGE
-- Every 5 minutes, report the count of records 
-- processed since Extract start to the process 
-- report file.
-- Rate reports the number of operations per second
-- The report file also contains DELTA throughput which is
-- the number of records since the last report divided by 
-- the time since the last report
REPORTCOUNT EVERY 5 MINUTES, RATE
-- Exclude table_17
TABLEEXCLUDE demodb.table_17
TABLE demodb.*;

以下はtable_17のパラメータ ファイルです。

EXTRACT L2DEMO
USERIDALIAS [extract database alias] DOMAIN OracleGoldenGate
EXTFILE L2, MEGABYTES 2000, PURGE
-- Every 5 minutes, report the count of records 
-- processed since Extract start to the process 
-- report file.
-- Rate reports the number of operations per second
-- The report file also contains DELTA throughput which is
-- the number of records since the last report divided by 
-- the time since the last report
REPORTCOUNT EVERY 5 MINUTES, RATE
-- Split table_17 over 2 Extracts using the
-- column "id" to create the hash split
TABLE demodb.table_17, FILTER (@RANGE (1,2,id));

EXTRACT L3DEMO
USERIDALIAS [extract database alias] DOMAIN OracleGoldenGate
EXTFILE L3, MEGABYTES 2000, PURGE
-- Every 5 minutes, report the count of records 
-- processed since Extract start to the process 
-- report file.
-- Rate reports the number of operations per second
-- The report file also contains DELTA throughput which is
-- the number of records since the last report divided by 
-- the time since the last report
REPORTCOUNT EVERY 5 MINUTES, RATE
-- Split table_17 over 2 Extracts using the
-- column "id" to create the hash split

TABLE demodb.table_17, FILTER (@RANGE (2,2,id));


ディストリビューションパス

Oracle GoldenGateドキュメントの指定に従って、ソースOracle GoldenGate HubサーバーからターゲットOracle GoldenGate Hubサーバーへの分散パスを作成します。分散パスは4つ必要になります。1つはチェンジデータキャプチャ抽出用、もう1つは初期ロード抽出用です。

GoldenGateプロセスをターゲットとする

Replicat の作成方法がわからない場合は、Oracle GoldenGate のドキュメントを参照してください。

重要: Replicat のみを作成するので、「作成して実行」は選択しないでください。

初期ロードレプリケートを作成する

先に進む前に、Oracle GoldenGate が初期ロード証跡データをどのように処理し、それが下流の処理にどのように影響するかを理解することが重要です。

初期ロード抽出はソース表から直接データを読み取ります。つまり、トランザクションメタデータ(BEGIN/COMMITレコードなど)は初期ロード証跡ファイルに書き込まれません。Oracle GoldenGateは専用の初期ロードレプリカを使用しません。代わりに、変更データレプリカが初期ロード中に取得されたデータを適用します。変更データレプリカは、証跡ファイル内のトランザクション境界に基づいて操作をトランザクションにグループ化するため、Oracle GoldenGateは初期ロードデータに対して合成(偽の)トランザクションIDを生成します。このIDは、証跡ファイルのシーケンス番号、相対バイトアドレス(RBA)、および証跡の最初のレコードのタイムスタンプから導出されます。

合成トランザクションは、次のいずれかの条件を満たすと完了したとみなされます。

  • 処理中の各トレイルでファイルの終わり(EOF)に達した場合、または
  • Replicatによって読み取られたレコード数が、MAXTRANSOPSパラメータで設定された値に達した(デフォルト:10,000,000レコード)

初期ロードデータ全体が単一の大規模トランザクションとして扱われる可能性があるため、特にParallel Replicatを使用する場合は、Replicat設定の調整が不可欠です。適切に調整されていない場合、次のような問題が発生します。

  • Replicat がハングまたは停止しているように見える場合があります。
  • 統計は報告されません。
  • 合成トランザクションがコミットされるまで、チェックポイントは記録されません。

これらの問題を回避するには、Parallel Replicat で SPLIT_TRANS_RECS 設定を有効にする必要があります。

  • SPLIT_TRANS_RECS は Parallel Replicat に固有のもので、大規模なトランザクションを小さな同時チャンクに分割して、チェックポイントとパフォーマンスを向上させるために使用されます。

初期ロードデータを適用するためのParallel Replicatを作成します。ソースの初期ロードExtractごとに1つのParallel Replicatが必要です。このデモでは、P1LD、P2LD、P3LDの3つのReplicatを作成します。これらはすべて同じパラメータ設定です。

REPLICAT P1LD
USERIDALIAS [replicat database alias] DOMAIN OracleGoldenGate
-- Set minimum number of Appliers to 1 and 
-- spawn up to 6 to improve initial load 
-- performance.
-- When everything has been applied, only 1 
-- Applier will be running, signalling 
-- initial load is complete.
MIN_APPLY_PARALLELISM 1
MAX_APPLY_PARALLELISM 6

-- Every 60 seconds, report the count of 
-- records processed since Replicat starts 
-- to the process report file.
-- Rate reports the number of operations per 
-- second.
-- The report file also contains DELTA 
-- throughput which is the number of records 
-- since the last report divided by the time 
-- since the last report.
REPORTCOUNT EVERY 60 SECONDS, RATE

-- Large transactions should be broken into 
-- pieces of specified size and applied 
-- concurrently.
SPLIT_TRANS_RECS 10000
MAP demodb.*, TARGET pdb_east.demo.*;

 

変更データの作成、Replicatの適用

キューに入れられた変更データとリアルタイムの変更データの両方を適用するには、Parallel Replicat を作成します。

Oracle GoldenGateの初期ロードを使用しているため、特別なパラメータ設定であるHANDLECOLLISIONSを指定する必要があります。HANDLECOLLISIONSはOracle GoldenGateの初期ロードにのみ使用され、本番環境へのデータ適用を継続するには無効にする必要があります。詳細については、Oracle GoldenGateのドキュメントを参照してください。

ターゲット テーブル table_25 には主キーまたは一意キーがないため、ソースの変更データ キャプチャ抽出の設定と一致するように疑似キーを設定する必要があります。

REPLICAT PDEMO
USERIDALIAS [replicat database alias] DOMAIN OracleGoldenGate
-- Every 60 minutes, report the count of 
-- records processed since Replicat starts 
-- to the process report file.
-- Rate reports the number of operations per second.
-- The report file also contains DELTA 
-- throughput which is the number of records 
-- since the last report divided by the time 
-- since the last report.
REPORTCOUNT EVERY 60 MINUTES, RATE

-- Enabled for initial load to handle duplicate and
-- missing data fir a brief period. Must be disabled
-- after initial load completes.
HANDLECOLLISIONS

-- table_25 does not have a PK or UK, KEYCOLS specifies
-- a pseudo-key for update and delete operation efficiency.
MAP demodb.table_25, TARGET pdb_east.tpcc.table_25, KEYCOLS (id);
MAP demodb.*, TARGET pdb_east.demodb.*;

初期ロードを実行する

すべての設定が完了したら、初期ロードを実行する準備が整います。

  1. 変更データ キャプチャ抽出を開始します。
    • Extractの作成から1時間以上経過している場合は、Extractを「今すぐ開始」に変更してください。これにより、不要なデータがキャプチャされ、ターゲットのOracle GoldenGate Hubに送信されるのを防ぐことができます。
    • WebUI の統計ペインを表示して、変更データ キャプチャが実行され、データがキャプチャされていることを確認します。
  2. MySQL データベースで長時間実行されているトランザクションを確認します。
    • チェンジデータキャプチャ抽出の開始時刻より前に開始されたトランザクションは、初期ロード抽出を開始する前にコミットまたはロールバックする必要があります。これを行わないと、データが失われ、ターゲットデータベースが同期されなくなります。
  3. 初期ロード抽出を開始します。
  4. ディストリビューションパスを開始します。
  5. 初期ロード抽出が停止するまで待ちます。
  6. 変更データ抽出に関連付けられた配布パスを停止します。
    • これにより、以降の変更データが下流に送信されるのを防ぎ、HANDLECOLLISIONS パラメータの削除のために変更データ適用レプリカを停止するポイントが提供されます。
  7. 初期ロード レプリケートを開始します。
  8. 初期ロードレプリケートが完了するまで待ちます。
    • 初期ロードReplicatは、初期ロードデータの適用を完了しても停止しません。インスタンス化が完了したかどうかを確認する方法はいくつかあります。
    • Replicatチェックポイントと証跡ファイルサイズの比較
      • GoldenGate Hub サーバーで、初期ロードに使用された証跡ファイルを一覧表示し、最後の証跡シーケンス番号とサイズを Replicat のチェックポイント シーケンス番号および RBA (Web UI から) と比較します。
    • 抽出統計と複製統計を比較する
      • 初期ロード抽出レポートを確認し、テーブルごとにフェッチされた行数を確認します。次に、Replicat統計をチェックして、行数が同じであることを確認します。数値が一致している場合は、初期ロードが正常に完了したことを示します。
      • 初期ロード抽出と Replicat によって報告されたレコード数が一致し、インスタンス化が完了した場合は、初期ロード Replicat を停止できます。
  9. 変更データ適用 Replicat を起動します。
  10. 変更データ適用 Replicat がキューに入れられたすべてのデータの適用を完了するまで待機します。
    • WebUIに表示されるチェックポイントラグが「0」と表示されたら、Replicatのチェックポイント情報を確認します。2~3分待ってからページビューを更新し、チェックポイントが増加していない場合は、キュー内のデータがすべて適用されていることを示します。
  11. 変更データ適用 Replicat を停止します。
  12. パラメータ「HANDLECOLLISIONS」を削除します。
  13. 変更データ適用 Replicat を起動します。
  14. 変更データ抽出に関連付けられた配布パスを開始します。
  15. WebUI の統計ペインを表示して、変更データ適用 Replicat がターゲットの Oracle テーブルにデータを適用していることを確認します。
  16. 進行中の変更データ適用同期の初期ロードとセットアップが完了しました。

インスタンス化後のアクティビティ

インスタンス化後に実行する必要があるアクティビティがいくつかあります。

  1. 対象データを検証する
    • 対象データの正確性を検証する必要があります。
    • このタスクには、Oracle GoldenGate Veridata の使用をお勧めします。Oracle GoldenGate Veridata は、比較操作中にテーブルがロックされないため、データベースとアプリケーションユーザーへの影響を最小限に抑えながら、異機種間の比較と修復に使用できます。データ比較は、リアルタイムデータレプリケーションの有無にかかわらず、ソースデータベースとターゲットデータベース間で実行できます。
  2. 初期ロードレプリケートを削除します。
  3. 初期負荷分散パスを停止して削除します。
  4. 初期ロード抽出を削除します。
  5. Oracle GoldenGate インスタンスごとに管理サービス WebUI でトレイル パージ タスクを作成し、Oracle GoldenGate トレイルが消費されるときにディスク領域が解放されるようにします。

まとめ

この記事では、複数のOracle GoldenGate初期ロードプロセスを使用して、ソースMySQLデータベースからOracleターゲットデータベースへのOracle GoldenGate初期ロードを実行する詳細な手順を説明し、アプリケーションを停止することなくリアルタイムレプリケーションを実現しました。Oracle GoldenGateの機能の詳細については、以下を参照してください。

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle GoldenGate 23aiでMicrosoft Fabricでのオープン・ミラーリングがサポートされるようになりました (2024/11/19)

OCIサービスを利用したWebサイトの作成 その4~Identity Cloud Serviceでサイトの一部を保護 (2021/12/30)