9 Oracle Shardingのトラブルシューティング
トレースの有効化、ログとトレース・ファイルの検索、および一般的な問題のトラブルシューティングを行うことができます。
次の各項では、Oracle Shardingのトラブルシューティングについて詳細に説明します。
- Oracle Shardingのトレースおよびデバッグ情報
次の各項では、トレースを有効化する方法とログを見つける方法について説明します。 - シャード・データベースの一般的なエラー・パターンと解決
Oracle Shardingの一般的なエラーをトラブルシューティングする方法の詳細は、次の各項を参照してください。
Oracle Shardingのトレースおよびデバッグ情報
次の各項では、トレースを有効化する方法とログを見つける方法について説明します。
- Oracle Shardingに対するトレースの有効化
シャード・データベース内の問題を追跡するため、PL/SQLトレースを有効にします。 - Oracle Shardingのアラート・ログおよびトレース・ファイルの検索場所
Oracle Sharding環境には、トレース・ファイルとアラート・ログを検索する場所がいくつかあります。
親トピック: Oracle Shardingのトラブルシューティング
Oracle Shardingに対するトレースの有効化
シャード・データベース内の問題を追跡するため、PL/SQLトレースを有効にします。
完全なトレースを取得するには、次に示すようにGWM_TRACE
レベルを設定します。次の文を実行すると、ただちにトレースが有効になりますが、データベースを再起動するとトレースは無効になります。
ALTER SYSTEM SET EVENTS 'immediate trace name GWM_TRACE level 7';
次の文を実行すると、永続的に動作するトレースが有効になりますが、データベースを再起動しないと起動しません。
ALTER SYSTEM SET EVENT='10798 trace name context forever, level 7' SCOPE=spfile;
前述の両方のトレースを完全に設定することをお薦めします。
Oracle Sharding環境のすべてをトレースするには、シャード・カタログとすべてのシャードでトレースを有効にする必要があります。トレースは、シャード・カタログのGDSCTLセッションまたは個々のシャードでシャード・ディレクタ(GSMとも呼びます)によって作成されたセッションのRDBMSセッション・トレース・ファイルに書き込まれます。
Oracle Shardingのアラート・ログおよびトレース・ファイルの検索場所
Oracle Sharding環境には、トレース・ファイルとアラート・ログを検索する場所がいくつかあります。
diag/rdbms/..にある標準RDBMSトレース・ファイルには、トレース出力が格納されます。
「deploy」の出力は、ジョブ・キューのトレース・ファイルdb_unique_name_jXXX_PID.trcに格納されます。
他のGDSCTLコマンドの出力は、使用される接続文字列に応じて、共有サーバー・トレース・ファイルdb_unique_name_sXXX_PID.trcまたは専用トレース・ファイルdb_unique_name_ora_PID.trcのいずれかに格納されます。
通常、カタログおよびシャードへの接続の多くに共有サーバーが使用されるため、トレースはSID_s00*.trcという名前の共有サーバー・トレース・ファイルに含まれています。
GDSCTLには、ステータスおよびエラー情報を表示できるコマンドがいくつか用意されています。
シャード・ディレクタ(GSM)のトレース・ファイルとログ・ファイルの場所を表示するには、GDSCTL STATUS GSM
を使用します。
GDSCTL> status
Alias SHARDDIRECTOR1
Version 18.0.0.0.0
Start Date 25-FEB-2016 07:27:39
Trace Level support
Listener Log File /u01/app/oracle/diag/gsm/slc05abw/sharddirector1/alert/log.xml
Listener Trace File /u01/app/oracle/diag/gsm/slc05abw/sharddirector1/trace/
ora_10516_139939557888352.trc
Endpoint summary (ADDRESS=(HOST=shard0)(PORT=1571)(PROTOCOL=tcp))
GSMOCI Version 2.2.1
Mastership N
Connected to GDS catalog Y
Process Id 10535
Number of reconnections 0
Pending tasks. Total 0
Tasks in process. Total 0
Regional Mastership TRUE
Total messages published 71702
Time Zone +00:00
Orphaned Buddy Regions: None
GDS region region1
Network metrics:
Region: region2 Network factor:0
非XMLバージョンのalert.logファイルは、次に示す/traceディレクトリにあります。
/u01/app/oracle/diag/gsm/shard-director-node/sharddirector1/trace/alert*.log
GSMのログ出力を復号化するには、次のコマンドを使用します。
GDSCTL> set _event 17 -config_only
マスター・シャード・ディレクタ(GSM)のトレース/アラート・ファイルには、すべての非同期コマンドまたはバックグラウンド・タスク(move chunk、split chunk、deploy、シャード登録、Data Guard構成、シャードDDLの実行など)のステータスとエラーが含まれています。
シャード・ディレクタのエラー・ステータスを含む保留中のAQリクエストを見つけるには、GDSCTL CONFIGを使用します。
進行中およびスケジュール済のチャンク移行を表示するには、GDSCTL CONFIG CHUNKS -show_reshardを使用します。
DDLが失敗したシャードを表示するには、GDSCTL SHOW DDL -failed_onlyを使用します。
特定のシャードのDDLエラー情報を表示するには、GDSCTL CONFIG SHARD -shard shard_nameを使用します。
シャード・データベースの一般的なエラー・パターンおよび解決
Oracle Shardingの一般的なエラーをトラブルシューティングする方法の詳細は、次の各項を参照してください。
- リモート・スケジューラ・エージェントの起動時の問題
すべてのシャード・ホストでリモート・スケジューラ・エージェントの起動時に問題が発生した場合は、次の操作を試行します。 - シャード・ディレクタの起動時の障害
シャード・ディレクタの起動時に問題が発生した場合は、次の操作を試行します。 - CREATE SHARDで作成されたシャードのエラー
GDSCTL CREATE SHARDコマンドで作成されたシャードのDEPLOY実行中に発生したエラーについては、次の項目を確認します。 - CREATE SHARDの使用時の問題
GDSCTL CREATE SHARDコマンドの使用時に発生した問題には、次のような解決策があります。 - deployコマンドの使用時の問題
- チャンクの移動の問題
MOVE CHUNK
で問題が発生した場合は、次の操作を試してください。
親トピック: Oracle Shardingのトラブルシューティング
リモート・スケジューラ・エージェントの起動時の問題
すべてのシャード・ホストでリモート・スケジューラ・エージェントの起動時に問題が発生した場合は、次の操作を試行します。
スケジューラを起動するには、各シャード・サーバーのORACLE_HOMEに移動する必要があります。
[oracle@shard2 ~]$ echo welcome | schagent -registerdatabase 192.0.2.24 8080
Agent Registration Password?
Failed to get agent Registration Info from db: No route to host
Solution: Disable firewall
service ipchains stop
service iptables stop
chkconfig ipchains off
chkconfig iptables off
シャード・ディレクタの起動時の障害
シャード・ディレクタの起動時に問題が発生した場合は、次の操作を試行します。
スケジューラを起動するには、各シャード・サーバーの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)))';
CREATE SHARDで作成されたシャードのエラー
GDSCTL CREATE SHARDコマンドで作成されたシャードのDEPLOY実行中に発生したエラーについては、次の項目を確認します。
-
シャード・ホスト上のリモート・スケジューラ・エージェントのログ
-
シャード・カタログのDBA_SCHEDULER_JOB_RUN_DETAILSビュー
-
シャード・ホスト上の$ORACLE_BASE/cfgtoollogsにあるNETCA/DBCAの出力ファイル
CREATE SHARDの使用時の問題
GDSCTL CREATE SHARDコマンドの使用時に発生した問題には、次のような解決策があります。
次のエラーを回避するには$ORACLE_BASE/oradataおよび$ORACLE_BASE/fast_recovery_areaディレクトリを作成する必要がある
GDSCTL> create shard -shardgroup primary_shardgroup -destination che -osaccount
oracle -ospassword oracle
GSM-45029: SQL error
ORA-03710: directory does not exist or is not writeable at destination:
$ORACLE_BASE/oradata
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 6920
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 4730
ORA-06512: at line 1
GDSCTL>create shard -shardgroup primary_shardgroup -destination che -osaccount oracle
-ospassword oracle
GSM-45029: SQL error
ORA-03710: directory does not exist or is not writeable at destination:
$ORACLE_BASE/fast_recovery_area
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 6920
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 4755
ORA-06512: at line 1
解決策: すべてのシャード・ホスト上の$ORACLE_BASEの下に/oradataとfast_recovery_areaを作成します。
権限の問題
GDSCTL>create shard -shardgroup primary_shardgroup -destination blr -credential cred
GSM-45029: SQL error
ORA-02610: Remote job failed with error:
EXTERNAL_LOG_ID="job_79126_3",
USERNAME="oracle",
STANDARD_ERROR="Launching external job failed: Login executable not setuid-root"
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 6920
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 4596
ORA-06512: at line 1
解決策: 次のディレクトリに対するroot権限があることを確認します。
chown root $ORACLE_HOME/bin/extjob
chmod 4750 $ORACLE_HOME/bin/extjob
chown root $ORACLE_HOME/rdbms/admin/externaljob.ora
chmod 640 $ORACLE_HOME/rdbms/admin/externaljob.ora
chown root $ORACLE_HOME/bin/jssu
chmod 4750 $ORACLE_HOME/bin/jssu
CREATE SHARDでのエラー
GDSCTL>create shard -shardgroup primary_shardgroup -destination mysql02 -osaccount
oracle -ospassword oracle
GSM-45029: SQL error
ORA-03719: Shard character set does not match catalog character set.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 7469
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 5770
ORA-06512: at line 1
解決策: Javaのバージョンを確認します(シャード・カタログおよびすべてのシャード・サーバーで同じである必要があります)。
rpm -qa|grep java
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_depenencies_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_depenencies_mode=signature
を実行します。