如何查看列中的数据来自何处?

时间:2011-02-23 15:32:09

标签: sql database oracle database-design data-structures

我不知道是否有人可以帮助我。在我的工作中,我继承了一个完全没有文档的数据库(Oracle 11)。到目前为止,我已经设法映射了大多数表格,并确定了在哪里发生了什么。但是,有一些我无法解读的专栏。

有没有办法找出列中的数据是如何构建的?这不是手动输入。一切似乎都指向数据是完全不同的表中不同列中的条目的结果。

这可能是一项不可能完成的任务,但任何和所有建议都将受到欢迎。

谢谢!

C

3 个答案:

答案 0 :(得分:2)

也许数据是通过触发器插入到你的神秘列中的?尝试查看字典中的PL / SQL源表:

SELECT owner, name, type, line
  FROM dba_source
 WHERE UPPER(text) LIKE '%MYSTERY_COLUMN_NAME%'
   AND type = 'TRIGGER';  -- use or omit this as desired.

这会让你指出一些可能的地方。

祝你好运!

答案 1 :(得分:1)

您可以使用DBMS_METADATA包检索表的完整DDL。

SELECT dbms_metadata.get_ddl('TABLE', 'YOUR_TABLE_NAME', 'YOUR_USER_NAME')
FROM dual;

如果这些列是真正的计算列,那么这应该在表的DDL中可见。

或者,您可以使用SQL Developer来显示表格的DDL

答案 2 :(得分:0)

我假设你已经有了问题的sql。

select table_name from dba_tab_columns
where column_name = 'COLUMN_YOU_WANT_TO_KNOW'

将提供包含您要查找的列名的所有表。如果您没有dba权限,则可以使用all_tab_columns(这将显示您的帐户可以访问的所有表格)。