ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。ラボを完了する際は、これらの値をクラウド環境に固有の値に置き換えてください。
Amazon DynamoDBからOracle NoSQL Database表へのデータの移行
はじめに
Amazon DynamoDBは、Amazon Web Servicesが提供するフルマネージドのNoSQLデータベース・サービスで、高速でスケーラブルなキーバリューとドキュメント・データ・ストレージを提供します。
Oracle NoSQL Database Cloud Serviceは、Oracle Cloud Infrastructure上のOracle Corporationが提供するフルマネージドのNoSQLデータベース・サービスです。低レイテンシのパフォーマンスとクラウドネイティブ・アプリケーションの自動スケーリングを備えた、スケーラブルなキーバリューおよびJSONドキュメント・ストレージを提供します。
このチュートリアルでは、ツールOracle NoSQL Database Migratorを使用して、Amazon DynamoDBからOracle NoSQL Database Cloud Serviceにデータを移行する方法について説明します。
移行ワークフローでは、DynamoDBのネイティブなS3へのエクスポート機能を使用して、表データをDynamoDB JSON形式で抽出します。その後、エクスポートされたデータは、Oracle Cloud Infrastructure (OCI)で実行されているOracle NoSQL Database Cloud Serviceにインポートされます。
アーキテクチャ
移行ワークフローは、次のコンポーネントで構成されます。
- Amazon DynamoDB (ソース・データベース)
- Amazon S3(エクスポート・ストレージ)
- OCIコンピュート・インスタンス(Oracle NoSQL Database Migratorを実行)
- Oracle NoSQL Database Cloud Service (ターゲット・データベース)

高レベルの移行プロセス
- DynamoDB表およびAmazon S3バケットをプロビジョニングします。
- 表でPITRを有効にし、DynamoDB表をAmazon S3バケットにエクスポートします。
- OCIコンピュート・インスタンスをプロビジョニングします
- ComputeにOracle NoSQL Database Migratorツールをインストールして構成します。
- OCIコンピュートでAWSおよびOCI認証を構成します。
- Amazon S3バケットからOCI NoSQLへの移行を実行
- Oracle NoSQL Databaseで移行データを検証します。
前提条件
始める前に次を確認します。
- DynamoDBおよびS3を管理する権限を持つアクティブなAWSアカウントがあります。
- 次の権限を持つOCIテナンシがあります:
- コンパートメントを作成
- コンピュート・インスタンスの構築
- Oracle NoSQL表の作成
- OCIコンピュート・インスタンスへのSSHアクセス権があります。
タスク1: Amazon DynamoDBリソースのプロビジョニング
このチュートリアルでは、この演習で必須となる基本的な必須リソースのみをAWSにプロビジョニングします。
1.AWSでのIAMユーザーの作成
DynamoDB操作を管理する専用IAMユーザーを作成します。
a. AWS Consoleにログイン
b. IAM、ユーザーに移動します
c. 「ユーザーの作成」をクリックします
d. プログラム的アクセスの割当て
AdministratorAccessポリシーをアタッチします(デモ用)

e. 確認し、「Create user」をクリックします。
⚠️ 本番環境では、最小権限のIAMポリシーを使用します。
2.AWSでのDynamoDB表の作成
a. AWS Consoleにサインインします。
b. DynamoDBに移動します。

c. 「表の作成」をクリックします。

d. 次を指定します:
- 表名
- パーティション・キー
- オプションのソート・キー

e. デフォルト設定を受け入れて表を作成します。
f. 作成された表を確認します。

3.DynamoDB表に新しい列を追加するか、サンプル・レコードを挿入します。
a. AWS Consoleにサインインします。
b. 表を選択します
c. 「処理」、「品目の作成」をクリックします。

d. サンプル・レコードの挿入

e. レコードの検証

タスク2: Amazon S3バケットへのDynamoDB表のエクスポート
DynamoDBのネイティブなS3へのエクスポート機能を使用して、DynamoDB JSON形式の表データをS3バケットに抽出します。
1.Amazon S3バケットの作成
a. AWS Consoleへのサインイン
b. S3に移動します。
c. 新規バケットの作成

d. デフォルト設定を維持
e. バケットの検証

2.Point-In-Timeリカバリ(PITR)の有効化
DynamoDBエクスポートにはPoint-in-Timeリカバリが必要です。PITRは、エクスポートする前に表レベルで有効にする必要があります。
a. 表の選択
b. Point-in-Timeリカバリの有効化

c. PITRを有効にした後。

3. 表データをS3バケットにエクスポートします。
a. AWS Consoleにサインインします。
b. 表の選択
c. 「S3にエクスポート」をクリックします。
d. 選択:
- 全体エクスポート
- DynamoDB JSON形式
- 暗号化(デフォルト)
e. 「エクスポート」をクリックします


4. エクスポートされたデータの検証
完了後:

S3://bucket-name/AWSDynamoDB/ExportID/data/
次を含む:
- GZIP圧縮JSONファイル
- DynamoDB JSON形式

タスク3: Oracle Cloud Infrastructure環境の準備
1. コンパートメントの作成
a. OCIコンソールにサインインしてください。
b. アイデンティティとセキュリティ、コンパートメントに移動します。
c. Oracle NoSQL表の新しいコンパートメントを作成します。
2. コンピュート・インスタンスを作成する
a. Compute、Instancesに移動します。
b. 「インスタンスの作成」をクリックします。
c. 選択します:
- 形状:
VM.Standard.E4.Flex(または同等) - オペレーティング・システム: Oracle Linux 9 d. インスタンスを作成します。
このコンピュート・インスタンスは、Oracle NoSQL Database Migratorを実行します。
3.Oracle NoSQL Database Migratorのインストール
Oracle NoSQL Migratorは、DynamoDBエクスポート・ファイルをAmazon S3から読み取り、データをOCI Oracle NoSQLデータベースにインポートします。上で作成したOCIコンピュートにOracle NoSQL Migratorツールをインストールします。
a. Java 11のインストール
Oracle NoSQL Database Migratorでは、Javaがコンピュートで実行されている必要があります。
- 新しく作成したコンピュート・インスタンスにopcユーザーとしてログインし、次のようにJava 11をインストールします。
sudo yum install java-11
b. Extractマイグレータ・パッケージ
- Oracle NoSQL Database Migrator 1.8.0をダウンロードします。SCPを使用して、Oracle NoSQL Database Migrator ZIPファイルを新しいコンピュート・インスタンスのopcユーザーのホーム・ディレクトリにアップロードします。
- ダウンロードしたOracle NoSQL Database Migratorソフトウェアを解凍します。Migratorはインストールを必要とせず、tar解除するだけです。
tar -zxvf V1053574-01.tar.gz
cd nosql-migrator-1.8.0/
インストールの検証:
[opc@nosql-migrator-1.8.0]\$ ls -ltr
total 332
-rw-r--r--. 1 opc opc 822 Nov 13 07:26 sdk_logging.properties
-rw-r--r--. 1 opc opc 1720 Nov 13 07:26 README.md
-rw-r--r--. 1 opc opc 897 Nov 13 07:26 log4j2.xml
-rw-r--r--. 1 opc opc 1870 Nov 13 07:26 LICENSE.txt
-rw-r--r--. 1 opc opc 488 Dec 2 07:11 Dockerfile
-rw-r--r--. 1 opc opc 234275 Dec 23 08:38 THIRD_PARTY_LICENSES.txt
-rwxr-xr-x. 1 opc opc 73063 Dec 23 08:38 runMigrator
-rw-r--r--. 1 opc opc 4640 Dec 23 08:38 CHANGELOG.md
drwxr-xr-x. 2 opc opc 124 Feb 6 02:50 lib
タスク4: セキュア・アクセス(OCIおよびAWS)の構成
Oracle NoSQL Migratorを使用するには、コンピュート・インスタンスがAmazon S3リソースとOracle Cloud Infrastructure (OCI)リソースの両方にアクセスできるように、セキュアなクラウド間認証を構成する必要があります。
1.OCI APIキーの作成
OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、Oracle NoSQL Database Cloud Service表を作成および管理する権限が必要です。
a. OCIコンソールで、「プロファイル」、「APIキー」を開きます。
b. 新しいAPIキーを追加します

c. 非公開キーをダウンロードします。
d. レコード:
- ユーザーOCID
- テナンシOCID
- フィンガープリント
- リージョン識別子

2.OCI構成ファイルの作成
a. SSHを使用して、前に作成したコンピュート・インスタンスにopcユーザーとしてログインします。
b. すべてのOCIアイデンティティ・ファイルを/home/opc/.oci directoryの下に作成します。
秘密キー:
c. コンピュート上の秘密キーを/home/opc/.oci/ociuser.pemとしてコピーします。
/home/opc/.oci/ociuser.pem
構成ファイル:
\$vi /home/opc/.oci/config
次に例を示します:
[DEFAULT]
user=ocid1.user.oc1...
fingerprint=xx:xx:xx
tenancy=ocid1.tenancy.oc1...
region=ap-hyderabad-1
key_file=/home/opc/.oci/ociuser.pem
3.AWSアクセス・キーの作成
AWSコンソールで、Amazon DynamoDBデータがエクスポートされているAmazon S3 Object Storageにアクセスするユーザーのアクセス・キー(存在しない場合)を作成します。
a. AWS Consoleにサインインします。
b. IAM、ユーザー、セキュリティ資格証明に移動します
c. アクセス・キーの作成
ユース・ケース: AWSの外部で実行されているアプリケーション。

4.AWS資格証明の構成
コンピュート・インスタンスに次のファイルを作成します:
/home/opc/.aws/config
/home/opc/.aws/credentials
構成の例:
[default]
region=<aws_region>
資格証明の例:
[default]
aws_access_key_id=<access_key>
aws_secret_access_key=<secret_key>
タスク5: Oracle NoSQLマイグレータの構成と実行
マイグレータには、次のことを説明するJSON構成ファイルが必要です。
- ソース(S3)
- シンク(OCI NoSQL)
- 表スキーマ
- 資格証明
1. 移行構成ファイルの作成
ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを作成します。DynamoDB表のsinkノートDDBPartitionKeyおよびDDBSortKeyの下。
作成:
/home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json
構成例:
{
"source": {
"type": "aws_s3",
"format": "dynamodb_json",
"s3URL": "https://bucket-name.s3.region.amazonaws.com/AWSDynamoDB/ExportID/data",
"credentials": "/home/opc/.aws/credentials",
"credentialsProfile": "default"
},
"sink": {
"type": "nosqldb_cloud",
"endpoint": "<oci_region>",
"table": "Emp_records",
"schemaInfo": {
"defaultSchema": true,
"DDBPartitionKey": "PartitionKey:string",
"DDBSortKey": "SortKey:Number",
"readUnits": 10,
"writeUnits": 10,
"storageSize": 1
},
"compartment": "<compartment_ocid>",
"credentials": "/home/opc/.oci/config",
"credentialsProfile": "DEFAULT",
"overwrite": true
},
"abortOnError": false,
"migratorVersion": "1.8.0"
}
デフォルトのスキーマ・モードの理解
defaultSchema: trueの場合:
Oracle NoSQLでは、次の表が作成されます。
- パーティション・キー
- オプションのソート・キー
documentJSON列
すべての非キーDynamoDB属性は、document内に格納されます。
2. 移行の実行
コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.8.0サブディレクトリに変更します
\$cd /home/opc/nosql-migrator-1.8.0
\$./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json
正常に実行されると、処理されたレコードの数が出力に表示されます。
正常な移行ログ:
[opc@.nosql-migrator-1.8.0]\$ ./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_custom-schema.json
2026-02-11 13:32:35.279 [INFO] Configuration for migration:
{
"source" : {
"type" : "aws_s3",
"format" : "dynamodb_json",
"s3URL" : "https://dbmigbucket2oci.s3.ap-southeast-2.amazonaws.com/AWSDynamoDB/01770816089608-60282a9b/data",
"credentials" : "/home/opc/.aws/credentials",
"credentialsProfile" : "default"
},
"sink" : {
"type" : "nosqldb_cloud",
"endpoint" : "ap-hyderabad-1",
"table" : "Emp_records",
"schemaInfo" : {
"defaultSchema" : true,
"DDBPartitionKey" : "On_roll:string",
"DDBSortKey" : "EmpID:Number",
"readUnits" : 5,
"writeUnits" : 50,
"storageSize" : 5
},
"compartment" : "ocid1.compartment.oc1..aaaaaaaazliaxu2oqqcp3x6574nxkegv6lxbvh5lildyztb4fizbk2tqv2ia",
"includeTTL" : false,
"credentials" : "/home/opc/.oci/hyd_config",
"credentialsProfile" : "DEFAULT",
"writeUnitsPercent" : 90,
"overwrite" : true,
"requestTimeoutMs" : 5000
},
"abortOnError" : false,
"migratorVersion" : "1.8.0"
}
2026-02-11 13:32:35.283 [INFO] creating source from given configuration:
2026-02-11 13:32:37.061 [INFO] source creation completed
2026-02-11 13:32:37.061 [INFO] creating sink from given configuration:
2026-02-11 13:32:38.253 [INFO] sink creation completed
2026-02-11 13:32:38.255 [INFO] creating migrator pipeline
2026-02-11 13:32:38.255 [INFO] [cloud sink] : start loading DDLs
2026-02-11 13:32:38.256 [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS Emp_records (On_roll string,EmpID Number,document JSON, PRIMARY KEY(SHARD(On_roll),EmpID)),limits: [5, 50, 5]
2026-02-11 13:32:38.763 [INFO] [cloud sink] : completed loading DDLs
2026-02-11 13:32:39.426 [INFO] migration started
2026-02-11 13:32:39.635 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/kaqjylfjsm4dzaf52u2e6qstia.json.gz
2026-02-11 13:32:40.373 [INFO] Migration success for source kaqjylfjsm4dzaf52u2e6qstia. read=2,written=2,failed=0
2026-02-11 13:32:40.373 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/phz6b5k7mmytpcrqe72pfnj3zu.json.gz
2026-02-11 13:32:40.606 [INFO] Migration success for source phz6b5k7mmytpcrqe72pfnj3zu. read=0,written=0,failed=0
2026-02-11 13:32:40.606 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/rtm6rzjciq6jhds3dcp4pcro5u.json.gz
2026-02-11 13:32:40.839 [INFO] Migration success for source rtm6rzjciq6jhds3dcp4pcro5u. read=0,written=0,failed=0
2026-02-11 13:32:40.839 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/vrukpcnd6e3kddjg4qite4upzi.json.gz
2026-02-11 13:32:41.304 [INFO] Migration success for source vrukpcnd6e3kddjg4qite4upzi. read=1,written=1,failed=0
2026-02-11 13:32:41.304 [INFO] Migration is successful for all the sources.
2026-02-11 13:32:41.306 [INFO] migration completed.
Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0.
Elapsed time: 0min 1sec 878ms
Migration completed.
タスク6: 移行の検証
Data Migratorが正常に実行されると、DynamoDBに挿入されたすべての表レコードがOracle NoSQLに表示されるようになります。
a. OCIコンソールを開きます。
b. 「データベース、Oracle NoSQL Database、表」に移動します。

c. 適切なコンパートメントを選択します。
d. 移行された表を開きます。

e. レコードを確認します。
- 「表」を選択し、「データの参照」をクリックします。
- 「Execute」をクリックします。

移行に関する考慮事項とベスト・プラクティス
容量計画
- 適切な読取り/書込みユニットの構成
writeUnitsPercentを慎重に調整します。
セキュリティ
- 最小権限IAMの使用
- APIキーのローテーション
- 資格証明をプレーン・テキストに格納しない
大きい表
複数テラバイトのエクスポートの場合:
- S3エクスポート・サイズの監視
- OCIでの書込みユニットの増加
- エクスポートのバッチ処理を検討
TTL処理
DynamoDB TTLが必要な場合は、次を有効にします。
"includeTTL": true
複数表移行
複数の表を移行する場合は、AWS CLIスクリプトを使用してエクスポートを自動化します。
まとめ
このチュートリアルでは、ネイティブ・エクスポート機能とOracle NoSQL Database Migratorを使用した、Amazon DynamoDBからOracle NoSQL Database Cloud Serviceへのエンドツーエンドの移行ワークフローを示します。
このアプローチにより、次のことが可能になります。
- クラウドの移植性
- 最新化への取り組み
- マルチクラウド・アーキテクチャ
- 原価の最適化
- OCIエコシステムとの統合
適切な計画、セキュアな構成および容量チューニングにより、組織はクラウド・プラットフォーム間でシームレスなNoSQLデータ移行を実現できます。
トラブル・シューティング
- エクスポート前にPITRが有効になっていることを確認します。
- S3アクセスが失敗した場合、AWS資格証明を確認します。
- 正しいOCIリージョンおよびコンパートメントOCIDを確認してください。
- 移行のスループットが遅い場合は、書込みユニットを増やします。
- マイグレータ・ログで詳細なエラー・メッセージを確認します。
リソースのクリーン・アップ
このチュートリアルを完了した後、不要な料金を回避するために次のリソースを削除することを検討してください。
- DynamoDB表を削除します。
- Amazon S3バケットおよびエクスポートされたファイルを削除します。
- OCIコンピュート・インスタンスを終了します。
- Oracle NoSQL表を削除します(不要になった場合)。
- 未使用のIAMユーザーおよびAPIキーを削除します。
関連リンク
確認
著者 - Dharmesh Patel (Customer Success Services、プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、Oracle Learning Explorerになるには、education.oracle.com/learning-explorerにアクセスしてください。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Migrate Data from Amazon DynamoDB to Oracle NoSQL Database Cloud Service
G53045-01