我在一台设置为远程连接到另一台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
请帮助我陷入困境。
答案 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
如果您看到文件正在更改,那只是因为输出太大。等等。