2011-02-23 7 views
1

누구든지 나를 도울 수 있는지 모르겠습니다. 필자의 일에서 필자는 완전히 문서화되지 않은 데이터베이스 (Oracle 11)를 상속 받았다. 지금까지 대부분의 테이블을 매핑하고 어디에서 진행되는지 결정했습니다. 그러나 해독 할 수없는 몇 가지 열이 있습니다.열의 데이터가 어디에서 비롯되었는지 어떻게 알 수 있습니까?

열의 데이터가 어떻게 작성되는지 알아내는 방법이 있습니까? 이것은 수동 입력이 아닙니다. 모든 것이 완전히 다른 테이블의 다른 열에 입력 한 결과 인 데이터를 가리키는 것처럼 보입니다.

불가능한 작업 일지 모르지만 모든 제안은 환영 할만한 것입니다.

감사합니다.

C

+0

테이블 구조에 대한 통찰력은 도움이되고 추측됩니다. – Mikhail

+0

계산 된 열과 같거나 다른 곳의 데이터로 구성된 것처럼 보입니다. 그것은 AI 레벨 패턴 인식을 통해 결정합니다. – mellamokb

답변

1

당신은 DBMS_METADATA 패키지를 사용하여 테이블의 전체 DDL을 검색 할 수 있습니다.

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

이러한 열이 실제로 계산 된 열이면 테이블의 DDL에 표시되어야합니다.

또는 당신은 아마도 데이터가 트리거를 통해 정체 불명의 컬럼에 삽입되는 테이블

2

에 대한 DDL을 보여 SQL Developer를 사용할 수 있습니까? 사전에있는 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. 

이렇게하면 가능한 몇 군데를 가리킬 수 있습니다.

행운을 빈다.

0

나는 이미 문제가되는 sql이 있다고 가정합니다.

select table_name from dba_tab_columns 
where column_name = 'COLUMN_YOU_WANT_TO_KNOW' 

은 찾고있는 열 이름을 포함하는 모든 테이블을 제공합니다. dba 권한이 없으면 대신 all_tab_columns를 사용할 수 있습니다 (계정에 액세스 할 수있는 모든 테이블이 표시됩니다).

관련 문제