【发布时间】:2016-06-17 15:50:42
【问题描述】:
我正在服务器 A 上使用 Netezza 模拟器。我在外部表上运行查询时遇到问题。
我在服务器 B 上有一个名为 test.txt 的文本文件。我有带有以下版本参数的 Netezza odbc 连接器:
Driver version : 'Release 7.2.0.0 [Build 40845]'
NPS version : '07.02.0001 Release 7.2.1.0 [Build 46322]'
Database : <sanitized>
当我尝试在服务器 B 上运行此查询时:
CREATE EXTERNAL TABLE testtable ( COL1 INTEGER ) USING ( DATAOBJECT('/var/tmp/test.txt') DELIMITER 30 NULLVALUE 'N' ESCAPECHAR '\' TIMESTYLE '24HOUR' BOOLSTYLE 'T_F' CTRLCHARS TRUE LOGDIR '/data/data/HAGDEMO/temp/' Y2BASE 2000 ENCODING 'INTERNAL' REMOTESOURCE 'ODBC' );
每次都有响应。 但是,如果我执行查询:
SELECT * FROM testtable;
它有 50% 的时间有效。前 50% 是正常的。其他 50% 导致挂起。没有错误,没有响应,甚至没有返回游标。只是一个挂起。
在跟踪 pg.log 文件时,我没有发现任何错误。或任何会显示问题的东西。它会确认查询并继续这一天,就好像该喝啤酒一样。
有什么我应该做的吗?这是初始管理员登录,所以我知道所有权限都在那里。
我错过了什么? 谢谢
更新#1: 运行查询时,查询会正常显示在会话管理器中,然后挂起。当我将查询升级到关键状态时,它会立即执行。这是什么原因?我不想每次都手动更新 odbc 的优先级。谢谢。
【问题讨论】:
-
您的查询可能会受到工作负载管理/GRA 限制的影响。当您的查询似乎挂起时,检查 nzadmin->active 查询中的状态,或从 _v_qrystat 中选择 * - 并查找 state_text。它是挂起、运行还是排队?
-
谢谢斯科特。他们说“跑步”
-
另一个问题。您从什么工具和操作系统运行查询?我了解到您已经安装了 netezza 客户端代码并以某种形式使用 odbc,但更具体地说,您使用的是命令行界面还是其他工具?
-
我正在通过 linux 上的 odbc 从 datastage 运行查询。我正在使用 netezza 管理员来监视会话。此外,这个问题主要在我对外部表运行查询时得到解决。
-
您提到可以访问 pg.log,那么当您有一个挂起的查询时,您是否也可以尝试运行“nzsqa schedqueues -sys”?运行它几次,寻找你的 planid,看看它是否在 RUNNING 部分,然后查看 age:snip/plan/nullio 的值,看看这三个值中的任何一个是否随着它挂起的时间而增加。
标签: netezza