假设我知道特定数据库记录何时更新。我知道某处存在所有已执行 SQL 的历史记录,可能只有 DBA 才能访问。如果我可以访问此历史记录,我可以从中选择查询文本所在的位置LIKE '%fieldname%'
。虽然这几乎可以提取任何包含我正在寻找的字段名称的事务查询,但这是一个很好的开始,特别是如果我可以将记录集过滤到特定的日期/时间范围。
我发现了这个dbc.DBQLogTbl
视图,但它似乎没有像我预期的那样工作。是否有其他视图包含我正在寻找的信息?
假设我知道特定数据库记录何时更新。我知道某处存在所有已执行 SQL 的历史记录,可能只有 DBA 才能访问。如果我可以访问此历史记录,我可以从中选择查询文本所在的位置LIKE '%fieldname%'
。虽然这几乎可以提取任何包含我正在寻找的字段名称的事务查询,但这是一个很好的开始,特别是如果我可以将记录集过滤到特定的日期/时间范围。
我发现了这个dbc.DBQLogTbl
视图,但它似乎没有像我预期的那样工作。是否有其他视图包含我正在寻找的信息?
这取决于 DBA 已启用的数据库查询日志记录 (DBQL) 的级别。一些 DBA 可能选择不提供战术查询的详细信息,因此最好咨询您的 DBA 团队以了解所捕获的内容。您还可以查询 DBC.DBQLRules 以确定已启用的日志记录级别。
您的问题将特别感兴趣以下数据字典对象:
这些表可以在 DBC 中通过QueryID
和连接在一起ProcID
。还有一些其他表可以捕获有关查询的信息,但超出了此特定问题的范围。您可以在 Teradata 手册中找到有关这些内容的信息。
与您的 DBA 团队核实,以确定正在执行的日志记录级别以及他们保留历史 DBQL 数据的位置。通常,DBQL 数据每晚都会移动到历史数据库,并且数据从缓存刷新到 DBC 表通常会有十分钟的延迟。您的 DBA 团队可以告诉您在哪里可以找到历史 DBQL 数据。