記事
· 16 hr 前 4m read

ODBCログの取得方法(UNIX)

これは InterSystems FAQ サイトの記事です。
 

ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます。

ODBCログの有効化については以下をご参照ください。

ODBCログの有効化

UNIX系のシステムの場合、上記に記載されている通り、2種類のログが取得できます。 

  • クライアント・ドライバ・ログの取得方法 以下の環境変数でトレースのオンと出力するファイルを指定します。
export IRISODBCTRACE=1
export IRISODBCTRACEFILE=/Users/user1/work/odbcclient.log
  •  ドライバマネージャのログの取得方法 ドライバマネージャのデータソース設定ファイル(ODBC.ini)に以下の様にトレースをオンにする設定とログファイルの場所と名前を指定します。

  

[ODBC Data Sources]
IRIS ODBC User = IRIS iODBC Driver

[IRIS ODBC User]
Driver      = /opt/iris/bin/libirisodbc35.so
Description = 
Host        = localhost
Namespace   = USER
UID         = _system
Password	= SYS
Protocol    = TCP
Port        = 1972
Trace		= on
TraceFile   = /Users/user1/work/iodbctrace.log

変更の反映にはODBCクライアントアプリケーションを再起動する必要があります。

クライアントのプロセス毎に個別にログを取得すつこともできます。 クライアントログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At: Thu Mar 27 11:02:27 2025

	Driver Name:	libirisodbc35.so
	Unicode Client Version:	2024.2.0.247.0
	Compiled at:	Jul 16 2024 09:26:07
	ODBC Version:	03.51
	Locale Setting:	ja_JP.UTF-8
	ODBC Config file:	/Library/ODBC/odbc.ini
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Warning: IRISConnect Failed to load, Error Code: 2; Reason=dlopen(irisconnect.so, 0x0002): tried: 'irisconnect.so' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSirisconnect.so' (no such file), '/usr/lib/irisconnect.so' (no such file, not in dyld cache), 'irisconnect.so' (relative path not allowed in hardened program), '/usr/lib/irisconnect.so' (no such file, not in dyld cache)
--> SQLAllocHandle: (03/27/25-11:02:27:224) htype = 1, inhandle = 00000000
    --> SQLAllocEnv: (03/27/25-11:02:27:224) 
    <-- SQLAllocEnv: (03/27/25-11:02:27:224) henv = 0x1301b8000 returning 0
<-- SQLAllocHandle: (03/27/25-11:02:27:224) Returning 0, outhandle = 0x1301b8000


--> SQLSetEnvAttr: (03/27/25-11:02:27:224) henv = 0x1301b8000, Attribute=200, Value=3, StringLength=0
<-- SQLSetEnvAttr: (03/27/25-11:02:27:224) Returning 0

--> SQLAllocHandle: (03/27/25-11:02:27:224) htype = 2, inhandle = 0x1301b8000
    --> SQLAllocConnect: (03/27/25-11:02:27:224) henv = 0x1301b8000
    <-- SQLAllocConnect: (03/27/25-11:02:27:224) hdbc = 0x1300f0000 returning 0
<-- SQLAllocHandle: (03/27/25-11:02:27:224) Returning 0, outhandle = 0x1300f0000

ドライバマネージャログが正常に取得できている場合、以下の様な内容が書き込まれます。

** iODBC Trace file
** Trace started on Thu Mar 27 11:02:27 2025
** Driver Manager: 03.52.0607.1008


[000000.024585]
soffice         205384840 EXIT  SQLDriverConnect with return code 0 (SQL_SUCCESS)
		SQLHDBC           0x600002d4cf00
		SQLPOINTER        0x0
		SQLCHAR         * 0x6000017c51a8
		SQLSMALLINT       19
		SQLCHAR         * 0x16d9f9e58
				  | DSN=IRIS ODBC User;SERVER=localhost;PORT |
				  | =1972;DATABASE=USER;AUTHENTICATION METHO |
				  | D=0;UID=_system;PWD=***;STATIC CURSORS=0 |
				  | ;QUERY TIMEOUT=1                         |
		SQLSMALLINT       4095
		SQLSMALLINT     * 0x16d9f9e3e (136)
		SQLUSMALLINT      0 (SQL_DRIVER_NOPROMPT)

[000000.024666]
soffice         205384840 ENTER SQLGetInfo
		SQLHDBC           0x600002d4cf00
		SQLUSMALLINT      25 (SQL_DATA_SOURCE_READ_ONLY)
		SQLPOINTER        0x16d9f95d8
		SQLSMALLINT       511
		SQLSMALLINT     * 0x16d9f95d6

ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください