一般的なエラー・パターンおよび解決

Oracle Globally Distributed Databaseの一般的なエラーをトラブルシューティングします。

シャード・ディレクタの起動時の障害

シャード・ディレクタの起動時に問題が発生した場合は、次の操作を試行します。

スケジューラを起動するには、各シャード・サーバーのORACLE_HOMEに移動する必要があります。

GDSCTL>start gsm -gsm shardDGdirector
GSM-45054: GSM error
GSM-40070: GSM is not able to establish connection to GDS catalog

GSM alert log, /u01/app/oracle/diag/gsm/shard1/sharddgdirector/trace/alert_gds.log
GSM-40112: OCI error. Code (-1). See GSMOCI trace for details.
GSM-40122: OCI Catalog Error. Code: 12514. Message: ORA-12514: TNS:listener does not 
currently know of service requested in connect descriptor
GSM-40112: OCI error. Code (-1). See GSMOCI trace for details.
2017-04-20T22:50:22.496362+05:30
Process 1 in GSM instance is down
GSM shutdown is successful
GSM shutdown is in progress
NOTE : if not message displayed in the GSM log then enable GSM trace level to 16 
while adding GSM itself.
  1. 起動に失敗した新規作成のシャード・ディレクタ(GSM)を削除します。

    GDSCTL> remove gsm -gsm shardDGdirector
    
  2. トレース・レベル16を使用してシャード・ディレクタを追加します。

    GDSCTL> add gsm -gsm shardDGdirector -listener port_num -pwd gsmcatuser_password
     -catalog hostname:port_num:shard_catalog_name
     -region region1 -trace_level 16
  3. シャード・カタログ・データベースがデフォルト以外のポート(1521以外)で実行されている場合は、リモート・リスナーを設定します。

    SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
    (HOST=hostname)(PORT=port_num)))';

表領域セットの作成に失敗する

表領域セットの作成が失敗する原因は、DB_FILESパラメータの設定が小さすぎる可能性があります。

DB_FILESパラメータのデフォルト設定は200です。これは、多数のシャードおよびチャンクがあるシャード・データベースでは低すぎる可能性があります。Raftレプリケーション・シナリオでは、多数のデータファイルが必要になる場合もあります

特定のシャード上のシャーディング・オブジェクトに対して作成されたデータベース・ファイルの数を計算するには:

必要なシャード・データベース・ファイル = (SHARD DDLを使用して実行されたCREATE TABLESPACE SET SQL文の数) * (シャードに存在するチャンクの数+ 1)

DB_FILESは、シャーディング(前述)のPLUS非シャーディング・データベース・ファイル(system、sysauxなど)で使用されるファイル数以上に設定する必要があり、一般RDBMSコード(5)で必要とされる追加のPLUSです。したがって、次のようになります。

各シャードに必要なDB_FILES = (前述の計算で必要なシャード・データベース・ファイルの数) +デフォルト・データベース・ファイルの数(6) + 5

チェック・フリーDB_FILESおよびパラメータ設定を確認するには:

SQL> select count(*) from v$datafile;

  COUNT(*)
----------
XxxXX

SQL> show parameter db_files

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_files			     integer	 200

deployコマンドの使用時の問題

GDSCTL> deploy
GSM-45029: SQL error
ORA-29273: HTTP request failed
ORA-06512: at "SYS.DBMS_ISCHED", line 3715
ORA-06512: at "SYS.UTL_HTTP", line 1267
ORA-29276: transfer timeout
ORA-06512: at "SYS.UTL_HTTP", line 651
ORA-06512: at "SYS.UTL_HTTP", line 1257
ORA-06512: at "SYS.DBMS_ISCHED", line 3708
ORA-06512: at "SYS.DBMS_SCHEDULER", line 2609
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 14284
ORA-06512: at line 1

解決策: $ORACLE_HOME/data/pendingjobsで正確なエラーを確認します。ウォレットに問題がある場合は、ORA-1017がスローされます。

  1. 問題のあるシャード・ホスト上で、リモート・スケジューラ・エージェントを停止します。

    schagent -stop
  2. データベース・ホーム上のウォレット・ディレクトリの名前を変更します。

    mv $ORACLE_HOME/data/wallet $ORACLE_HOME/data/wallet.old
  3. リモート・スケジューラ・エージェントを起動すると、新しいウォレット・ディレクトリが作成されます。

    schagent -start 
    schagent -status 
    echo welcome | schagent -registerdatabase 10.10.10.10 8080

チャンクの移動の問題

MOVE CHUNKで問題が発生した場合は、次の操作を試してください。

問題: 初期化パラメータremote_dependencies_modeのデフォルト値はtimestampです。このため、アップグレード中にprvtgwmut.plbが実行されてDBMS_GSM_UTILITYが再コンパイルされるので、GDSCTL MOVE CHUNKで次のようにORA-04062エラーが発生します。

GSM Errors:
server:ORA-03749: Chunk move cannot be performed at this time.
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_DBADMIN", line 5497
ORA-04062: timestamp of package "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY" has been
changed
ORA-06512: at line 1
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_DBADMIN", line 5366
ORA-06512: at line 1 (ngsmoci_execute)

回避策1: アップグレード後にソースとターゲットのシャードを再起動します。

回避策2: ソースとターゲットの両方でALTER SYSTEM SET remote_dependencies_mode=signatureを実行します。

Oracle Database Vaultの問題

シャード・データベースでOracle Database Vaultを有効にしないでください。Oracle Globally Distributed Databaseでは、Oracle Database Vaultはサポートされていません。

ロールが分離された環境のデプロイ時の問題

GSM-45029: SQL ERROR NO MORE DATA TO READ FROM SOCKETエラーは、Oracle Globally Distributed DatabaseまたはOracle Global Data Services (GDS)の管理操作を実行し、ロールが分離された環境でOracle Real Application Clusters (Oracle RAC)またはOracle Restartアカウントで実行されるリスナーを介して接続する場合に発生します。このエラーは、Oracle RACまたはOracle RestartアカウントがOracle Databaseアカウントと異なる場合に発生します。

解決策:

シャード・カタログ・データベースおよび各シャード(まだ実行されていない場合)でOracle Databaseアカウントのリスナーを起動します。

リスナーを使用して接続し、管理操作を実行できます。

このリスナーは、add shardなどの管理コマンドにOracle Database Transparent Network Substrate (TNS)アドレスが必要な場合に、その指定にも使用できます。