一般的なエラー・パターンおよび解決
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.
-
起動に失敗した新規作成のシャード・ディレクタ(GSM)を削除します。
GDSCTL> remove gsm -gsm shardDGdirector
-
トレース・レベル16を使用してシャード・ディレクタを追加します。
GDSCTL> add gsm -gsm shardDGdirector -listener port_num -pwd gsmcatuser_password -catalog hostname:port_num:shard_catalog_name -region region1 -trace_level 16
-
シャード・カタログ・データベースがデフォルト以外のポート(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がスローされます。
-
問題のあるシャード・ホスト上で、リモート・スケジューラ・エージェントを停止します。
schagent -stop
-
データベース・ホーム上のウォレット・ディレクトリの名前を変更します。
mv $ORACLE_HOME/data/wallet $ORACLE_HOME/data/wallet.old
-
リモート・スケジューラ・エージェントを起動すると、新しいウォレット・ディレクトリが作成されます。
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)アドレスが必要な場合に、その指定にも使用できます。