トラブルシューティング

トラブルシューティング情報を使用して、Internet of Things (IoT)プラットフォームの操作時に発生する可能性のある一般的な問題を特定し、対処します。

必要な権限があることを確認してください。管理者は、必要なポリシーを作成してアクセス権を付与します。詳細は、前提条件およびInternet of Things (IoT)プラットフォームのポリシー詳細を参照してください。

パスワードを更新する

APEXを使用してデータベースに接続する場合、またはアイデンティティ・ドメイン・グループを使用してデータベースに直接接続する場合は、データベース・パスワードのリセットが必要になる場合があります。

原因: APEXを使用していて、パスワードをリセットする必要がある場合

APEXでIoTデータを表示するためのアクセス権を構成すると、データベース・ユーザーおよびAPEXワークスペース管理者ユーザーという2つの異なるユーザーが作成されます。これらは、同じユーザー名および同じ初期パスワードを持つ2つの異なるユーザーです。各ユーザーのパスワードを更新できます。

処置: APEXデータベース・パスワードの更新

  1. データベース・ユーザーのパスワードを変更できるのは、APEXワークスペース管理者のみです。最初は、APEXワークスペース管理者がAPEXデータベース・パスワードを使用してログインしてから、次のステップに従ってデータベース・パスワードを変更します。

    APEXで、ワークスペース名およびデータベース・ユーザー名として、現在のAPEXデータベース・パスワードを使用して、IoTドメインのワークスペースに管理者としてログインします。
    ノート

    2つのアンダースコア__WKSPに注意してください。
    <domain-short-id-from-device-host>__WKSP
  2. 「SQLワークショップ」に移動し、「SQLコマンド」を選択します。
  3. 右上のスキーマ・ドロップダウン・メニューから<iot-domain-short-id-from-device-host>__WKSPスキーマが選択されていることを確認します。スキーマに2つのアンダースコアが含まれていることに注意してください。
  4. データベース・ユーザーのパスワードを変更するには、次のSQLALTER USERおよび必要なREPLACE句を使用します。
    ALTER USER <workspace-administrator-user-name> IDENTIFIED BY "<new-password>" REPLACE "<old-password>";
  5. 「実行」を選択します。
  6. パスワード更新の結果の例:
    User altered.
    
    0.24 seconds

処置: APEXパスワードの更新

APEXパスワードを変更するには:
  • APEXワークスペース管理者は、ワークスペース管理パスワードを変更できます。管理者としてAPEXにログインした後、「APEXアカウント・パスワードの設定」オプションを選択します。詳細は、APEXでのパスワードのリセットを参照してください。
  • APEXユーザーとして、APEXアプリケーションに初めてログインすると、APEXパスワードの変更を求められます。最初のログイン後、APEXログイン・ページでパスワードをリセットできます。
ノート

使用するシステムによっては、パスワードに特殊文字が含まれている場合に二重引用符が必要になることがあります。

処置: APIを使用してAPEXワークスペース・パスワードをリセットします

APEXワークスペース管理者は、IoT APEXワークスペース・アカウントがロックされている場合に変更できます。管理者は、このConfigureIotDomainDataAccess操作を2回実行して、APEXワークスペースのパスワードをリセットできます。
POST /20250531/iotDomains/{iotDomainId}/actions/configureDataAccess
{
  "type": "APEX",
  "dbWorkspaceAdminInitialPassword": "<your-apex-initial-password>"
}

原因: データベースに直接接続するときに認可がありません

次のCLIコマンドを使用してデータベースへの直接接続を確立し、データベースに直接接続する権限がない場合は、アイデンティティ・ドメイン・グループが接続するための新しいデータベース・パスワードを作成できます。

たとえば、oci iot domain configure-direct-data-accessコマンドと必要なパラメータを使用して、直接データベース接続を確立するためにIoTドメインの認証を構成し、接続できない場合です。

oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID:<identity-domain-name>/<identity-group-name>"]'

または、次の形式を使用する場合:

oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID:<identity-group-name>"]'

処置: アイデンティティ・ドメイン・ユーザーのデータベース・パスワードの更新

IAMアイデンティティ・ドメイン・ユーザーのデータベース・パスワードを更新します。そのためには、IoTテナンシにログインし、次のステップを実行します:
  1. ナビゲーション・メニューを開き、「アイデンティティと管理」に移動して「ドメイン」を選択します。
  2. ドメイン・リスト・ページで、操作するアイデンティティ・ドメインを選択し、IoTドメインに接続します。
  3. 「ユーザー管理」タブを選択し、パスワードを更新するユーザーを選択します。「データベース・パスワード」タブを選択して、パスワードを更新し、現在のIAMデータベース・パスワードを削除して新しいIAMデータベース・パスワードを作成します。

デジタルツインモデルDTDL仕様 v3

原因: デジタル・ツイン・モデルを作成するとエラーになります

エラーが表示された場合は、デジタル・ツイン・モデルを作成するときに、サポートされているDTDL v3仕様のみを使用していることを確認します。

処置: サポートされているv3 DTDL仕様のみを使用してください

デジタル・ツイン・モデルを定義する場合、MQTT拡張および書込み可能プロパティを除き、すべてのDTDL v3仕様がサポートされます。
  • writableプロパティがデジタル・ツイン・モデルに含まれている場合は、falseに設定する必要があります。
  • historizedとして注釈を付けることができるのは、コンポーネント内のcontentのみです。これは、IoTプラットフォームがセンサーの時系列テレメトリを保持する必要があることを示しています。デジタル・ツイン・モデルの例dtdl-model-specifications.jsonを参照してください。例は、デジタル・ツイン・モデルの作成を参照してください。

サービス制限超過

リージョンごとのIoTドメインまたはIoTドメイン・グループ・リソース・サービス制限をトラブルシューティングします。

原因: リージョン当たりのIoTリソース制限

Internet of Things (IoT) Platformには、リージョンごとのリソース数が制限されています

IoTドメイン・グループに2つ以上のIoTドメインを作成しようとすると、次のエラーが表示される場合があります。詳細は、IoTドメインの作成またはIoTドメイン・グループを参照してください。

The following service limits were exceeded: <resource-count>. Request a service limit increase from the service limits page in the console.

ノート

Oracleでは、各IoTドメイン・グループ最大2つのIoTドメインの作成が制限されています。IoTドメイン・グループの最大数は5で、IoTドメインの最大数はテナンシのリージョン当たり10です。IoTドメインを作成するには、関連付けられたIoTドメイン・グループの読取りアクセス権が必要です。

改善策: アップグレードして制限を増やす

IoTリソースの制限を確認するには、サービス制限を参照してください。制限を増やす必要がある場合は、サービス制限の引上げをリクエストできます。

OCIDsでの引用符の使用

Oracle Cloud Infrastructure (OCI)では、OCID (Oracle Cloud Identifier)は各クラウド・リソースに割り当てられた一意のIDです。特定のシナリオに応じて、コマンドライン・インタフェース(CLI)、JSON入力またはAPIコールを介してOCIと対話する場合、OCIDを引用符で囲んで文字列値として解釈する必要がある場合があります。または、作業中のコード・エディタが不要な引用符を追加する場合は、引用符を削除する必要がある場合があります。

ノート

一部のアプリケーションまたはコード・エディタでは、不要な引用符を値に追加したり、不要な引用符を確認および削除したりすると、エラーが発生する可能性があります。

JSON標準に準拠し、OCIサービスによる正しい解釈を保証するには、OCIDを二重引用符で囲んで、JSON構造または複合入力内の文字列値として処理する必要があります。CLIコマンドに直接、単純な引数として渡された場合、明示的な引用符は必要ないことがよくあります。

  • CLIでOCIDsを引用しない: OCIDがCLIコマンドの直接引数である場合、引用符が必要な大きな文字列または複合型の一部でないかぎり、明示的に引用符を使用する必要はありません。
    この例は、OCIDを引用符なしでCLIコマンドに使用する方法を示しています。
    oci iot digital-twin-adapter create --iot-domain-id ocid1.iotdomain.oc1.example-ocid 
  • JSON文字列への埋込み時のOCIDsの見積り: OCID値を持つJSON文字列として複雑なパラメータをCLIコマンドに渡す場合、JSON文字列内のOCIDは二重引用符で囲み、必要に応じてエスケープする必要があります。使用しているツールおよびオペレーティング・システムに応じて、Windowsの場合は必須です。詳細は、Passing Complex Input in CLIを参照してください。
  • JSONオブジェクトでのOCIDsの見積り: JSONオブジェクト内のすべての文字列値は、二重引用符で囲む必要があります。OCIDが、APIまたはCLIコマンドを使用してOCIに送信するJSONオブジェクトの値である場合、二重引用符で囲む必要があります:
    { "displayName": "my_resource", "compartmentId": "ocid1.compartment.oc1..<example>" } 
  • APIコールでのOCIDsの見積り: リクエスト本文またはパラメータ: OCIへのAPIコールを行う場合、OCIDがJSONペイロードまたは問合せパラメータとしてのリクエスト本文の一部である場合、文字列として扱われ、JSONペイロード内で二重引用符で囲む必要があります。または、URLパラメータの文字列として適切にエンコードされている必要があります。特定の要件は、APIエンドポイントおよびそのパラメータに予期されるデータ型によって異なります。

外部キーに引用符を使用するデジタル・ツイン・インスタンス

外部キーがデバイス・ユーザー名と等しい: 外部キーに引用符が埋め込まれたデジタル・ツイン・インスタンス("\"american-auto\""など)が作成された場合、curlリクエストのBasic認証ユーザー名にも引用符が含まれている必要があります。そうしないと、不一致が発生し、401 Unauthorizedエラーが発生します。

デジタル・ツイン・インスタンス external key値で引用符を使用する場合は、APIコールを行うときに引用符を使用する必要があります。または、外部キー値の引用符を省略できます。

見積りの問題を回避するために、デジタル・ツイン・インスタンスの外部キー値に引用符を使用しないでください。たとえば、--external-key CLIパラメータと、引用符を使用しない対応する値を示します。

--external-key 01-23-45-67-89-ab

デジタル・ツイン・アダプタでは、JSONオブジェクトに引用符を使用する必要があります

デジタル・ツイン・アダプタのインバウンド・ルートでは、引用符なしの式はサポートされません。他の例は、シナリオを参照してください。

デジタル・ツイン・アダプタでは、inbound-route式は引用符なしのRAW値としてサポートされません。たとえば:

"$.speed": ${(.velocity_kph / 1.609) | floor}
デジタル・ツイン・アダプタでは、inbound-route値の式を引用符を使用して文字列として埋め込む必要があります。次に例を示します。
"$.speed": "${(.velocity_kph / 1.609) | floor}"