아래와같은 쿼리로 owner_id 확인
select * from whole_tables where table_name = 'MTS_ATALK_MSG'

위에서 확인 된 owner_id로 아래 view 생성
select
t.table_name, c.column_name, s.LOCAL_NEXT_VALUE
from
x$sequence@local s,
    DEFINITION_SCHEMA.columns c,
    whole_tables t
    where
    s.PHYSICAL_ID=c.IDENTITY_PHYSICAL_ID
    and
    c.TABLE_ID=t.TABLE_ID
    and
    t.owner_id = 100020

아래 쿼리로 identifier column의 next values값을 변경하는 쿼리 추출
select 'alter table '||table_name||' alter column '||col_name||' restart with '||next_value||';' from idx_view;

sql 수행

ex) T1테이블의 C1컬럼이 identifier column
▶10건의 데이터의 C1값을 임의로 입력하여 데이터 넣었을 경우
identifier column은 자동으로 넘버링이 되지만, 사용자가 임의로 데이터를 넣을 경우 시퀀스값이 증가하지 않습니다.
따라서 현재 C1의 next 시퀀스 값은 11이 아닌 1입니다.


(참고)
모든 테이블에 대한 시퀀스 next value 값 조회 view (x4chain user)
create view idx_view
(table_name, col_name, next_value)
    as
select
t.table_name, c.column_name, s.GLOBAL_NEXT_VALUE
from
x$sequence@local s,
    DEFINITION_SCHEMA.columns c,
    whole_tables t
    where
    s.PHYSICAL_ID=c.IDENTITY_PHYSICAL_ID
    and
    c.TABLE_ID=t.TABLE_ID
    and
    t.owner_id = 100020
    order by 1;

아래 쿼리로 identifier column의 next values값을 변경하는 쿼리 추출 및 수행
select 'alter table '||table_name||' alter column '||col_name||' restart with '||next_value||';' from idx_view;

위에서 추출 된 쿼리 수행
ex)
alter table T5 alter column C1 restart with 1;                                           
alter table T3 alter column C1 restart with 2;                                           
alter table T2 alter column C1 restart with 1;                                           
alter table T4 alter column C1 restart with 5;







+ Recent posts