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 表的上次访问时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

Redshift 是不是存储上次访问的时间戳?

如何获取目录的属性,例如上次访问和上次修改

有没有办法知道上次在雪花中访问表的时间

bigquery 表的上次访问日期

使用 UNIX SAS 找出 Netezza 表的大小

芹菜:访问上次运行任务的时间?