728x90
반응형
가끔 모델링 후 유지관리중에 컬럼 사이즈에 대한 차이가 발생 할 수도있다.
그래서 전체 사이즈 통일을 위해서 기준값에 따라 전체 컬럼 사이즈 조정을 할때 유용하다.
해당 예제는 특정 OWNER의 특정 컬러명이 포함되어 있는 것을 기준으로 사이즈를 50으로 변경하는 예제 이다.
SELECT
A.TABLE_NAME,
A.COLUMN_ID, -- 컬럼순서
B.COMMENTS, -- 컬럼코멘트
A.COLUMN_NAME, -- 컬럼명
A.DATA_TYPE ||
CASE
WHEN A.DATA_TYPE = 'NUMBER' THEN
CASE
WHEN A.DATA_PRECISION IS NULL THEN ''
WHEN A.DATA_SCALE = 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ')'
WHEN A.DATA_SCALE >= 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ',' || TO_CHAR(A.DATA_SCALE) || ')'
ELSE '(' || TO_CHAR(A.DATA_LENGTH) || ')'
END
WHEN A.DATA_TYPE LIKE 'TIMESTAMP%' THEN ''
ELSE '(' || TO_CHAR(A.DATA_LENGTH) ||
CASE
WHEN A.CHAR_USED = 'C' THEN ' CHAR' -- CHAR 단위
WHEN A.CHAR_USED = 'B' THEN ' BYTE' -- BYTE 단위
END || ')'
END AS DAT_LEN,
A.NULLABLE, -- NULLABLE
A.DATA_DEFAULT, -- 디폴트값
A.DATA_LENGTH,
A.CHAR_USED,
'ALTER TABLE '||A.owner||'.'||A.TABLE_NAME||' MODIFY ('||A.COLUMN_NAME||' '||A.DATA_TYPE ||CASE
WHEN A.DATA_TYPE = 'NUMBER' THEN
CASE
WHEN A.DATA_PRECISION IS NULL THEN ''
WHEN A.DATA_SCALE = 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ')'
WHEN A.DATA_SCALE >= 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ',' || TO_CHAR(A.DATA_SCALE) || ')'
ELSE '(' || TO_CHAR(A.DATA_LENGTH) || ')'
END
WHEN A.DATA_TYPE LIKE 'TIMESTAMP%' THEN ''
ELSE '(50' ||
CASE
WHEN A.CHAR_USED = 'C' THEN ' CHAR' -- CHAR 단위
WHEN A.CHAR_USED = 'B' THEN ' BYTE' -- BYTE 단위
END || ')'
END
||');' CMD
FROM
DBA_TAB_COLUMNS A,
DBA_COL_COMMENTS B
WHERE 1=1
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME
and DATA_LENGTH<=20
and A.COLUMN_NAME like '%컬럼명%'
and A.owner='수정이필요한 OWNER'
and a.TABLE_NAME not in(select VIEW_NAME from dba_views where owner='수정이필요한 OWNER');
728x90
반응형
'DBMS > Oracle' 카테고리의 다른 글
V$session 컬럼의 의미들 (wait_time, last_call_et,status) (0) | 2024.11.12 |
---|---|
Oracle Session에서 종종 발생하는 library cache pin 조치방법 (1) | 2024.10.15 |
12.2 RDBMS 버전 이상 ALERT LOG 이전 형식 타임스템프 이용하기 (0) | 2024.10.07 |
Oracle 프로젝트 기간에 PROFILE 해제 하기 (0) | 2023.07.03 |
Oracle 11g이상 alert log DB에서 확인하기 (0) | 2023.06.28 |
728x90
반응형
가끔 모델링 후 유지관리중에 컬럼 사이즈에 대한 차이가 발생 할 수도있다.
그래서 전체 사이즈 통일을 위해서 기준값에 따라 전체 컬럼 사이즈 조정을 할때 유용하다.
해당 예제는 특정 OWNER의 특정 컬러명이 포함되어 있는 것을 기준으로 사이즈를 50으로 변경하는 예제 이다.
SELECT
A.TABLE_NAME,
A.COLUMN_ID, -- 컬럼순서
B.COMMENTS, -- 컬럼코멘트
A.COLUMN_NAME, -- 컬럼명
A.DATA_TYPE ||
CASE
WHEN A.DATA_TYPE = 'NUMBER' THEN
CASE
WHEN A.DATA_PRECISION IS NULL THEN ''
WHEN A.DATA_SCALE = 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ')'
WHEN A.DATA_SCALE >= 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ',' || TO_CHAR(A.DATA_SCALE) || ')'
ELSE '(' || TO_CHAR(A.DATA_LENGTH) || ')'
END
WHEN A.DATA_TYPE LIKE 'TIMESTAMP%' THEN ''
ELSE '(' || TO_CHAR(A.DATA_LENGTH) ||
CASE
WHEN A.CHAR_USED = 'C' THEN ' CHAR' -- CHAR 단위
WHEN A.CHAR_USED = 'B' THEN ' BYTE' -- BYTE 단위
END || ')'
END AS DAT_LEN,
A.NULLABLE, -- NULLABLE
A.DATA_DEFAULT, -- 디폴트값
A.DATA_LENGTH,
A.CHAR_USED,
'ALTER TABLE '||A.owner||'.'||A.TABLE_NAME||' MODIFY ('||A.COLUMN_NAME||' '||A.DATA_TYPE ||CASE
WHEN A.DATA_TYPE = 'NUMBER' THEN
CASE
WHEN A.DATA_PRECISION IS NULL THEN ''
WHEN A.DATA_SCALE = 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ')'
WHEN A.DATA_SCALE >= 0 THEN '(' || TO_CHAR(A.DATA_PRECISION) || ',' || TO_CHAR(A.DATA_SCALE) || ')'
ELSE '(' || TO_CHAR(A.DATA_LENGTH) || ')'
END
WHEN A.DATA_TYPE LIKE 'TIMESTAMP%' THEN ''
ELSE '(50' ||
CASE
WHEN A.CHAR_USED = 'C' THEN ' CHAR' -- CHAR 단위
WHEN A.CHAR_USED = 'B' THEN ' BYTE' -- BYTE 단위
END || ')'
END
||');' CMD
FROM
DBA_TAB_COLUMNS A,
DBA_COL_COMMENTS B
WHERE 1=1
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME
and DATA_LENGTH<=20
and A.COLUMN_NAME like '%컬럼명%'
and A.owner='수정이필요한 OWNER'
and a.TABLE_NAME not in(select VIEW_NAME from dba_views where owner='수정이필요한 OWNER');
728x90
반응형
'DBMS > Oracle' 카테고리의 다른 글
V$session 컬럼의 의미들 (wait_time, last_call_et,status) (0) | 2024.11.12 |
---|---|
Oracle Session에서 종종 발생하는 library cache pin 조치방법 (1) | 2024.10.15 |
12.2 RDBMS 버전 이상 ALERT LOG 이전 형식 타임스템프 이용하기 (0) | 2024.10.07 |
Oracle 프로젝트 기간에 PROFILE 해제 하기 (0) | 2023.07.03 |
Oracle 11g이상 alert log DB에서 확인하기 (0) | 2023.06.28 |