我在我的 Oracle DB 模式中看到一个“丢失”表周围的奇怪行为。
最终目标是收集我们团队使用的所有表的统计数据。所有这些表都有一个共同的前缀 - rca
。
因此,我正在使用以下方法获取表列表:
SELECT *
FROM ALL_OBJECTS
where OBJECT_NAME like 'rca%'
AND OBJECT_TYPE = 'TABLE';
Run Code Online (Sandbox Code Playgroud)
此查询返回一个名为 的表rca_related_materials
。
我们正在使用由其他团队开发的功能,该功能为我们完成收集统计数据的工作。我们只是将 owner_name 和 table_name 传递给该函数。
为此表名调用该函数或运行
analyze table rca_related_materials compute statistics for table;
Run Code Online (Sandbox Code Playgroud)
甚至,
select *
from rca_related_materials;
Run Code Online (Sandbox Code Playgroud)
返回以下错误报告
SELECT *
FROM ALL_OBJECTS
where OBJECT_NAME like 'rca%'
AND OBJECT_TYPE = 'TABLE';
Run Code Online (Sandbox Code Playgroud)
如何从 ALL_OBJECTS 表中删除此条目?
PS:我在 USER_TABLES 和 DBA_TABLES 中也看到了相同的条目。
具有小写名称的数据库对象在引用时需要将其名称用双引号括起来
此外,您遗漏了架构名称。
尝试
select *
from SCHEMA_NAME."rca_related_materials";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
541 次 |
最近记录: |