데이터 보존을 사용하면 데이터 구조 또는
메타데이터를 변경하거나 한 테이블에서 다른 테이블로 데이터를 이주할 때
목표 데이터베이스에서 데이터가 표시되는 방법을 제어할 수 있습니다.
Optim™ Database
Administrator는
확장된 변경을 지원합니다. ALTER 명령문을 사용하여 변경을 쉽게 구현할 수 없는 경우 확장된 변경이
필요합니다. 확장된 변경은 테이블 데이터를 저장 및 보존하고, 테이블을 삭제 후 다시 작성한 다음
데이터를 다시 로드합니다.
또한 한 테이블에서 다른 테이블로 데이터를 이주하는 경우
데이터도 저장 및 보존되어야 합니다.
변경 관리 스크립트 편집기의
명령 미리보기 링크를 누르면 Optim Database
Administrator에서
변경에 대한 명령을 생성합니다. 또한 제품이 데이터를 보존해야 함을 감지하는 경우
언로드 및 다시 로드 명령을 자동으로 생성합니다. DB2® 유지보수 명령도
자동으로 생성됩니다. 그런 후 명령을 수정하려면 데이터 옵션을 눌러
데이터 보존 사용자 정의 마법사를 시작할 수
있습니다. 마법사를 사용하여 사용할 언로드 및 다시 로드 메소드 수정, 언로드 명령 및
다시 로드 명령 수정, 생성되는 DB2 유지보수 명령 변경 프로세스를
수행할 수 있습니다.
데이터 보존은 다음 상황에서 특히 유용합니다.
- 테이블을 삭제할 때
- 테이블을 삭제하는 경우 특히 변경을 실행 취소해야
할 경우에 나중에 사용할 수 있도록 파일의 해당 테이블에서 데이터를 저장할 수
있습니다.
- 테이블을 작성할 때
- 새 테이블을 작성하는 경우 이 테이블을 다른 테이블의 데이터로
채울 수 있습니다. 변경 관리 주메뉴 아래의
데이터 이주 조치를 사용하면 데이터를 테이블로
이주할 수 있습니다. 그런 다음 변경 관리 스크립트 편집기의
명령 섹션에서 데이터 옵션을 눌러
로드하려는 데이터를 사용자 정의할 수 있습니다. 데이터 보존
사용자 정의 마법사가 시작됩니다. 마법사는
한 테이블에서 언로드하고 새 테이블로 로드하려는 데이터의 맵핑
프로세스를 안내합니다.
팁: 새 테이블을 파일의 데이터로 채우기 위해
LOAD 또는 IMPORT 유틸리티를 사용할 수 있습니다. 오브젝트 목록에서
새 테이블을 마우스 오른쪽 단추로 누르고 메뉴에서 적절한 조치를 선택하십시오.
- 오류가 있는 변경을 수행할 때
- 테이블을 삭제한 후 다시 작성해야 하는 변경을 수행하는 경우,
해당 테이블에서 데이터를 언로드한 후 다시 로드해야 합니다.
- 한 테이블에서 다른 테이블로 데이터를 이주할 때
- 데이터를 이주할 때 소스 테이블에서 데이터를 언로드한 후
목표 테이블로 데이터를 다시 로드해야 합니다.
데이터 보존 사용자 정의 마법사의
언로드 및 다시 로드 정보 페이지에서 다양한 조치를 수행할 수 있습니다.
테이블을 선택하고 쿼리 변경 체크 박스를 선택하여
테이블의 언로드 명령을 사용자 정의할 수 있습니다. 마찬가지로
맵핑 변경 체크 박스를 선택하여
다시 로드 명령을 사용자 정의할 수 있습니다. 언로드 및 다시 로드 명령의
사용자 정의를 도와주는 추가적인 마법사 페이지가 표시됩니다. 데이터 보존 변경 명령을 사용자 정의해야
특정한 변경을 올바르게 전개할 수 있습니다.
제한사항: 변경 명령을 생성할 경우 항상 기본 데이터 보존 항목이 다시 만들어집니다.
이전에 생성한 데이터 보존 명령은 데이터 보존 사용자 정의 마법사를 재실행하는
과정에서 사용되지 않습니다.
언로드 및 다시 로드 명령 메소드
Optim Database
Administrator에서 지원하는 여러 가지 방법으로 데이터를 언로드 및 다시 로드할 수 있습니다. 데이터
보존 사용자 정의 마법사의
데이터 언로드 및 다시 로드 정보 지정 페이지에서
언로드 및 다시 로드 조작에 사용되는 메소드를
선택하고 사용자 정의할 수 있습니다.
사용자가
선택하는 언로드 명령 방법의 유형에 따라 다음 테이블에 표시된 바와 같이 데이터 보존이 내부인지 외부인지 여부가
판별됩니다.
표 1. 지원되는 언로드 메소드 및 데이터 보존 유형언로드 제공자 |
데이터 보존 유형 |
DEL 데이터 형식에 대한 EXPORT |
외부 |
IXF 데이터 형식에 대한 EXPORT |
외부 |
고성능 언로드(DB2 HPU 언로드 명령) |
외부 |
내부 데이터 보존 제공자 |
내부 |
내부 데이터 보존 커서 제공자 |
내부 |
외부 데이터 보존을 사용하는 경우 데이터는 외부 파일에 저장됩니다.
데이터는 익스포트 명령 또는 DB2 HPU를
사용하여 외부 파일로 언로드됩니다.
데이터는 사용자가 선택한 다시 로드 명령 메소드에 따라
임포트 또는 로드 명령으로 외부 파일에서 다시 로드됩니다.
한 테이블에서 다른 테이블로 데이터를 이주하는 경우, 데이터는 외부 파일로 저장되어야 하므로
외부 데이터 보존을 사용해야 합니다.
내부 데이터 보존을 사용하는 경우 데이터는 데이터베이스 내부에 저장됩니다. 테이블이 변경되면 데이터베이스의 테이블 이름이 바뀌어 쉐도우 테이블이 작성됩니다. 테이블을 다시 작성한 후에는 데이터가 이 쉐도우 테이블에서 다시 작성되고 변경된 테이블로 이동됩니다. 사용자가
선택한 언로드 명령 메소드에 따라 INSERT문을 사용하거나 커서의 로드를 사용하여 데이터를 이동하게 됩니다.
디폴트로
쉐도우 테이블은 'SHAD_'라는 접두부가 붙은 이름으로 바뀝니다. 해당 이름을 가진
테이블이 존재하는 경우 해당 테이블은 쉐도우 테이블이 작성되기 전에
삭제됩니다. 내부 언로드 메소드의 옵션을
사용자 정의하여 다른 접두부를 사용하도록 지정하거나 해당 이름을 가진
테이블이 존재하는 경우 다른 접두부로 쉐도우 테이블을 작성할 수 있습니다.
내부 데이터 보존은 파일 입출력이 필요하지 않으므로 외부 보존보다 속도가 빠를 수 있습니다.
그러나 내부 데이터 보존을 사용할 때는 데이터베이스에 스페이스가 충분한지 확인하십시오.
요구사항: 높은 성능의 언로드(HPU)를 언로드 메소드로 지정하려면
DB2 High Performance Unload(HPU) for Multiplatforms 또는
DB2 High
Performance Unload(HPU) for Workgroups 제품이 설치되어 있어야 합니다.그렇지 않으면
생성된 언로드 명령이 실패합니다. 이러한
제품들은 따로 구입하여 설치합니다.
트리거가 있는 테이블로 데이터를
다시 로드하는 경우 INSERT문과 함께 데이터 파일을 이용하거나 가져오기 명령으로 데이터를
다시 로드하는 경우에만 트리거가 활성화됩니다.로드 명령을
사용하거나 커서의 로드 기능을 사용하여 데이터 파일을 사용하여 데이터를 다시 로드하는 경우에는
로드 유틸리티가 트리거와 연관된 비즈니스 규칙을 적용할 수 없기 때문에 트리거가 활성화되지
않습니다.트리거를
활성화하지 않으려면 로드 명령(또는 커서에서 로드)을 사용하거나 생성된 변경 명령을 수정하여 데이터 로드 후
트리거가 작성되도록 하십시오.
중요사항: 트리거를 활성화하는 다시 로드 메소드를 선택하는 경우,
변경 명령 파일을 확인하여 데이터가 다시 로드되는 순서를 확인하십시오.
Optim Database
Administrator에서는
사용자가 의도한 대로 트리거가 활성화되도록 데이터를 자동으로 다시 로드하지
않습니다.
고급 데이터 보존 기술
고급 데이터 보존 기술은 다음과 같습니다.
- 컬럼 삭제
- 컬럼 삭제는 생성된 언로드 및 다시 로드 명령을 사용자 정의하는 방법으로 쉽게 관리할 수 있습니다. 명령을 변경하여
삭제된 컬럼의 데이터가 보존되는지 확인할 수 있습니다. 또한 다시 로드 명령을
사용자 정의하여 언로드된 컬럼이 다시 로드된 컬럼에 제대로
맵핑되는지 확인할 수 있습니다.
- NOT NULL 컬럼 추가
- NOT NULL 컬럼 추가는 디폴트값이 있는 컬럼의 경우 간단합니다. 컬럼에 디폴트값이 없는 경우
데이터 보존 사용자 정의 마법사의 언로드 명령 사용자 정의 페이지에서
언로드 명령의 SELECT절을 사용자 정의하십시오.
- 자동 캐스트(cast) 함수 사용
- 언로드 컬럼과 다시 로드 컬럼의 데이터 유형이 일치하지 않을 경우 자동 캐스트(CAST) 함수를 사용하여
이러한 불일치를 해결할 수 있습니다.
데이터 보존 사용자 정의 마법사의
언로드 명령 사용자 정의 페이지 또는
언로드 및 다시 로드 정보 페이지에서
자동 캐스트를 선택하는 경우 Optim Database
Administrator는
익스포트 또는 언로드 명령문의 SELECT절에서 CAST 컬럼 함수를
자동으로 추가합니다. 디폴트 쿼리를 선택하여 디폴트 SELECT절을 취소할 수 있습니다.
제한사항: SELECT절에
추가 변경을 수행하면 자동 캐스트 또는 디폴트 쿼리 옵션을 선택할 때
그 변경 내용이 유실됩니다.
지원되는 DB2
유지보수 명령
변경 관리 프로세스 이후에는 특정 데이터베이스 패키지가 작동되지 않고 통계가 부정확해 질 수 있습니다. 예를 들어 사용자가 오브젝트를 삭제하면 DB2는 패키지를 유효하지 않거나 작동 불가능으로 표시합니다. 가장 최근의
통계에 따라 패키지를 다시 작성하려면 리바인드 명령을 실행해야 합니다. DB2
유지보수 명령에는 다음이 포함됩니다.
- Runstats 명령
- 데이터베이스가 변경되거나 데이터가 테이블에 로드된 후에는 통계를 다시 만드는 것이 중요합니다.
- Reorg 명령
- 테이블이 변경되면 모든 인덱스를 재구성해야 합니다. 테이블 스페이스가 변경된 경우에도
모든 테이블 및 인덱스를 재구성해야 합니다. Optim Database
Administrator는
모델을 포워드 엔지니어링할 때 사용자가 데이터 보존 사용자 정의 마법사의 유지보수 명령 페이지에서
해당 옵션을 지우지 않는 한 디폴트로 REORG TABLE 명령을
발행합니다. Optim Database
Administrator는 또한
테이블이 재구성된 후 자동으로 runstats 명령을 생성하여
통계를 새로 고칩니다. 또한 재구성된 데이터를 활용하기 위해서는 응용프로그램 패키지를 모두 리바인드해야
합니다.
Reorg 명령의 영향에 대한
자세한 정보는 DB2
Command Reference를 참조하십시오.
- 리바인드 명령
- 변경 명령에 다음 DROP문이 포함된 경우 패키지를 리바인드해야 합니다.
- TABLE
- TRIGGER
- MQT
- UDF
- VIEW
- ALIAS
- INDEX
- STRUCTURE TYPE
여러번 변경해야 하는 경우에는 패키지를 리바인드하여 성능을 향상시켜야 합니다. Optim Database
Administrator는
변경 관리 스크립트에 정의한 변경에 따라 영향을 받는 패키지에 대해 리바인드 명령을 생성합니다.
- 패키지 캐시 비우기 명령
- 통계가 갱신되면 동적 SQL문에서 갱신된 통계를 사용하도록 패키지 캐시를 비우십시오. 그러면 성능이 향상됩니다.