SnowConvert: 오브젝트 참조 보고서¶
참고
기본 제공 요소는 이 보고서의 일부로 간주되지 않습니다.
“오브젝트 참조”란 무엇인가요?¶
오브젝트 참조는 코드 단위에서 참조하는 소스 코드의 DDL 정의를 참조하는 데 사용되는 용어입니다. 아래 테이블은 지원되는 각 언어에서 참조할 수 있는 요소를 보여줍니다.
Object | Teradata | Oracle | Transact-SQL | Extensibility Languages |
---|---|---|---|---|
Table | ✓ | ✓ | ✓ | ✓ |
View | ✓ | ✓ | ✓ | ✓ |
Procedure | ✓ | ✓ | ✓ | ✓ |
Function | ✓ | ✓ | ✓ | ✓ |
Macro | ✓ | |||
Package Function | ✓ | |||
Package Procedure | ✓ | |||
*Package | ✓ | |||
Join Index | ✓ | |||
Index | ✓ | |||
Synonym | ✓ | |||
Database Link | ✓ | |||
Type | ✓ | ✓ | ✓ | |
Materialized View | ✓ | |||
Trigger | ✓ | ✓ | ✓ | |
Sequence | ✓ | ✓ | ✓ | |
Constraint | ✓ | ✓ |
참고
위 섹션에 별표(‘*’)가 목록에 있는 경우 상수, 변수 또는 커서와 같이 DDL 문으로 간주되지 않는 속성을 오브젝트 자체에서 호출하는 데 사용되는다는 의미입니다.
어디서 찾을 수 있나요?¶
오브젝트 참조 보고서는 변환의 출력 폴더에 있는 _”reports”_라는 폴더에서 찾을 수 있습니다. 파일 이름 자체가 _”ObjectReferences”_로 시작하므로 쉽게 위치를 찾을 수 있습니다.
파일 형식은 .CSV 입니다.
어떤 정보가 포함되어 있나요?¶
오브젝트 참조 보고서에는 변환하는 동안 발견된 모든 참조에 대한 다음 정보가 포함되어 있습니다.
열 |
설명 |
---|---|
PartitionKey |
변환의 고유 식별자입니다. |
FileName |
오브젝트가 위치한 파일의 이름입니다. |
Caller_CodeUnit |
기존 요소를 참조하는 코드 단위의 유형입니다. |
Caller_CodeUnit_Database |
기존 요소를 참조하는 코드 단위의 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Caller_CodeUnit_Schema |
기존 요소를 참조하는 코드 단위의 스키마입니다. |
Caller_CodeUnit_Name |
기존 요소를 참조하는 코드 단위의 이름입니다. |
Caller_CodeUnit_FullName |
기존 요소를 참조하는 오브젝트의 정규화된 이름입니다. |
Referenced_Element_Type |
참조된 요소의 DDL 유형입니다. |
Referenced_Element_Database |
참조된 요소의 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Referenced_Element_Schema |
참조된 요소의 스키마입니다. |
Referenced_Element_Name |
참조된 요소의 이름입니다. |
Referenced_Element_FullName |
참조된 요소의 정규화된 이름입니다. |
라인 |
참조가 위치한 파일 내부의 라인 번호입니다. |
Relation_Type |
호출자 코드 단위와 오브젝트 참조를 통해 사용되는 관계의 유형을 표시합니다. |
오브젝트 참조로서의 Oracle 데이터베이스 링크¶
데이터베이스 링크 참조의 데이터베이스 이름, 스키마 이름 또는 오브젝트 이름과 같은 정보를 얻으려면 데이터베이스 링크가 어떻게 정의되었는지 알아야 합니다. 데이터베이스 링크에는 해당 정의에 사용되는 연결 문자열에 가장 관련성이 높은 정보가 포함되어 있습니다. 예:
데이터베이스 이름과 데이터베이스 링크¶
CREATE DATABASE LINK remote_hr_db
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB';
SELECT * FROM hr.employees@remote_hr_db;
위의 예시를 사용하면 오브젝트 참조 정보는 다음과 같이 표시되어야 합니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | N/A | remote_hr_db | hr.employees@remote_hr_db | 6 |
데이터베이스 및 스키마 이름과 데이터베이스 링크¶
CREATE DATABASE LINK remote_hr_db1
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB.MySchema';
SELECT * FROM employees@remote_hr_db1;
위의 예시를 사용하면 오브젝트 참조 정보는 다음과 같이 표시되어야 합니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | MySchema | remote_hr_db1 | hr.employees@remote_hr_db1 | 6 |
연결 문자열이 있는 데이터베이스 링크¶
CREATE DATABASE LINK remote_hr_db2
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING '(DESCRIPTION=(
ADDRESS=
(PROTOCOL=TCP)
(HOST=10.48.195.17)
(PORT=1521))
(CONNECT_DATA=(SID=MyDB)))';
SELECT * FROM employees@remote_hr_db2;
위의 예시를 사용하면 오브젝트 참조 정보는 다음과 같이 표시되어야 합니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | MyDB | N/A | remote_hr_db2 | employees@remote_hr_db2 | 6 |
관계 유형¶
관계 유형은 호출자 코드 단위가 오브젝트 참조와 어떻게 연관되어 있는지를 나타냅니다. SnowConvert 는 다음과 같은 종류의 관계를 식별할 수 있습니다.
FOREIGN KEY
INSERT
DELETE
UPDATE
CALL
EXECUTE
SYNONYM
ALTER
DROP
MERGE
TRUNCATE
LOCK
INDEX
TABLE COLUMN
GRANT
REVOKE
SELECT
COLUMN
FROM
WHERE
HAVING
GROUP BY
JOIN
ORDER BY
예¶
UPDATE 문을 통해 테이블을 참조하는 저장 프로시저입니다.
CREATE TABLE TABLE2
(
COL1 VARCHAR(50) NOT NULL,
COL2 INT NOT NULL
);
CREATE OR REPLACE PROCEDURE Procedure01 (param1 NUMBER)
IS
BEGIN
UPDATE TABLE2
SET COL1 = 'Anderson'
WHERE COL2 = param1;
END;
보고서에는 다음 테이블과 같은 내용이 표시됩니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE PROCEDURE | CREATE TABLE | TABLE2 | 10 | UPDATE |
FOREIGN KEY 를 통해 다른 테이블을 참조하는 테이블:
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE TABLE TABLE2
(
COL1 INT,
CONSTRAINT FK_COL1 FOREIGN KEY (COL1)
REFERENCES TABLE1(COL1)
);
보고서에는 다음 테이블과 같은 내용이 표시됩니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE TABLE | CREATE TABLE | TABLE1 | 10 | FOREIGN KEY |
SELECT 문의 FROM 절에서 뷰가 참조하는 테이블입니다.
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE VIEW VIEW1
AS
SELECT * FROM TABLE1;
보고서에는 다음 테이블과 같은 내용이 표시됩니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE TABLE | TABLE1 | 8 | SELECT - FROM |
뷰에서 결과 세트 열로 참조하는 사용자 정의 함수(UDF)입니다.
CREATE FUNCTION FUNCTION1(PARAM1 INT)
RETURN NUMBER
IS
BEGIN
RETURN(PARAM1 + 1);
END;
CREATE VIEW VIEW1
AS
SELECT FUNCTION1(*) FROM TABLE1;
보고서에는 다음 테이블과 같은 내용이 표시됩니다.
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE FUNCTION | FUNCTION1 | 10 | SELECT - COLUMN |