有没有人知道一个查询,它提供了上次为任何操作(选择,插入或更新)访问Netezza表的详细信息?
答案 0 :(得分:2)
根据您的设置,您可能需要尝试以下查询:
select *
from _v_qryhist
where lower(qh_sql) like '%tablename %'
答案 1 :(得分:1)
Netezza不会在目录中跟踪此信息,因此您通常必须从查询历史数据库中挖掘该信息(如果已配置)。
Modern Netezza查询历史信息通常存储在专用数据库中。根据权限,您可以查看是否已启用历史记录收集,以及使用以下命令将其用于哪个数据库。请提前为破屏事包裹道歉。
SYSTEM.ADMIN(ADMIN)=> show history configuration;
CONFIG_NAME | CONFIG_DBNAME | CONFIG_DBTYPE | CONFIG_TARGETTYPE | CONFIG_LEVEL | CONFIG_HOSTNAME | CONFIG_USER | CONFIG_PASSWORD | CONFIG_LOADINTERVAL | CONFIG_LOADMINTHRESHOLD | CONFIG_LOADMAXTHRESHOLD | CONFIG_DISKFULLTHRESHOLD | CONFIG_STORAGELIMIT | CONFIG_LOADRETRY | CONFIG_ENABLEHIST | CONFIG_ENABLESYSTEM | CONFIG_NEXT | CONFIG_CURRENT | CONFIG_VERSION | CONFIG_COLLECTFILTER | CONFIG_KEYSTORE_ID | CONFIG_KEY_ID | KEYSTORE_NAME | KEY_ALIAS | CONFIG_SCHEMANAME | CONFIG_NAME_DELIMITED | CONFIG_DBNAME_DELIMITED | CONFIG_USER_DELIMITED | CONFIG_SCHEMANAME_DELIMITED
-------------+---------------+---------------+-------------------+--------------+-----------------+-------------+---------------------------------------+---------------------+-------------------------+-------------------------+--------------------------+---------------------+------------------+-------------------+---------------------+-------------+----------------+----------------+----------------------+--------------------+---------------+---------------+-----------+-------------------+-----------------------+-------------------------+-----------------------+-----------------------------
ALL_HIST_V3 | NEWHISTDB | 1 | 1 | 20 | localhost | HISTUSER | aFkqABhjApzE$flT/vZ7hU0vAflmU2MmPNQ== | 5 | 4 | 20 | 0 | 250 | 1 | f | f | f | t | 3 | 1 | 0 | 0 | | | HISTUSER | f | f | f | f
(1 row)
还要记下CONFIG_VERSION,因为它在制作以下查询示例时会发挥作用。就我而言,我碰巧使用的是查询历史数据库的第3版格式。
假设已配置历史记录集,并且您可以访问历史记录数据库,则可以从该数据库中的表和视图中获取您要查找的信息。这些是documented here。以下是一个示例,它通过引用“usage”列来报告给定表何时成功插入,更新或删除的目标。在这里,我使用history table helper functions之一解压该列。
SELECT FORMAT_TABLE_ACCESS(usage),
hq.submittime
FROM "$v_hist_queries" hq
INNER JOIN "$hist_table_access_3" hta
USING (NPSID, NPSINSTANCEID, OPID, SESSIONID)
WHERE hq.dbname = 'PROD'
AND hta.schemaname = 'ADMIN'
AND hta.tablename = 'TEST_1'
AND hq.SUBMITTIME > '01-01-2015'
AND hq.SUBMITTIME <= '08-06-2015'
AND
(
instr(FORMAT_TABLE_ACCESS(usage),'ins') > 0
OR instr(FORMAT_TABLE_ACCESS(usage),'upd') > 0
OR instr(FORMAT_TABLE_ACCESS(usage),'del') > 0
)
AND status=0;
FORMAT_TABLE_ACCESS | SUBMITTIME
---------------------+----------------------------
ins | 2015-06-16 18:32:25.728042
ins | 2015-06-16 17:46:14.337105
ins | 2015-06-16 17:47:14.430995
(3 rows)
您需要更改$ v_hist_table_access_3视图末尾的数字,以匹配您的查询历史版本。
答案 2 :(得分:0)
Netezza中有一组code golf应该提供您需要的信息。