Trafodion中的每个正在执行的SQL都有一个对应的queryid,queryid是唯一的。
在Trafodion中,我们可以通过offender工具来查看后台正在执行的SQL语句,如下
cd $MY_SQROOT/export/limited-support-tools/LSO
./offender -s active
当然,offender工具还有很多其他的参数,这里就不做赘述,读者可通过./offender -h来查看offender的具体参数,-s active表示显示当前正在执行的SQL。
这里假设通过offender -s active查看到正在执行的SQL语句的queryid为MXID11002059012212377417909658578000000000206U3333300_1510_SQL_CUR_383,我们可以使用函数queryid_extract来抽取queryid中的信息,包括process id等。有关queryid_extract的详细语法以及queryid中包含哪些信息,可以通过Trafodion官网中的SQL手册查看详细,http://trafodion.incubator.apache.org/docs/sql_reference/index.html#using_the_queryid_extract_function,其中queryid_extract中参数PIN代表process id,即当前SQL执行的进程ID。
我们使用以下示例语句获取这个queryid对应的PIN,
select queryid_extract('MXID11002059012212377417909658578000000000206U3333300_1510_SQL_CUR_383','PIN') from dual;
通过上述SQL获取PIN之后,我们可以通过DCS Master页面(24400)搜索这个PIN找到对应的行,然后找到Client对应的那一列对应的值,即SQL来自哪个客户端IP。
另外,如果您使用的商业版EsgynDB,可以通过EsgynDB Manager之Connectivity页面也可以查看到对应的客户端。