Netezza 表的上次访问时间戳?
Posted
技术标签:
【中文标题】Netezza 表的上次访问时间戳?【英文标题】:Last accessed timestamp of a Netezza table? 【发布时间】:2015-07-06 20:54:18 【问题描述】:有没有人知道一个查询,它为我提供了上次访问 Netezza 表以执行任何操作(选择、插入或更新)的详细信息?
【问题讨论】:
您可能还想考虑在DBA StackExchange 上询问这个问题。它可能更适合那里。 好的,我会这样做的。如果您知道,您能否告诉我假设启用了审核,我该怎么做? 【参考方案1】:根据您的设置,您可能需要尝试以下查询:
select *
from _v_qryhist
where lower(qh_sql) like '%tablename %'
【讨论】:
【参考方案2】:Netezza 中有一个history views 集合,应该可以提供您需要的信息。
【讨论】:
感谢您的及时回复。因此,给出的示例是: select * from "$hist_version";但这给了我“错误:关系不存在 SYSTEM.ADMIN.$v_hist_queries” 是否需要对查询进行一些修改,或者该查询是否要在特定数据库中执行?谢谢 @Macopare - 您是否为数据库启用了审核? 我是新来的,所以我不确定...但我相信我从同事那里听说过,你能告诉我检查这个的方法吗? 历史视图通常(可能需要?)包含在单独的数据库中。寻找定义了这些视图的不同数据库。【参考方案3】:Netezza 不会在目录中跟踪此信息,因此您通常必须从查询历史数据库中挖掘这些信息(如果已配置)。
现代 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 视图末尾的数字以匹配您的查询历史版本。
【讨论】:
以上是关于Netezza 表的上次访问时间戳?的主要内容,如果未能解决你的问题,请参考以下文章