使用SQL而不是视点查找teradata中当前运行的查询

时间:2015-02-03 06:44:05

标签: teradata

我想了解当前正在执行的特定于用户或组的查询。我不想使用观点。我需要使用SQL来实现此功能。

3 个答案:

答案 0 :(得分:2)

试试这个

select * from dbc.SessionInfo;

您将拥有一个包含其用户和群组的请求列表

我希望能帮到你

答案 1 :(得分:2)

要在不使用Viewpoint的情况下获取当前活动的会话的SQL,您需要使用PMPC API(我相信Viewpoint可能正在使用它)从数据库中获取该信息。

步骤1:从MontiorSession()获取MonitorSQLText()的输入值

SELECT HostID
     , SessionNo
     , RunVprocNo 
  FROM TABLE(MonitorSession({HostID}, {UserName}, {SessionNo})) AS T2;
-1的

HostID将包含所有主机

UserName' *'将包括所有用户

SessionNo为0包括所有会话

您应该至少提供其中一个值来缩小搜索范围。

第2步:获取您感兴趣的会话的SQLText

SELECT *
  FROM TABLE (MonitorSQLText({HostID}, {SessionNo}, {RunVprocNo})) AS T2;

从第一步开始使用HostIDSessionNoRunVprocNo

我尝试将步骤1中的值放入易失性表格和CTE中,以动态提供步骤2。当我这样做时,数据库响应错误,表明MonitorSQLText()无法以变量模式运行。这与文档一致,表明此API特别必须以“常量模式”使用。

这应该适用于TD 14+以及TD 13.10。

答案 2 :(得分:2)

Viewpoint使用的PMon-API也可以SQL-functions使用,例如这是返回有关当前所有登录会话的信息:

SELECT * FROM TABLE (MonitorSession(-1,'*',0)) AS dt;

您可以查看PEState或AMPState列以查找活动查询。