Index rebuild 예
Oracle 9i 부터는 대부분의 인덱스 타입에 대해 다른 사용자의 작업에 영향을 주지 않으며 index를 재구성하는 방법인 online index rebuild를 지원 합니다.
인덱스 rebuild 절차는 다음과 같습니다.
1. rebuild 하려는 index의 대상 table에 발생하는 변경 대상을 index가 생성되는 tablespace에 “temporary index organized journal table”을 만들어 기록
2. 다른 사용자의 select는 rebuild 하기 전의 인덱스를 사용
3. 다른 사용자가 rebuil 되기 전의 인덱스에 변경을 가하면 journal table에 기록
4. rebuild 작업이 완료되면 journal table에 있던 변경 내용과 merge
5. merge 작업은 20 rows 마다 commit 됨
인덱스 rebuild 방법에 대해 예를 통해 보도록 하죠…
SQL> conn scott/tiger
연결되었습니다.
SQL> create table test_emp (
2 emp_id varchar2(10) not null,
3 emp_name varchar2(10) not null,
4 salary number
5 );
테이블이 생성되었습니다.
SQL> );
SP2-0042: 알 수 없는 명령어 ")" - 나머지 줄 무시.
SQL> insert into test_emp values ('A0000001','1길동',5000);
1 개의 행이 만들어졌습니다.
SQL> insert into test_emp values ('A0000003','3길동',3000);
1 개의 행이 만들어졌습니다.
SQL> insert into test_emp values ('A0000002','2길동',2000);
1 개의 행이 만들어졌습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> select * from test_emp;
EMP_ID EMP_NAME SALARY
---------- ---------- ----------
A0000001 1길동 5000
A0000003 3길동 3000
A0000002 2길동 2000
SQL> create index idx_emp_id_reverse on emp(emp_id) reverse;
create index idx_emp_id_reverse on emp(emp_id) reverse
*
1행에 오류:
ORA-00904: 열명이 부적합합니다
SQL> create index idx_emp_id_reverse on test_emp(emp_id) reverse;
인덱스가 생성되었습니다.
SQL> alter index idx_emp_id_reverse rebuild online;
인덱스가 변경되었습니다.
SQL> alter index idx_emp_id_reverse rebuild compute statistics online;
인덱스가 변경되었습니다.
SQL> -- oracle8i에서는 general index라고 할지라도 compute statistics와 online을
같이 사용하면 오류가 발생
SQL> create index idx_ename_sal_fnc
2 on test_emp (emp_name desc, (salary / 10)*100);
on test_emp (emp_name desc, (salary / 10)*100)
*
2행에 오류:
ORA-01031: 권한이 불충분합니다
--------------------------------------------------------------
위의 함수 기반 인덱스를 만들기 위해서는 QUERY REWRITE 권한이 있어야 합니다.
함수 기반 인덱스란,,,,함수(function)이나 수식(expression)으로 계산된 결과에 대해 인덱스를 생성하여 사용할 수 있는 기능을 제공 합니다. 질의 수행 시 해당 함수, 수식을 처리하여 결과를 가져 오는 것이 아니라 인덱스 형태로 존재하는 미리 계산되어 있는 결과를 가지고 처리하므로 성능 향상을 기할 수 있습니다.
--------------------------------------------------------------
SQL> conn / as sysdba
연결되었습니다.
SQL> GRANT QUERY REWRITE TO SCOTT;
권한이 부여되었습니다.
SQL> conn scott/tiger
연결되었습니다.
SQL> create index idx_ename_sal_fnc
2 on test_emp (emp_name desc, (salary / 10));
인덱스가 생성되었습니다.
함수 기반 인덱스에 대해 온라인 리빌드가 가능 합니다.
SQL> alter index idx_ename_sal_fnc rebuild online;
인덱스가 변경되었습니다.
-- Key Compressed Index 생성, 온라인 rebuild test
SQL> create index idx_salary_compress on test_emp(salary) compress 1;
인덱스가 생성되었습니다.
SQL> alter index idx_salary_compress rebuild online;
인덱스가 변경되었습니다.
이번에는 비트맵 인덱스를 만들고 온라인 rebuil 해 봅니다. 이 경우엔 온라인 rebuild 되지 않습니다.
SQL> create bitmap index idx_emp_name on test_emp(emp_name);
인덱스가 생성되었습니다.
SQL> alter index idx_emp_name rebuild online;
alter index idx_emp_name rebuild online
*
1행에 오류:
ORA-08108: 인덱스 온라인으로 된 유형을 구축하거나 재구축하지 말아야 합니다
Oracle 9i 부터는 대부분의 인덱스 타입에 대해 다른 사용자의 작업에 영향을 주지 않으며 index를 재구성하는 방법인 online index rebuild를 지원 합니다.
인덱스 rebuild 절차는 다음과 같습니다.
1. rebuild 하려는 index의 대상 table에 발생하는 변경 대상을 index가 생성되는 tablespace에 “temporary index organized journal table”을 만들어 기록
2. 다른 사용자의 select는 rebuild 하기 전의 인덱스를 사용
3. 다른 사용자가 rebuil 되기 전의 인덱스에 변경을 가하면 journal table에 기록
4. rebuild 작업이 완료되면 journal table에 있던 변경 내용과 merge
5. merge 작업은 20 rows 마다 commit 됨
인덱스 rebuild 방법에 대해 예를 통해 보도록 하죠…
SQL> conn scott/tiger
연결되었습니다.
SQL> create table test_emp (
2 emp_id varchar2(10) not null,
3 emp_name varchar2(10) not null,
4 salary number
5 );
테이블이 생성되었습니다.
SQL> );
SP2-0042: 알 수 없는 명령어 ")" - 나머지 줄 무시.
SQL> insert into test_emp values ('A0000001','1길동',5000);
1 개의 행이 만들어졌습니다.
SQL> insert into test_emp values ('A0000003','3길동',3000);
1 개의 행이 만들어졌습니다.
SQL> insert into test_emp values ('A0000002','2길동',2000);
1 개의 행이 만들어졌습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> select * from test_emp;
EMP_ID EMP_NAME SALARY
---------- ---------- ----------
A0000001 1길동 5000
A0000003 3길동 3000
A0000002 2길동 2000
SQL> create index idx_emp_id_reverse on emp(emp_id) reverse;
create index idx_emp_id_reverse on emp(emp_id) reverse
*
1행에 오류:
ORA-00904: 열명이 부적합합니다
SQL> create index idx_emp_id_reverse on test_emp(emp_id) reverse;
인덱스가 생성되었습니다.
SQL> alter index idx_emp_id_reverse rebuild online;
인덱스가 변경되었습니다.
SQL> alter index idx_emp_id_reverse rebuild compute statistics online;
인덱스가 변경되었습니다.
SQL> -- oracle8i에서는 general index라고 할지라도 compute statistics와 online을
같이 사용하면 오류가 발생
SQL> create index idx_ename_sal_fnc
2 on test_emp (emp_name desc, (salary / 10)*100);
on test_emp (emp_name desc, (salary / 10)*100)
*
2행에 오류:
ORA-01031: 권한이 불충분합니다
--------------------------------------------------------------
위의 함수 기반 인덱스를 만들기 위해서는 QUERY REWRITE 권한이 있어야 합니다.
함수 기반 인덱스란,,,,함수(function)이나 수식(expression)으로 계산된 결과에 대해 인덱스를 생성하여 사용할 수 있는 기능을 제공 합니다. 질의 수행 시 해당 함수, 수식을 처리하여 결과를 가져 오는 것이 아니라 인덱스 형태로 존재하는 미리 계산되어 있는 결과를 가지고 처리하므로 성능 향상을 기할 수 있습니다.
--------------------------------------------------------------
SQL> conn / as sysdba
연결되었습니다.
SQL> GRANT QUERY REWRITE TO SCOTT;
권한이 부여되었습니다.
SQL> conn scott/tiger
연결되었습니다.
SQL> create index idx_ename_sal_fnc
2 on test_emp (emp_name desc, (salary / 10));
인덱스가 생성되었습니다.
함수 기반 인덱스에 대해 온라인 리빌드가 가능 합니다.
SQL> alter index idx_ename_sal_fnc rebuild online;
인덱스가 변경되었습니다.
-- Key Compressed Index 생성, 온라인 rebuild test
SQL> create index idx_salary_compress on test_emp(salary) compress 1;
인덱스가 생성되었습니다.
SQL> alter index idx_salary_compress rebuild online;
인덱스가 변경되었습니다.
이번에는 비트맵 인덱스를 만들고 온라인 rebuil 해 봅니다. 이 경우엔 온라인 rebuild 되지 않습니다.
SQL> create bitmap index idx_emp_name on test_emp(emp_name);
인덱스가 생성되었습니다.
SQL> alter index idx_emp_name rebuild online;
alter index idx_emp_name rebuild online
*
1행에 오류:
ORA-08108: 인덱스 온라인으로 된 유형을 구축하거나 재구축하지 말아야 합니다
[100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2893 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | ||
53 | [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… | 03-15 | 1974 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2106 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 3067 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1623 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1947 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1814 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2431 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2893 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 2026 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 1996 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1637 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1862 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2110 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1509 |
댓글 없음:
댓글 쓰기