从shell命令行运行DB2 SQL未完成执行

时间:2014-05-14 19:51:44

标签: sql bash shell db2 remote-access

我在一台设置为远程连接到另一台db2 unix服务器的unix服务器上。 我能够使用以下脚本连接到DB2:

db2 "connect to <server name> user <user name> using <pass>";

然后我运行以下命令将SQL的结果保存到文件

db2 "select * from <tablename>" > /myfile.txt

脚本开始执行但永远不会结束。我在选择之前尝试使用-x,但同样的结果永远不会结束执行。表只有一条记录。当我强行结束执行时,表的标题保存在文件中出现以下错误:

SQL0952N  Processing was cancelled due to an interrupt.  SQLSTATE=57014

请帮助我陷入困境。

1 个答案:

答案 0 :(得分:1)

您可以监控连接和输出文件,以了解发生的情况。

在开始监控之前,获取当前的应用程序句柄

db2 "values SYSPROC.MON_GET_APPLICATION_ID()"
  • 打开第二个终端,对数据库执行db2top。检查当前会话(L)并查看您的连接(以前的应用程序ID)。如果您看到锁定等待状态,那只是因为另一个连接对该表进行了锁定,并且无法同时读取它。

    db2top -d myDB

尝试使用其他隔离级别执行相同的查询

db2 "select * from <tablename> WITH UR"

如果这是问题,您应该分析数据库上正在运行的其他进程(修改数据)。

  • 打开另一个终端,然后执行

    tail -f /myfile.txt

如果您看到文件正在更改,那只是因为输出太大。等等。