はじめに
クエリの処理中にVerticaが検出したエラーとワーニングをシステムテーブルを
検索して確認する方法をご紹介します。
システムテーブル
ERROR_MESSAGES
カラム名 | データ型 | 説明 |
|---|---|---|
NODE_NAME | TIMESTAMPTZ | ノードの名前 |
USER_ID | VARCHAR | ユーザーの識別子 |
USER_NAME | INTEGER | ユーザーの名前 |
SESSION_ID | VARCHAR | セッションの識別子 |
REQUEST_ID | VARCHAR | クエリリクエストの一意の識別子 |
TRANSACTION_ID | INTEGER | トランザクションの識別子 |
STATEMENT_ID | INTEGER | ステートメントの一意の識別子 |
ERROR_LEVEL | VARCHAR | エラーの重大度。 |
ERROR_CODE | INTEGER | エラーコード |
MESSAGE | VARCHAR | エラーメッセージ |
DETAIL | VARCHAR | エラーメッセージに関する詳細情報 |
HINT | VARCHAR | エラーに関する実用的なヒント。 |
実行例
システムテーブル(ERROR_MESSAGES)を検索
dbadmin=> SELECT event_timestamp, user_name, message,transaction_id,statement_id FROM error_messages ORDER BY event_timestamp DESC;
event_timestamp | user_name | message | transaction_id | statement_id
-------------------------------+-----------+--------------------------------------------------------------------------------------------------------------+-------------------+--------------
2020-07-09 03:15:18.246526+09 | test | Insufficient resources to execute plan on pool general [Request exceeds session memory cap: 5696KB > 0KB] | 45035996273893802 | 1 ★ ①
2020-07-09 02:05:35.107844+09 | dbadmin | Relation "test" does not exist | 45035996273891681 | 1 ★ ②
2020-07-09 02:04:04.675791+09 | | Invalid username or password | 45035996273891669 | -1 ★ ③
(3 rows)
【上記エラーの内容】
①:メモリが不足していたためエラーとなっています。
②:"test"テーブルが存在しないためエラーになっています。
③:ログイン時のパスワードが違うためエラーになっています。エラーになったクエリを確認することが可能
①の”transaction_id”と”statement_id”を条件にシステムテーブル(query_requests)を検索します。
dbadmin=> select request from query_requests where transaction_id = 45035996273893802 and statement_id = 1;
request
-------------------------
select * from test_tbl; ★①で実行されたクエリ
(1 row)注意事項
ERROR_MESSAGESに保存期間はありませんが、格納されるサイズが10MBに制限されています。
10MBを超えた場合は、古い情報から削除されていきます。
長期間保存されたい場合は、ERROR_MESSAGESの検索結果を定期的にファイルに出力するか、下記の参考情報にあるサイズの拡張を行ってください。
【参考情報】
「システムテーブルの保存条件について」
https://www.ashisuto.co.jp/cm/analytics-database/datacollector.html
検証バージョンについて
この記事の内容はVertica 10.0で確認しています。
更新履歴
2020/07/10 本記事を公開