태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[이벤트 둘!/정답 및 당첨자 발표] 당신의 오라클 내공을 보여주세요!

이벤트/이벤트 2010. 10. 5. 12:54

Oracle ACE "Dion Cho" 가 직접 출제하는 주옥같은 문제!
당신의 오라클 내공 보여주세요
가장 좋은 정답을 제출한 분께
5만원 상품권을 드립니다

지금 바로 도전하세요~!                                  지난달 당첨자 및 정답 발표

다음과 같이 테이블 T1을 만들고, Unique 인덱스 T1_N1을 만듭니다.
SQL> create table t1  2  as  3  select level as c1, level as c2  4  from dual  5  connect by level <= 1000;Table created.SQL> create unique index t1_n1 on t1(c1);Index created.
그리고 다음과 같은 작업을 수행합니다.
SQL> { Unique 인덱스 T1_n1을 경유해 테이블 T1을 업데이트하는 어떤 작업 };
위에서 수행한 작업에 대해 TKPROF 리포트를 만들면 다음과 같은 결과가 나옵니다.
UPDATE T1 SET C2 = :B1 +1WHERE C1 = :B2call     count       cpu    elapsed       disk      query    current      rows------- ------  -------- ---------- ---------- ---------- ----------  --------Parse        1      0.00       0.00          0          0          0         0Execute      1      0.03       0.03          0       1011       1022      1000Fetch        0      0.00       0.00          0          0          0         0------- ------  -------- ---------- ---------- ---------- ----------  --------total        2      0.03       0.03          0       1011       1022      1000
위의 결과를 보면 UPDATE 문은 분명히 한번(Execute=1) 수행되었지만 총 1,000건(rows=1000)이 변경된 것으로 보고되고 있습니다. 어떻게 이것이 가능할까요?

{ Unique 인덱스 T1_n1을 경유해 테이블 T1을 업데이트하는 어떤 작업 }에 가장 알맞은 코드를 작성해서 보내주시는 것이 이번 퀴즈의 문제입니다. 단, 실제로 동작하는 코드라는 것을 확인하기 위해서 반드시 SQL*Plus의 SPOOL 결과를 보내주신 경우에만 정답으로 인정하겠습니다.

정답발표

정답제출: quiz@ex-em.com

정답자 발표 : 2010년 10월 5일 화요일 오후 2시
--------------------------------------------------------------------
퀴즈 정답 접수가 마감되었습니다. 

<퀴즈 당첨자>

구**  sa***@gmail.com


많은 분들이 정답을 보내주셨습니다~
참여해주신 모든 분들께 진심으로 감사드립니다. 
정답이 아래에 공개됩니다!  


<퀴즈 정답> 

이번 달은 문제가 조금 애매했던 관계로 도전자가 조금 적었습니다. 하지만 출제자의 의도를 완벽하게 파악해서 답변을 제시해주신 분이 있습니다.

이번 문제의 정답은 배치 DML입니다. 아래와 같이 FORALL 구문을 이용해서 UPDATE 문을 수행합니다.

SQL> ALTER SESSION SET SQL_TRACE = TRUE;

세션이 변경되었습니다.

SQL> DECLARE
  2  
  3  CURSOR CUR IS
  4  SELECT C1 FROM HSKOO.T1;
  5  
  6  TYPE T1_C1 IS TABLE OF HSKOO.T1.C1%TYPE;
  7  
  8  T1_C1S T1_C1;
  9  
 10  BEGIN
 11      OPEN CUR;
 12      FETCH CUR BULK COLLECT INTO T1_C1S;
 13      CLOSE CUR;
 14  
 15      FORALL X IN T1_C1S.FIRST..T1_C1S.LAST
 16      UPDATE HSKOO.T1
 17         SET C2 = T1_C1S(X) + 1
 18       WHERE C1 = T1_C1S(X);
 19  
 20  END;
 21  /

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> SPOOL OFF
FORALL 구문을 사용하면 오라클은 내부적으로 배열 프로세싱(Array Processing)을 사용합니다. 따라서 아래와 같이 단 한건만 UPDATE하는 구문임에도 불구하고 한번 실행에서 여러 개(여기서는 1,000개)의 로우를 한번에 UPDATE하는 것으로 보고되는 것입니다.
UPDATE HSKOO.T1 SET C2 = :B1 + 1 
WHERE
 C1 = :B2 


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.06       0.36          0       1002       1024        1000
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.06       0.36          0       1002       1024        1000

 

정답을 맞추신 분께 다시 한번 축하말씀드리며, 다음 번에 보다 단순하면서도 재미있는 문제를 준비하도록 하겠습니다. 참여해 주신 모든 분께 감사드립니다.^^

[이벤트 하나!/당첨자 발표] Oracle Event Tour 만화를 채워주세요.

이벤트/이벤트 2010. 9. 17. 09:47
당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 동일하게 들어가는 알맞은 말을 채워주세요


힌트1. 'Aster와 함께하는 Oracle Event Tour' 제23회 gc buffer busy   
        2. 
만화보러가기

이벤트 기간: 2010년 9월 16일 오전~오후 6시  
당첨자 발표: 2010년 9월 17일 오전 10시 


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘 
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 기프티콘을 드릴수 없습니다. 연락처 잊지 마세요!^^
많은 분들의 참여 기다리겠습니다!

당첨자 발표
김성열, 남군, 두계웅, 윤태준, 김은혜, 김신연, 윤미지, 윤윤선, 이원기, 태욱

이상 열분께 스타벅스 기프티콘이 날아갑니다~ 오늘 중으로 받지 못하신 분은
sunshy12@ex-em.com 으로 연락부탁드립니다! 감사합니다.

  • 이전 댓글 더보기
  • 윤태중 2010.09.16 10:11 ADDR 수정/삭제 답글

    gc buffer busy

    010-8789-6827

  • 2010.09.16 10:11 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 10:21 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:01 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:05 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:15 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:24 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:34 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 11:55 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 12:59 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 13:37 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 13:56 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 18:29 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 20:59 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 21:09 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 23:04 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 23:07 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 23:08 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 23:55 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.09.16 23:57 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트 둘!] 당신의 오라클 내공을 보여주세요~

이벤트/이벤트 2010. 9. 1. 12:20

Oracle ACE "Dion Cho" 가 직접 출제하는 주옥같은 문제!
당신의 오라클 내공 보여주세요
가장 좋은 정답을 제출한 분께
5만원 상품권 드립니다

지금 바로 도전하세요~!                                   지난달 당첨자 및 정답발표


이번 문제는 아래와 같습니다.
SQL> create table t1(c1 number);

Table created.

SQL> insert into t1
  2  select 1 from dual connect by level <= 10000
  3  union all
  4  select null from dual connect by level <= 10;

10010 rows created.

SQL> create index t1_n1 on t1(c1);

Index created.

SQL> exec dbms_stats.gather_table_stats(user, 'T1', no_invalidate=>false);

PL/SQL procedure successfully completed.

SQ> -- WHERE C1 IS NULL 은 반드시 Table Full Scan!
SQL> explain plan for
  2  select * from t1
  3  where c1 is null;

Explained.

SQL> select * from table(dbms_xplan.display(format=>'basic'));

PLAN_TABLE_OUTPUT
-----------------------------------
Plan hash value: 3617692013

----------------------------------
| Id  | Operation         | Name |
----------------------------------
|   0 | SELECT STATEMENT  |      |
|   1 |  TABLE ACCESS FULL| T1   |
----------------------------------

8 rows selected.

SQL> -- 하지만 아래와 같이 인덱스를 만들면 Index Range Scan 가능!
SQL> { 여기에 들어갈 SQL 문장을 완성해주세요 };

Index created.

SQL> explain plan for
  2  select * from t1
  3  where c1 is null;

Explained.

SQL> select * from table(dbms_xplan.display(format=>'basic'));

PLAN_TABLE_OUTPUT
------------------------------------
Plan hash value: 677322570

----------------------------------
| Id  | Operation        | Name  |
----------------------------------
|   0 | SELECT STATEMENT |       |
|   1 |  INDEX RANGE SCAN| T1_N2 |
----------------------------------

8 rows selected.

 

위의 테스트 케이스에서 { 여기에 들어갈 SQL 문장을 완성해주세요 } 부분에 들어갈 적절한 SQL 문장을 보내주시면 됩니다. 해답을 보내주신 분들 중 다음과 같은 기준으로 정답자 한 분을 선정합니다.

  • 가장 먼저
  • 가장 정확한 정답을
  • 기타 재미있는 아이디어가 있으면 가산점!


정답제출
: quiz@ex-em.com
정답자 발표 : 2010년 9월 1일 수요일 오후 3시


많은 참여 부탁드립니다^^
------------------------------------------------------------------------------------------------------
퀴즈 정답 접수가 마감되었습니다. 

<퀴즈 당첨자>

남**  14***@naver.com


많은 분들이 정답을 보내주셨습니다~
참여해주신 모든 분들께 진심으로 감사드립니다. 
정답이 아래에 공개됩니다!  


<퀴즈 정답> 

 

1. 퀴즈의 정답은 아래와 같이 무의미한 Dummy 키를 추가한 일종의 복합 인덱스를 만드는 것입니다.
SQL> create index t1_n2 on t1(c1, '');

Index created.

SQL> 
SQL> explain plan for
  2  select * from t1
  3  where c1 is null;

Explained.

SQL> -- 아래의 문법은 Oracle 11g에서만 동작합니다. 
SQL> -- 10g까지는 select * from table(dbms_xplan.display) 로 호출하면 됩니다.
SQL> select * from table(dbms_xplan.display(format=>'basic'));

----------------------------------
| Id  | Operation        | Name  |
----------------------------------
|   0 | SELECT STATEMENT |       |
|   1 |  INDEX RANGE SCAN| T1_N2 |
----------------------------------
NULL 값을 다루는 몇가지 다른 방법을 볼까요?

2. 우선 비트맵 인덱스는 NULL 값을 포함합니다. 단, 이것은 이론적인 설명으로 실제 운영환경에서 NULL 값을 인덱싱하기 위한 목적으로 비트맵 인덱스를 함부로 사용해선 안됩니다.

SQL> create bitmap index t1_n1 on t1(c1);

Index created.

SQL> 
SQL> explain plan for
  2  select * from t1
  3  where c1 is null;

----------------------------------------------
| Id  | Operation                    | Name  |
----------------------------------------------
|   0 | SELECT STATEMENT             |       |
|   1 |  BITMAP CONVERSION TO ROWIDS |       |
|   2 |   BITMAP INDEX FAST FULL SCAN| T1_N1 |
----------------------------------------------
3. IS NULL 조건을 변경할 수 있다면 아래와 같이 NVL과 같은 함수를 이용한 Function Based Index도 사용할 수 있습니다.
SQL> create index t1_n1 on t1(nvl(c1,-1));

Index created.

SQL> 
SQL> explain plan for
  2  select * from t1
  3  where nvl(c1,-1) = -1;

---------------------------------------------
| Id  | Operation                   | Name  |
---------------------------------------------
|   0 | SELECT STATEMENT            |       |
|   1 |  TABLE ACCESS BY INDEX ROWID| T1    |
|   2 |   INDEX RANGE SCAN          | T1_N1 |
---------------------------------------------
4. 또 하나의 방법은 NAN 값을 이용하는 것입니다. NAN은 Not-A-Number의 약자로 Number는 아니지만 Null도 아닌 값을 의미합니다. 아래와 같이 사용할 수 있습니다. 단, Number 타입에 대해서만 지원된다는 제약이 있습니다.
SQL> create table t1(c1 binary_float);

Table created.

SQL> 
SQL> insert into t1
  2  select 1 from dual connect by level <= 10000
  3  union all
  4  select binary_float_nan from dual connect by level <= 10;

10010 rows created.

SQL> create index t1_n1 on t1(c1);

Index created.

SQL> explain plan for
  2  select /*+ index(t1) */ * from t1
  3  where c1 = binary_float_nan;

----------------------------------
| Id  | Operation        | Name  |
----------------------------------
|   0 | SELECT STATEMENT |       |
|   1 |  INDEX RANGE SCAN| T1_N1 |
----------------------------------
역시 1번 정답이 최고의 방법이군요!
  • 남군 2010.09.07 15:52 ADDR 수정/삭제 답글

    상품권 잘 받았습니다.
    감사합니다.

  • Favicon of https://blog.ex-em.com EXEM 2010.09.08 10:43 신고 ADDR 수정/삭제 답글

    네^^ 앞으로도 엑셈 이벤트에 많은 관심 부탁드려요!^^

  • Favicon of http://park1q.com park1q 2010.09.29 17:08 ADDR 수정/삭제 답글

    이런 제 홈페이지에 예전에 써 놨던 글인데..미리 알았더라면..저도 도전했을텐데..아쉽네요..*^^*

  • 2010.10.08 15:23 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트 하나!/당첨자 발표] Oracle Event Tour 만화를 채워주세요.

이벤트/이벤트 2010. 8. 26. 09:39

당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 들어가는 알맞은 말을 채워주세요!



힌트1. 'Aster와 함께하는 Oracle Event Tour' 제21회 log file switch completion  
        2. 
만화보러가기

이벤트 기간: 2010년 8월 25일 오전~오후 6시  
당첨자 발표: 2010년 8월 26일 오전 10시 


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘 
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 기프티콘을 드릴수 없습니다. 연락처 잊지 마세요!^^

당첨자

김여름, 김창권, 홍택민, 변대범, 윤광희, 정지원, 박애라, 강진수, 강현식,
김종익

당첨자분들께는 스타벅스 기프티쇼가 날아갑니다. 금일(8/26) 중으로 기프티쇼를 수령하지 못하신 분은 sunshy12@ex-em.com 으로 문의 주시기 바랍니다.

이벤트에 참여해 주신 모든 분들께 감사드립니다.

  • 이전 댓글 더보기
  • 2010.08.25 09:57 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:14 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:30 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:35 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:39 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:44 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 10:54 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 11:37 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 11:41 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 12:00 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 12:55 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 13:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 남해연 2010.08.25 14:21 ADDR 수정/삭제 답글

    정답 : 로그파일 스위치 컴플리션

    연락처 : 010-2212-3369

  • 2010.08.25 15:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 15:24 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 16:15 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.25 17:17 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.08.26 13:34 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트 둘!/ 당첨자 발표및 정답공개] 당신의 오라클 내공을 보여주세요~

이벤트/이벤트 2010. 7. 28. 14:28

Oracle ACE "Dion Cho" 가 직접 출제하는 주옥같은 문제!
당신의 오라클 내공 보여주세요
가장 좋은 정답을 제출한 분께
5만원 상품권 드립니다(정답발표 아래로)

지금 바로 도전하세요~!

1. 아래와 같이 2 개의 Unique Constraint가 있습니다.

SQL> select constraint_name, constraint_type
  2  from user_constraints
  3  where table_name = 'T1';

CONSTRAINT_NAME C
--------------- -
T1_N1           U
T1_N2           U

2. 각 Constraint를 구성하는 컬럼은 다음과 같습니다.

SQL> col constraint_name format a15
SQL> col table_name format a15
SQL> col column_name format a15
SQL> 
SQL> select constraint_name, table_name, column_name
  2  from user_cons_columns
  3  where table_name = 'T1';

CONSTRAINT_NAME TABLE_NAME      COLUMN_NAME
--------------- --------------- ---------------
T1_N1           T1              C1
T1_N2           T1              C2

3. 각 컬럼을 구성하는 인덱스는 다음과 같습니다.

SQL> select i.index_name, c.column_name, i.uniqueness
  2  from user_indexes i, user_ind_columns c
  3  where i.table_name = 'T1'
  4  	  and i.index_name = c.index_name
  5  ;

INDEX_NAME           COLUMN_NAME     UNIQUENES
-------------------- --------------- ---------
T1_N1                C1              UNIQUE
T1_N2                C2              NONUNIQUE


여기서 문제!

왜 동일한 Unique Constraint 임에도 불구하고 인덱스 T1_N1은 Unique 인덱스이고, 인덱스 T1_N2는 Non-Unique 인덱스일까요?

최고의 답변을 선택하는 기준은 다음과 같습니다.

  • 얼마나 빨리 답변하는가?
  • 얼마나 정확하게 답변하는가?
  • 재현 가능한 테스트 케이스를 제공하는가? (가산점)
답변은 quiz@ex-em.com 으로 보내주시면 됩니다.( 댓글은 금지되어있습니다^^;)

퀴즈 정답 접수가 마감되었습니다.

--------------------------------------------------------------------
<퀴즈 당첨자>

임**  ons***@gmail.com


본 퀴즈의 정답은 2개 입니다. 하지만 많은 분들께서 정답을 하나만 보내주셨는데요,^^; 그래도 하나의 정답을 가장 먼저 보내주신 분께 당첨의 영광을  드리도록 하겠습니다!

엑셈의 이벤트에 참여해주신 모든 분들께 진심으로 감사드립니다. 

2개의 정답이 아래에 공개됩니다!  

<퀴즈 정답>

이번 문제의 정답은 2개입니다.  
  1. 이미 Non Unique 인덱스가 존재하는 컬럼에 대해 Unique Constraint를 부여하는 경우
  2. Deferrable Constraint를 선언하는 경우
자세한 설명은 예제를 통해 하겠습니다.

1. Non Unique 인덱스를 먼저 만들고 Unique Constraint를 생성하는 경우입니다.

SQL> create table t1(c1 number);

Table created.

SQL> create index t1_n1 on t1(c1);

Index created.

SQL> alter table t1 add constraint t1_un unique(c1) using index t1_n1;

Table altered.

-- 또는 이렇게도 할 수 있습니다. 
SQL> alter table t1 add constraint t1_un unique(c1) using index(create index t1_n1 on t1(c1));

SQL> select index_name, uniqueness from user_indexes where table_name = 'T1';

INDEX_NAME           UNIQUENES
-------------------- ---------
T1_N1                NONUNIQUE
2. Unique Constraint를 Deferrable로 선언하는 경우입니다.
SQL> create table t1(c1 number);

Table created.

SQL> alter table t1 add constraint t1_un unique(c1) deferrable;

Table altered.

SQL> select index_name, uniqueness from user_indexes where table_name = 'T1';

INDEX_NAME           UNIQUENES
-------------------- ---------
T1_UN                NONUNIQUE
Deferrable이 가능하려면 Unique Index가 존재해서는 안됩니다. 따라서 어쩔 수 없이 Non Unique 인덱스를 만드는 것입니다. 단, Deferrable Constraint라고 하더라도 아직 Deferred된 상태는 아니므로 Constraint는 정상적으로 동작합니다.
SQL> insert into t1 values(1);

1 row created.

SQL> insert into t1 values(1);
insert into t1 values(1)
*
ERROR at line 1:
ORA-00001: unique constraint (TPACK.T1_UN) violated
다음과 같이 SET CONSTRAINT 명령을 통해서 명시적으로 Deferred 시킬 수 있습니다.(물론 Constraint 생성시에 Deferred 상태를 지정할 수도 있습니다)
SQL> set constraint t1_un deferred;

Constraint set.

SQL> insert into t1 values(1);

1 row created.
Commit할 때 에러가 발생합니다.
SQL> commit;
commit
*
ERROR at line 1:
ORA-02091: transaction rolled back
ORA-00001: unique constraint (TPACK.T1_UN) violated
Constraint를 생성할 때 NOVALIDATE 옵션을 부여하면 기존의 데이터들에 대해서는 Constraint를 확인하지 않습니다. 하지만 다음과 같이 Unique Constraint를 NOVALIDATE로 생성해도 Duplicate Key에러가 발생합니다.
SQL> create table t1(c1 number);

Table created.

SQL> insert into t1 values(1);

1 row created.

-- 중복값 추가!
SQL> insert into t1 values(1); 

1 row created.

SQL> commit;

Commit complete.

SQL> alter table t1 add constraint t1_un unique(c1) enable novalidate;
alter table t1 add constraint t1_un unique(c1) enable novalidate
                              *
ERROR at line 1:
ORA-02299: cannot validate (TPACK.T1_UN) - duplicate keys found
왜 그럴까요? 힌트는 위에서 이미 제시되었습니다. Unique Constraint를 생성할 때 오라클은 가능한 한 Unique 인덱스를 만듭니다. 즉 위의 에러는 Unique 인덱스를 만드는 과정에서 생기는 것으로 볼 수 있습니다. 따라서 Unique 인덱스가 생기지 않게 하면 위의 에러를 피할 수 있을 것입니다.

즉 다음과 같이 Deferrable 속성을 부여하면 됩니다.

SQL> alter table t1 add constraint t1_un unique(c1) deferrable enable novalidate;

Table altered.
한가지 주의할 것은 이런 경우 Constraint을 지워도 인덱스는 남아있다는 것입니다.
SQL> alter table t1 drop constraint t1_un;

Table altered.

SQL> select index_name, uniqueness from user_indexes where table_name = 'T1';

INDEX_NAME           UNIQUENES
-------------------- ---------
T1_UN                NONUNIQUE
또는 다음과 같이 USING INDEX 구문을 이용해서 명시적으로 Non Unique 인덱스를 생성하면 됩니다.
SQL> drop index t1_un;

Index dropped.

SQL> alter table t1 add constraint t1_un unique(c1) using index(create index t1_n1 on t1(c1)) enable novalidate ;

Table altered.
기존의 중복값들은 그대로 남아있고(NOVALIDATE), 새롭게 추가되는 데이터에 대해서만 Unique Constraint가 적용됩니다.
SQL> insert into t1 values(1);
insert into t1 values(1)
*
ERROR at line 1:
ORA-00001: unique constraint (TPACK.T1_UN) violated


SQL> select * from t1;

        C1
----------
         1
         1

 

[이벤트 하나!/당첨자 발표] Oracle Event Tour 만화를 채워주세요.

이벤트/이벤트 2010. 7. 22. 13:39
당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 들어가는 말을 채워주세요!


힌트1. 'Aster와 함께하는 Oracle Event Tour' 제 9회 Log File sync 
        2. 
만화보러가기

이벤트 기간: 2010년 7월 21일 오전~오후 6시  
당첨자 발표: 2010년 7월 22일 오전 10시 


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘 
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 기프티콘을 드릴수 없습니다. 연락처 잊지 마세요!^^

당첨자 발표

황규철, 이재희, 백은희, 장광순, 이강세, 김종원, 오형, 김정원, 강진수,
박승선

이상 열분께 맛있는 스타벅스 커피 쏴드릴게요! 시원한 오후 되세요~
만약 오늘 중으로 기프티쇼를 받지 못하신 분은 sunshy12@ex-em.com 으로
문의 주시기 바랍니다. 감사합니다^^
------------------------------------------------------------------

엑셈 뉴스레터에서만 만나볼 수 있는 이벤트! 다음호에도 계속됩니다~

  • 이전 댓글 더보기
  • 2010.07.21 09:58 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 09:59 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 10:12 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 10:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 10:25 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 10:46 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 11:05 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 11:14 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 11:16 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 11:25 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 11:50 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 12:00 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 12:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 13:10 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 13:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 13:36 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.21 14:08 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.22 12:44 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.22 12:47 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.07.23 10:50 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트] Oracle Event Tour 만화를 채워주세요!

이벤트/이벤트 2010. 6. 22. 09:47

당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 들어가는 말을 채워주세요!

힌트: 1. 'Aster와 함께하는 Oracle Event Tour' 제18회 latch: Shared Pool (Bind
Mismatch)   
       
        2.
만화보러가기

이벤트 기간: 2010년 6월 24일 오전~오후 6시  
당첨자 발표: 2010년 6월 25일 오전 10시


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 기프티콘을 드릴수 없습니다. 연락처 잊지 마세요!^^

당첨자 발표
박애라, 이재희, 이정수, 유덕현, 남해연, 김혜련, 김철수, 김중우, 박준석,
두계웅

위 열분 축하드립니다! 시원한 커피 쏴드릴게요! ^^
계속해서 많은 관심 부탁 드립니다.  감사합니다.

----------------------------------------------------------------------------
엑셈 뉴스레터에서만 만나볼 수 있는 이벤트,,
다음 호에도 계속됩니다!!^^

  • 이전 댓글 더보기
  • 2010.06.24 10:21 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:22 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:36 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:37 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:40 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 10:58 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 12:42 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 12:48 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 12:50 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 12:50 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 13:00 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 13:16 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 13:31 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 13:34 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 15:00 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 15:02 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.25 01:14 ADDR 수정/삭제 답글

    비밀댓글입니다

  • Favicon of https://blog.ex-em.com EXEM 2010.06.25 09:18 신고 ADDR 수정/삭제 답글

    전화번호가 공개되어있어 관리자가 수정하였습니다.

    latch: Shared Pool ,
    바인딩 변수만 상관 있는건가요, 아님. 일반 테이블 where 조건 작성할 때는 관계없나요.
    ..생각하려고 하니 헤깔리네요.ㅎㅎ;
    좀 찾아봐야겠네요.

[이벤트/당첨자 발표] Oracle Event Tour 만화를 채워주세요!

이벤트/이벤트 2010. 5. 27. 14:08
당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 동일하게 들어가는 말을 채워주세요!


힌트: 1. 'Aster와 함께하는 Oracle Event Tour' 제14회 Direct Path Write          
        2.
만화보러가기

이벤트 기간: 2010년 5월 26일 오전~오후 6시  
당첨자 발표: 2010년 5월 27일 오전 10시


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 선물을 드릴수 없습니다. 연락처 잊지 마세요!^^

당첨자 발표
김진모 박준석 ho joon ji 한만용 최창민 윤윤선 남해연 박욱순 곽선정
신지미


당첨자 발표가 좀 늦었습니다^^;;
위 열분 축하드립니다! 기프티콘 발송해 드릴게요^^
--------------------------------------------------------------------엑셈 뉴스레터에서만 만나볼 수 있는 이벤트,,
다음 호에도 계속됩니다!!^^

  • 이전 댓글 더보기
  • 2010.05.26 11:24 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 11:46 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 11:48 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 11:51 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 12:49 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 13:06 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 13:11 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 13:29 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 13:31 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 13:31 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 23:19 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.26 23:19 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.27 09:50 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.05.27 17:45 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 09:08 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 14:25 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 15:57 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 23:46 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.24 23:47 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.06.28 11:05 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트/당첨자 발표] Oracle Event Tour 만화를 채워주세요!

이벤트/이벤트 2010. 4. 22. 10:13
당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 빈칸에 동일하게 들어가는 말을 채워주세요!



 힌트: 1. 'Aster와 함께하는 Oracle Event Tour' 제7회 DB File Sequential Read         
        2.
만화보러가기

이벤트 기간: 2010년 4월 21일 오전~오후 6시  
당첨자 발표: 2010년 4월 22일 오전 10시


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘
드립니다! 댓글은 비밀댓글로 달아주시고 기프티콘 수신 가능한 전화번호를 기재해 주세요! ^^

연락처를 남기지 않으시면 선물을 드릴수 없습니다. 연락처 잊지 마세요!^^

<당첨자발표>

우성동, 김상호,김미정, 한은경, 이가영, 최범진, 정민식, 강진수, hackerJM,박미경

이상 열 분께 스타벅스 기프티콘이 발송됩니다. (아이폰이신 분들은 MMS 메시징을 사용으로 설정해 주세요) 오늘 까지 기프티콘이 수신되지 않는 분들은 sunshy12@ex-em.com 으로 문의주세요.

축하드립니다. 앞으로도 많은 관심 부탁 드려요

--------------------------------------------------------------------

엑셈 뉴스레터에서만 만나볼 수 있는 이벤트,,
다음 호에도 계속됩니다!!^^

  • 이전 댓글 더보기
  • 2010.04.21 09:26 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 09:32 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 09:33 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 09:48 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:02 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:08 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:14 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:15 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:26 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:27 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 10:48 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 12:29 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 12:37 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.21 12:46 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 우보미 2010.04.21 12:47 ADDR 수정/삭제 답글

    싱글 블록 IO입니다.

  • 2010.04.21 14:31 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.22 00:22 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.22 00:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.22 10:34 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.04.23 13:08 ADDR 수정/삭제 답글

    비밀댓글입니다

[이벤트/당첨자 확인] Oracle Event Tour 만화를 채워주세요!

이벤트/이벤트 2010. 3. 25. 09:42

당첨되는 재미가 쏠쏠~
정답을 맞추시면 추첨을 통해 기프티콘을 드려요! 

아래 만화는 'Aster와 함께하는 Oracle Event Tour' 중 발췌한 것 입니다. 마지막 컷 에 동일하게 들어가는 말을 채워주세요!

힌트: 1. 'Aster와 함께하는 Oracle Event Tour' 제16회 latch: Cache Buffers LRU Chain        
        2.
만화보러가기


이벤트 기간: 2010년 3월 24일 오전~오후 6시  
당첨자 발표: 2010년 3월 25일 오전 10시


정답을 댓글로 달아 주시는 분 중 추첨을 통해 열 분께 스타벅스 기프티콘
드립니다! (댓글은 비밀댓글로 달아주시고, 기프티콘 수신 가능한  핸드폰 번호를 남겨주세요)

당첨자
이정훈, 김태원, 두계웅, 임주영, 조기성, 신현무, 우경일, 이정호, 장기현, 이민경

위 열분께 달콤한 스타벅스 기프티 콘이 날아갑니다~ 축하드려요!
이벤트에 응모해 주셔서 감사합니다^^
--------------------------------------------------------------------

엑셈 뉴스레터에서만 만나볼 수 있는 이벤트,,
다음 호에도 계속됩니다!!^^

  • 이전 댓글 더보기
  • 2010.03.24 09:22 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 09:29 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 09:35 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 10:51 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 11:27 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 12:01 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 12:08 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 13:02 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 13:19 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:03 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:03 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:06 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:06 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:06 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:06 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 15:14 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 17:23 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 17:26 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 2010.03.24 18:59 ADDR 수정/삭제 답글

    비밀댓글입니다

  • Favicon of https://blog.ex-em.com EXEM 2010.03.25 10:16 신고 ADDR 수정/삭제 답글

    이벤트가 마감되었습니다. 감사합니다^^