6 Global Data Servicesのトラブルシューティング

次のトピックでは、発生する可能性があるGDSの問題をトラブルシューティングするためのツールおよび解決方法について説明します。

6.1 Global Data Servicesコンポーネントの実行ステータスの取得

statusコマンドを使用すると、GDSコンポーネントの実行ステータスを取得できます。

GDSCTL>status gsm
 
GDSCTL>status service
 
GDSCTL>status database

6.2 Global Data Servicesコンポーネントの静的構成情報の表示

gdsctl configコマンドを使用すると、様々なGDSコンポーネントの静的構成情報を取得できます。

GDSCTL>config

GDSCTL>config gsm

GDSCTL>config region

GDSCTL>config gdspool

GDSCTL>config database

GDSCTL>config service

GDSCTL>config invitednode

6.3 ネットワークの問題

ここでは、次の問題について説明します:

  • ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
  • ORA-12516: TNS:listener could not find available handler with matching protocol stack
  • ORA-12541: TNS:no listener
  • GSM-40167: VNCR entry "<hostname>" is not resolvable on GSM host

6.3.1 ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません

グローバル・サービスが停止している可能性があります。プール・データベースが実行されており、サービスが起動していることを確認してください。

グローバル・サービスが無効である可能性があります。プール・データベースが実行されており、サービスが有効で起動していることを確認してください。

GDSプール・データベースが停止している可能性があります。GDSプール・データベースが実行されており、サービスが有効で起動していることを確認してください。

6.3.2 ORA-12516: TNS: リスナーは、一致するプロトコル・スタックが使用可能なハンドラを検出できませんでした。

GDSプール・データベースのローカル・リスナーが停止している可能性があります。GDSプール・データベースのローカル・リスナーが実行されていることを確認してください。

6.3.3 ORA-12541: TNS: リスナーがありません。

すべてのグローバル・サービス・マネージャが停止している可能性があります。グローバル・サービス・マネージャが実行されていることを確認してください。

6.3.4 GSM-40167: VNCRエントリ"<hostname>"をGSMホストで解決できません

GSMアップグレード後のGSM再起動が次のエラーで失敗します: GSM-40167: VNCRエントリ"<hostname>"をGSMホストで解決できません

この問題は、VNCRリストに短いホスト名が存在し、23aiでのGSMの起動中に問題が発生したことが原因と考えられます。この問題が発生した場合は、2つの短いシャード・ホスト名エントリのinvitednodeを削除してから、GSMの起動を試行します。

6.4 add brokerconfigに関連する問題

GDS環境の構成中に発生する可能性のある一般的な問題は、GSMリスナーへのデータベース登録がないことです。この顧客を検出するには、通常、GDSCTL status databaseコマンドを使用します。このコマンドの出力には次が表示されます:

status database
Database: "test" Registered: N State: Ok ONS: Y. Role: N/A Instances: 0 Region: region1
Service: "test_failover" Globally started: Y Started: N
Scan: Y Enabled: Y Preferred: Y

この出力の注目すべき部分は、Registeredプロパティで、登録なしを示す値Nが表示されます。

GDSリスナーでのデータベース登録では、データベースにリージョンを割り当てる必要があることに注意してください。2つ以上のリージョンが存在するGDSプールにデータベースを追加するために add brokerconfigコマンドが使用され、status databaseコマンドで登録がないことがと表示された場合は、modify databaseコマンドを使用してリージョンを手動で割り当てます:

modify database … -region <region_name>

複数のスタンバイ・データベースをGDS構成に同時に追加する場合、「ORA-45539: データベースdb_nameはすでに別のプールに追加されています。」を受け取ることがあります。解決策は、一度に1つずつ追加および同期することです。

6.5 無効なオブジェクト関連の問題

データベース・リリース更新(DBRU)または個々のパッチをインストールした後、GSMADMIN_INTERNALスキーマの一部のオブジェクトは、データベース全体または個々のコンテナ(PDB)で無効になる場合があります。たとえば、次の問合せがDBRUの後に発行されるとします:

select owner, object_name, object_type, status from dba_objects 
where status='INVALID' and owner='GSMADMIN_INTERNAL' order by owner, object_name, object_type;
OWNER                 OBJECT_NAME               OBJECT_TYPE      STATUS     CON_ID
-----------------     ----------------------    -------------    -------    ------
GSMADMIN_INTERNAL     DBMS_GSM_POOLADMIN        PACKAGE BODY     INVALID    3
GSMADMIN_INTERNAL     CAT_ROLLBACK_TRIGGER      TRIGGER          INVALID    3
GSMADMIN_INTERNAL     REQUEST_DELETE_TRIGGER    TRIGGER          INVALID    3
GSMADMIN_INTERNAL     DONE_TRIGGER              TRIGGER          INVALID    3
...

GSMADMIN_INTERNALスキーマのオブジェクトが無効であるため、datapatchスクリプトの実行は失敗します。無効なオブジェクトの問題を解決するには、次のステップに従ってOracle提供のスクリプトを再実行する必要があります:

1. GSMADMIN_INTERNALスキーマにユーザー・データが含まれていないことを確認します。

Global Data Services (GDS)またはOracle Sharding機能が使用されている場合、GSMADMIN_INTERNALスキーマには重要な構成データが含まれている可能性があります。

SYSとして次の問合せを実行して、スキーマが空であることを確認します。コンテナ・データベース(CDB)の場合、この問合せはCDB$ROOTおよびすべてのプラガブル・データベース(PDB)で実行する必要があります。

select count(*) from gsmadmin_internal.cloud;

この問合せで0 (ゼロ)が返されたら、次のステップに進みます。ゼロ以外が返された場合は、オラクル・カスタマ・サポートに詳細なガイダンスを依頼してください。

2. SQL*Plusを使用してSYSとしてデータベースに接続します。データベースがCDBの場合、個々のPDBではなくCDB$ROOTに接続します。

3 次のコマンドを実行します。


SQL> spool /tmp/invalids.out
SQL> alter session set “_ORACLE_SCRIPT” = true;
SQL> drop user gsmadmin_internal cascade;
SQL> alter session set “_ORACLE_SCRIPT” = false;
SQL> @?/rdbms/admin/catgwm.sql
SQL> @?/rdbms/admin/dbmsgwm.sql
SQL> @?/rdbms/admin/catgwmcat.sql
SQL> @?/rdbms/admin/prvtgwm.sql
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off

4. 次の問合せを実行して、GSMADMIN_INTERNALが所有する無効なオブジェクトがないことを検証します: select owner, object_name, object_type, status from dba_objects where status='INVALID' and owner='GSMADMIN_INTERNAL' order by owner, object_name, object_type;

行が返されない場合は、GSMADMIN_INTERNALスキーマは正しい状態です。

まだ無効なオブジェクトがある場合は、オラクル・カスタマ・サポートに連絡して詳細なガイダンスを確認し、/tmp/invalids.outにあるスクリプトからの出力を提供します。

5. 最後に、特定のインスタンスで、一部のGSMADMIN_INTERNALオブジェクトがSYSスキーマに誤って作成されている場合があります。

したがって、これらのオブジェクトはGSMADMIN_INTERNALスキーマ内の正しいオブジェクトの複製であるため、削除する必要があります。

削除する必要がある、SYSが所有するオブジェクトを識別するには、SYSとして次の問合せを実行します: select object_name, object_type from dba_objects where owner = 'SYS' and (object_name, object_type) in (select object_name, object_type from dba_objects where owner = 'GSMADMIN_INTERNAL') order by object_name, object_type;

これにより、GSMADMIN_INTERNALにも存在する、SYSが所有するすべてのオブジェクトのリストが生成されます。

これらのオブジェクトは間違ったスキーマで作成されているため、SQL*Plusの適切なDROPコマンドを使用して削除する必要があります。

リストされたすべてのオブジェクトが削除されたとき、この問合せを再実行すると、0 (ゼロ)行が返されます。

6.6 ユーザーおよびパスワード管理の問題

この項では、次のようなユーザーとパスワードの問題のトラブルシューティングについて説明します:

  • ORA-01045

6.6.1 ORA-01045: ユーザーGSMADMIN_INTERNALにはCREATE SESSION権限がありません。ログオンが拒否されました。

ユーザーGSMADMIN_INTERNALは内部専用のユーザーです。ロックが解除されることはなく、データベース・ログインに使用されることはありません。Oracleテクニカル・サポートから指示されないかぎり、Global Data Servicesスキーマ・オブジェクトを直接変更しないでください。

6.7 GDSの問題のトラブルシューティング

ここでは、次の問題について説明します:
  • GSM-45034: Connection to GDS catalog is not established
  • グローバル・サービス・マネージャが実行されていない場合のGDS構成データベースへの接続
  • グローバル・サービス・マネージャが実行されていない場合のカタログ・データベースへの接続
  • GDS環境でのSYS_CONTEXTパラメータの使用

6.7.1 GSM-45034: GDSカタログへの接続が確立されていません

GDSカタログ・データベースまたはそのリスナーが停止している可能性があります。GDSカタログ・データベースとそのローカル・リスナーが実行されていることを確認してください。

6.7.2 グローバル・サービス・マネージャが実行されていない場合のGDS構成データベースへの接続

複数のアドレス・リストが必要です。第1リストはリージョン・グローバル・サービス・マネージャ・リスナー専用とする必要があり、第2リストにはバディ・リージョンのグローバル・サービス・リスナーを含め、第3リストにはローカル・リスナーを含めます。

グローバル・サービス・マネージャが実行中は必ずグローバル・サービス・マネージャ経由で接続し、すべてのグローバル・サービス・マネージャ・リスナーが停止しているときのみローカル・リスナーにフェイルオーバーすることができます。

テンプレート:

(DESCRIPTION=
  (FAILOVER=on)
  (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(global_protocol_address_information))
    (ADDRESS=(global_protocol_address_information))
    (ADDRESS=(global_protocol_address_information))
   )
  (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(global_protocol_address_information))
    (ADDRESS=(global_protocol_address_information))
    (ADDRESS=(global_protocol_address_information))
   )
  (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(local_protocol_address_information))
    (ADDRESS=(local_protocol_address_information))
   )
  (CONNECT_DATA=
   (SERVICE_NAME=global_service_name)
   (REGION=region_name)))

例:

(DESCRIPTION=
     (FAILOVER=on)
     (ADDRESS_LIST=
       (LOAD_BALANCE=ON)
       (ADDRESS=(HOST=gsmhost1)(PORT=1523)(PROTOCOL=TCP))
       (ADDRESS=(HOST=gsmhost2)(PORT=1523)(PROTOCOL=TCP))
       (ADDRESS=(HOST=gsmhost3)(PORT=1523)(PROTOCOL=TCP))
      )
     (ADDRESS_LIST=
       (LOAD_BALANCE=ON)
       (ADDRESS=(HOST=gsmhost4)(PORT=1523)(PROTOCOL=TCP))
       (ADDRESS=(HOST=gsmhost5)(PORT=1523)(PROTOCOL=TCP))
       (ADDRESS=(HOST=gsmhost6)(PORT=1523)(PROTOCOL=TCP))
      )
     (ADDRESS_LIST=
       (LOAD_BALANCE=ON)
       (ADDRESS=(HOST=server1)(PORT=1521)(PROTOCOL=TCP))
      )
     (CONNECT_DATA=
      (SERVICE_NAME=sales_read_service.dbpoolora.oradbcloud)
      (REGION=WEST)))

ノート:

Oracle RAC対応のGDSデータベースの場合、第3のアドレス・リストにはローカルのOracle RACデータベースのSCANリスナーが含まれます。

6.7.3 グローバル・サービス・マネージャが実行されていない場合のカタログ・データベースへの接続

グローバル・サービス・マネージャが停止している場合でも、ローカル・リスナーを使用してGDSカタログ・データベースにアクセスできます。

このアクセスは、グローバル・サービス・マネージャが実行されていない状態で、DB管理またはメンテナンス・アクティビティをカタログ・データベースで行う場合に必要になることがあります。

6.7.4 GDS環境でのSYS_CONTEXTパラメータの使用

グローバル・サービスへの接続を使用して確立されたセッションの場合、ネームスペースUSERENVのいくつかのパラメータは、同じデータベースのローカル・サービスに接続したときに設定された値とは異なる値を持ちます。グローバル・サービスの異なる値は、データベース・プールが多くのインスタンスを持つ単一のデータベースとしてクライアントに認識されるように設定されます。

クライアントがグローバル・サービスに接続すると、GDSによって、次の項目が異なる方法でセッション・コンテキストに設定されます。

  • DB_UNIQUE_NAMEおよびDB_DOMAINは、<gdspool_name>.<config_name>に設定されます

  • INSTANCEは、GDS構成内で一意のシステム生成番号<inst_num>に設定されます

  • INSTANCE_NAMEは、<gdspool_name>%<virtual_instance_num>に設定されます

  • SERVICE_NAMEは、<region_name>%<service_name>に設定されます

6.8 GSMの問題のトラブルシューティング

ここでは、次の問題について説明します:

  • GSM-45054: GSMエラー
  • NET-40006: 「GSMを起動できません」エラー

6.8.1 GSM-45054: GSMエラーまたはNET-40006: GSMを起動できません

GDSカタログ・データベースまたはそのリスナーが停止している可能性があります。GDSカタログ・データベースとそのローカル・リスナーが実行されていることを確認してください。

6.9 GDSログおよびトレース

この項では、ログ・ファイルの検索およびGDSコンポーネントのトレースの有効化について説明します:

  • グローバル・サービス・マネージャのログ・ファイルおよびトレース・ファイルの使用
  • グローバル・サービス・マネージャでのトレースの有効化および無効化

6.9.1 Global Data Servicesのログ・ファイルおよびトレース・ファイルの使用

GDSコンポーネントでロギングおよびトレースが有効になっている場合は、次の例に示すように、status gsmコマンドを使用して、特定のグローバル・サービス・マネージャのログおよびトレース・ファイルの正確な場所を検索できます。

GDSCTL>status gsm
 
Alias                     MYGSM
Version                   19.1.0.0.1
Start Date                22-OCT-2022 14:05:11
Trace Level               support
Listener Log File         /scratch/oracle/diag/gsm/myhost/mygsm/alert/log.xml
Listener Trace File       /scratch/oracle/diag/gsm/myhost/mygsm/trace/ora_1829_
 47542149303936.trc
Endpoint summary          (ADDRESS=(HOST=myhost.com)(PORT=1571)(PROTOCOL=tcp))
GSMOCI Version            0.1.7
Mastership                N
Connected to GDS catalog  Y
Process Id                1833
Number of reconnections   0
Pending tasks.     Total  0
Tasks in  process. Total  0
Regional Mastership       TRUE
Total messages published  34261
Time Zone                 -07:00
Orphaned Buddy Regions:   None
GDS region                east
Network metrics:
   Region: euro RTT:34 Bandwidth:40

この例で、myhostはグローバル・サービス・マネージャのホスト名で、mygsmはグローバル・サービス・マネージャの名前です。

厳密にはGDSコンポーネントではありませんが、リスナー・ログ・ファイルは、いくつかの問題を解決するのに役立ちます。テキスト・ベースのリスナー・ログは、/scratch/oracle/diag/gsm/hostname/gsm_name/traceディレクトリにあります。ファイル名はalert_gsm*.logになります(alert_gsm1.logなど)。

GDSコンポーネントに対してロギングおよびトレースが有効になっていない場合は、次のステップに従ってください:

  1. GDSCTLのロギングを有効にします。GSMホストで、$ORACLE_HOME/network/admin/gsm.oraファイルを編集し、_GDSCTL=(log=ALL)を追加します

    これにより、GDSCTLを使用して実行されるすべてのコマンドが、GSMホストの次のログ・ファイルに記録されます。$ORACLE_HOME/network/admin/GDSCTL.log

  2. GSMプロセスのトレースを有効にします。

    GDSCTL> set trace_level -gsm <gsm_name> SUPPORT

    これにより、GSMのDIAGNOSTICS_DESTにトレース・ファイルが生成されます。たとえば、$ORACLE_BASE/diag/gsm/<hostname>/<gsm-name>/traceです

  3. カタログ・データベースでトレースを有効にします。

    SQL> alter system set events '10798 trace name context forever, level 7';
  4. GDSプール・データベースでトレースを有効にします。

    SQL> alter system set events '10798 trace name context forever, level 7';

ロギングおよびトレースを無効にするには、次のステップに従います:

  1. GSMトレースをオフにします。

    GDSCTL> set trace_level -gsm <gsm-name> OFF
  2. gsm.oraファイルを編集し、次の行を削除して、GDSCTLコマンドのロギングをオフにします:

    _GDSCTL=(log=ALL)

  3. カタログ・データベースおよびGDSプール・データベースのトレースをオフにします。

    SQL> alter system set events '10798 trace name context forever, level 0';

6.9.2 Global Data Servicesの高度なトラブルシューティング

Global Data Servicesを効果的にトラブルシューティングするには、GDSおよび関連コンポーネントから適切なデータを収集することが重要です。次のステップに従うと、問題のトラブルシューティングに適したデータ・プールが提供されます:

  1. パッチ情報の収集は、コードのバージョン関連の問題に役立ちます:

    $ cd $ORACLE_HOME/OPatch $ ./opatch lsinventory -detail > lsinventory_info.txt
  2. すべてのGDS構成データを収集します。次のコマンドをスクリプトに保存して実行します:

    #!/bin/bash
    # Stop script if any command fails
    set -e
    # Check if gdsctl is available in PATH
    if ! command -v gdsctl &> /dev/null
    then
        echo "gdsctl could not be found. Please make sure it is installed and available in PATH."
        exit 1
    fi
    echo "Starting gdsctl session..."
    # Start the gdsctl session
    gdsctl << EOF
    # List GSMs, GSM status
    echo "GDSCTL COMAND: config"
    config
    echo "GDSCTL COMAND: config gsm -gsm <gsm name>"
    #config gsm -gsm <gsm name>
    echo "GDSCTL COMAND: gsm status"
    gsm status
    # List services
    echo "GDSCTL COMAND: services"
    services
    echo "GDSCTL COMAND: config service -service <service name>"
    #config service -service <service name>
    # List databases
    echo "GDSCTL COMAND: databases"
    databases
    # Network
    echo "GDSCTL COMAND: config vncr"
    config vncr
    # Validate config
    echo "GDSCTL COMAND: validate"
    validate
    # End of gdsctl commands
    EOF
    echo "gdsctl session completed successfully."
    # Exit the script
    exit 0
  3. GSMリスナー・ステータスを収集します。

    $ lsnrctl status <gsm-name>

Oracleサポートに連絡する必要がある場合は、前述のデータが役に立ちます。さらに、次のファイルも役立ちます:

GSMホストから: $ORACLE_HOME/network/admin

GSMホストから: GSMアラート・ログ・ファイル

GSMホストから: GDSCTL.log

GSMホストから: <DIAGNOSTIC_DEST>にあるGSMトレース・ファイル

GSMホストから: lsinventorylsinventory_info.txt

GDSカタログ・ホストから: lsinventorylsinventory_info.txt