REINDEX DATABASE
REINDEX DATABASE 명령을 사용하여 사용자 데이터베이스를 비우고 재색인화할 수 있습니다. 이 명령을 실행하려면 관리 사용자로 SYSTEM 데이터베이스에 연결해야 합니다.
사용자 데이터베이스에서 SQL 객체를 생성, 사용 및 삭제하면 데이터베이스 소프트웨어가 해당 객체에 대한 시스템 카탈로그에 항목을 생성합니다. 시스템 카탈로그 테이블에는 카탈로그 액세스 속도를 높이기 위한 인덱스가 포함되어 있습니다. 데이터베이스 사용자가 오브젝트를 빈번하게 작성, 사용하고 삭제하는 경우(이는 써드 파티 SQL 보고 애플리케이션을 사용하면 자주 발생함), 삭제된 오브젝트에 대한 인덱스 항목이 매우 커져서 쿼리 성능에 영향을 줄 수 있습니다.
REINDEX DATABASE 명령을 사용하여 카탈로그 테이블 내에서 삭제된 오브젝트에 대한 항목을 제거하고(또는 비우고) 나서 사용자 데이터베이스 내에서 카탈로그 테이블 인덱스를 다시 작성할 수 있습니다. 명령을 실행하려면 관리 사용자로 SYSTEM 데이터베이스에 연결할 수 있는 권한이 있어야 합니다. 사용자 데이터베이스는 활성 세션 또는 연결을 보유할 수 없습니다. 재인덱스 데이터베이스 명령이 실행되는 동안 NPS 시스템은 온라인 상태를 유지할 수 있습니다. 재색인화 프로세스는 일반적으로 매우 빠릅니다. 명령은 일반적으로 작은 사용자 데이터베이스의 업데이트에서는 수 초를 요구하며, 매우 큰 데이터베이스에서는 완료하는 데 수 분을 요구할 수 있습니다.
구문
REINDEX DATABASE <name>입력
| 입력 | 설명 |
|---|---|
| <name> | 재색인화할 사용자 데이터베이스의 이름입니다. |
출력
| 출력 | 설명 |
|---|---|
| REINDEX DATABASE | 명령에 성공했습니다. |
| ERROR: command must be run from the system database | 명령을 실행하려면 관리 사용자로 SYSTEM 데이터베이스에 연결해야 합니다. |
| ERROR: unable to acquire lock on database name | 데이터베이스에 활성 연결이 있습니다. 데이터베이스를 재색인화하려면 우선 데이터베이스에 대한 세션을 중지해야 합니다. SYSTEM 데이터베이스는 재색인화할 수 없습니다. |
| ERROR: REINDEX DATABASE cannot run inside a BEGIN/END block or stored procedure | 스토어드 프로시저의 본문 내에서 또는 트랜잭션 블록 내에서는 REINDEX DATABASE 명령을 사용할 수 없습니다. |
| ERROR: REINDEX DATABASE: permission denied | 명령을 실행하려면 관리 사용자로 SYSTEM 데이터베이스에 연결해야 합니다. |
사용량
emp데이터베이스를 재색인화합니다.SYSTEM.ADMIN(ADMIN)=> REINDEX DATABASE emp; REINDEX DATABASE