需要查询以获取已使用和未使用表的列表[关闭]
Posted
技术标签:
【中文标题】需要查询以获取已使用和未使用表的列表[关闭]【英文标题】:Need a query to get a list of used and unused tables [closed] 【发布时间】:2011-11-14 15:54:14 【问题描述】:我在一个文本文件中将我们架构中的表列表提供给我的老板,问他我们需要不备份所有这些表。现在他要我写一个查询来返回需要备份的其余表。
他提示我必须在查询中使用 USER_TABS 和 DIFF。
有人可以帮忙吗?
我正在使用 ORACLE 数据库。
【问题讨论】:
【参考方案1】:什么标准定义了一个“未使用”的表,什么标准定义了一个“需要备份”的表? “备份”是什么意思?
如果您谈论的是备份,您通常会谈论物理备份,在这种情况下您会备份整个数据库(完全备份或增量备份,具体取决于您如何构建备份策略)。您不会也不能在物理备份中包含或排除表。您可以将表移动到只读表空间,让 Oracle 知道它们不需要再次备份。但这听起来不像是你所追求的。
【讨论】:
嗨贾斯汀,我们的客户想知道我们正在改变的桌子,这样他们就不必每周不必要地收回所有桌子。相反,他们只是想知道我们对其进行了更改的表,以便他们可以仅备份这些表并保持良好状态。我发给老板的表格列表是在记事本中手动制作的 @Bhushan - 再说一遍,“备份”是什么意思?如果您的意思是正常的物理备份,他们应该进行增量 RMAN 备份,并且不需要您的任何输入。 “改变”是什么意思?你真的是指ALTER TABLE
即 DDL 吗?还是您的意思是具有 DML 更改的表? Oracle 不会跟踪任意时间段内的 DML 更改——如果您真的想跟踪对任何表的每个 DML 更改,您可能会在每个表上创建触发器,写入单独的日志表,然后查询日志表。但这似乎不太实用。
好的,让我重新表述我的问题。忘记我之前说的一切。现在假设我有 10 个表 A、B、C、D、E、F、G、H、I、J。你能告诉我一个使用 USER_TABS 和 DIFF 来返回表 K 到 Z 的 sql 吗?
@Bhushan - 假设 K-Z 存在并且是唯一存在的其他表 SELECT table_name FROM user_tables WHERE table_name NOT IN ('A','B','C','D',...,'J')
以上是关于需要查询以获取已使用和未使用表的列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章