전체 포스팅 ‘오라클(Oracle)에 공공데이터병원과 약국정보 테이블 작성 및 CSV 파일데이터 등록’에서 생성한 테이블을 이용하여 테이블의 PK 지정 및 INDEX를 생성해 봅니다.
아래의 작업은 Debeaver 툴을 이용하여 수행합니다. Debeaver 프로그램은 무료이므로 제 게시물의 Debeaver 다운로드 게시물을 참고하시기 바랍니다.1. PK 생성 하에 실행된 쿼리의 “PHARM_INFO” 테이블의 PHARM_NM 컬럼을 PK로 지정하는 작업을 진행합니다.

오라클 PK 및 INDEX 추가 샘플 테이블 “Database Navigatro” 내 ①의 PHARM_INFO(약국정보) 테이블을 더블 클릭합니다.

오라클 PK 추가 테이블 선택 ①의 “Constraints”를 선택합니다.바탕화면에서 마우스를 우클릭하여 ②의 “Create New Constraint”가 속한 창을 호출합니다.
ORACLEPK 추가①의 “Type:”이 “PRIMARYKEY”가 되도록 선택합니다.② 의 “PHARM_NM” 을 PK 지정을 위해 체크박스를 선택합니다.③ 의 “확인” 버튼을 선택합니다.
ORACLEPK 컬럼 선택①의 PK Constraint가 추가된 것을 확인할 수 있습니다.CTRL+S(저장) 바로 가기를 눌러 Personal Changes 창이 나타나면 ②의 “Persist”를 클릭하여 최종 반영합니다.
ORACLEPK 추가 쿼리①의 “ORA-02437:cannotvalidate(TESTUSER.PHARM_INFO_PK)-primarykeyviolated” 메시지가 출력되면 PK에서 지정한 PHARM_NM의 데이터 중 중복된 데이터가 있어 PK 무결성 오류가 발생한 내역입니다.
ORACLEPK 추가 시 무결성 오류 오류
아래 쿼리는 중복된 값이 존재하는 컬럼의 ROWID를 중복한 데이터가 1건 이상인 ROW의 데이터를 삭제하는 쿼리입니다.아래 쿼리를 실행하여 상기 PK 컬럼의 무결성 오류를 삭제할 수 있습니다.
위 쿼리에서 중복된 값이 삭제되면 위에서 설명한 PK Constraint 추가 작업을 다시 진행하거나 PK 생성 쿼리를 실행합니다.
2. 테이블 INDEX의 추가 수백만~수억 건의 데이터가 존재하는 테이블은 데이터가 너무 많아 조회 시간이 오래 걸리기 때문에 인덱스(INDEX)를 만들어 속도를 빠르게 할 수 있습니다. 다음은 Debeaver 툴을 이용하여 INDEX를 생성해 보겠습니다.
① 의 “Indexes” 를 선택합니다.데스크톱을 클릭하고 ②의 “Create New Index” 선택 창이 나타나면 클릭합니다.
ORACLE INDEX 추가 작업 ①의 INDEX에 추가할 컬럼 체크박스를 선택합니다.INDEX 컬럼 선택 기준은 본인이 사용하는 질의 조건에 해당하는 컬럼이 기준입니다.② 의 확인 버튼을 클릭합니다.
ORACLE INDEX 컬럼 선택①이 추가된 “PHARM_INFO_PHARM_NM_IDX1″을 확인합니다.인덱스명 영역을 클릭하여 명칭 변경도 가능하오니 참고하시기 바랍니다.② 의 “Persist” 를 클릭하여 최종 반영합니다.
ORACLE INDEX SQL 반영 DBe aver 툴을 이용하여 오라클 테이블의 PK와 INDEX를 생성해 보았습니다.별도의 오류나 질문사항은 댓글을 이용해주세요.