설치 스크립트 정보
설치 스크립트는 응용 프로그램을 만드는 데 필요한 모든 SQL 문을 포함하거나 다른 스크립트를 실행하는 마스터 스크립트일 수 있습니다.
스크립트는 이름이 .sql(예: create_app.sql)로 끝나는 파일의 일련의 SQL 문입니다. SQL*Plus 또는 SQL Developer와 같은 클라이언트 프로그램에서 스크립트를 실행하면 SQL 문이 스크립트에 나타나는 순서대로 실행됩니다. 응용 프로그램을 생성하는 SQL 문이 포함된 스크립트를 설치 스크립트라고 합니다.
응용 프로그램을 배치하려면 배치 환경에서 하나 이상의 설치 스크립트를 실행합니다. 새 응용 프로그램의 경우 설치 스크립트를 만들어야 합니다. 이전 응용 프로그램의 경우 설치 스크립트가 존재할 수 있지만 그렇지 않으면 만들 수 있습니다.
DDL 문 및 스키마 객체 종속성 정보
설치 스크립트에는 스키마 객체를 생성하는 DDL 문과 DDL 문이 생성하는 테이블로 데이터를 로드하는 INSERT 문(선택 사항)이 포함됩니다. 설치 스크립트를 올바르게 만들고 올바른 순서로 여러 설치 스크립트를 실행하려면 응용 프로그램의 스키마 객체 간 종속성을 이해해야 합니다.
객체 A의 정의가 객체 B를 참조하면 A는 B에 종속됩니다. 따라서 A를 생성하기 전에 B를 먼저 생성해야 합니다. 그렇지 않으면 객체 유형에 따라 B를 생성하는 명령문이 실패하거나 부적합한 상태로 B가 생성됩니다.
복잡한 응용 프로그램의 경우 객체 생성 순서가 명확하지 않습니다. 일반적으로 데이터베이스 디자이너 또는 디자인 다이어그램을 참조해야 합니다.
참조:
-
스키마 객체 종속성에 대한 자세한 내용은 Oracle Database Development Guide를 참조하십시오.
INSERT 문 및 제약 조건 정보
INSERT 문이 포함된 설치 스크립트를 실행할 때 개발 환경의 소스 테이블 데이터를 배치 환경의 새 테이블에 삽입할 때 제약 조건을 위반할 수 있는지 여부를 확인해야 합니다.
새 테이블에 데이터가 삽입될 때 응용 프로그램에 있는 각 소스 테이블에 대해 제약 조건을 위반할 수 있는지 확인해야 합니다. 위반되는 경우 먼저 이러한 제약 조건을 사용 안함으로 설정하고 데이터를 삽입한 다음 제약 조건을 사용으로 다시 설정해야 합니다. 데이터 항목이 제약 조건을 위반할 경우 데이터 항목을 수정할 때까지 해당 제약 조건을 다시 사용으로 설정할 수 없습니다.
"데이터 로드"에서와 같이 조회 데이터를 올바른 순서로 삽입하는 경우에는 제약 조건이 위반되지 않습니다. 따라서 제약 조건을 처음부터 사용 안함으로 설정할 필요는 없습니다.
외부 소스(예: 파일, 스프레드시트 또는 이전 응용 프로그램) 또는 종속 데이터의 양이 많은 다수의 테이블의 데이터를 삽입하는 경우에는 데이터를 삽입하기 전에 먼저 제약 조건을 사용 안함으로 설정합니다.
다음과 같은 방법으로 제약 조건을 비활성화하고 다시 활성화할 수 있습니다.
-
SQL Developer를 사용하여 한 번에 하나의 제약 조건을 사용 안함으로 설정했다가 사용으로 다시 설정합니다.
-
Connections 프레임에서 적합한 테이블을 선택합니다.
-
테이블 이름이 표시된 창에서 하위 탭 제약 조건을 선택합니다.
-
테이블의 모든 제약 조건 리스트에서
ENABLED를DISABLED(또는 그 반대)로 변경합니다.
-
-
설치 스크립트를 편집하여 각 제약 조건을 사용 안함으로 설정했다가 다시 사용으로 설정하는 SQL 문을 추가합니다.
-
각 제약 조건을 사용 안함으로 설정했다가 사용으로 설정하는 SQL 문을 사용하여 SQL 스크립트를 생성합니다.
-
Oracle 데이터베이스 데이터 디렉토리에서 제약 조건을 찾고 SQL 문을 사용하여 SQL 스크립트를 생성하여 각 제약 조건을 사용 안함으로 설정했다가 사용으로 설정합니다.
예를 들어, "테이블 생성"에서 EVALUATIONS, PERFORMANCE_PARTS 및 SCORES 테이블에 사용된 제약 조건을 찾아 사용으로 설정하려면 워크시트에 다음 명령문을 입력하십시오.
SELECT 'ALTER TABLE '|| TABLE_NAME || ' DISABLE CONSTRAINT '|| CONSTRAINT_NAME ||';' FROM user_constraints WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES'); SELECT 'ALTER TABLE '|| TABLE_NAME || ' ENABLE CONSTRAINT '|| CONSTRAINT_NAME ||';' FROM user_constraints WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES');참조: