개발/서버 & DB

[DB2] FK(포렌키) 전체 비활성화

blablax5 2022. 9. 15. 15:47

1. 전체 테이블 FK 비활성화

select 'set integrity for ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ' off;' 
  from syscat.tables
  where tabschema not like 'SYS%'
  and type = 'T'

2. FK 비활성화 후에 REORG를 해줘야하는데 하면 테이블이 무결성 설정 보류 액세스 권한 없음 상태로 되기에 잠금 해제

select 'set integrity for ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ' immediate checked;' 
  from syscat.tables
  where tabschema not like 'SYS%'
  and type = 'T'

3. REORG 실행 (REORG란? 데이터 및 인덱스 페이지의 물리적인 정렬)

select 'CALL SYSPROC.ADMIN_CMD(''REORG TABLE ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME)  || ''');'
  from syscat.tables
  where tabschema not like 'SYS%'
  and type = 'T';

 

DBeaver로 진행 하였음 select를 하면 결과가 밑의 사진 처럼 나옴

그러면 전부 다 복사해서 넣고 alt+x를 눌러주면 한줄씩 스크립트 실행함