[oracle] ORA-22859: invalid modification of columns 해결 방법.

2022. 8. 10. 16:29Database/oracle

728x90
728x90

-오라클 서버 정보

Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

-특정 컬럼(MSG_DATA) 데이터 타입을 BLOB에서 LONG RAW 변경할 , 하단과 같은 에러 발생하는 것을 확인.

SQL> ALTER TABLE ALMSTLOG MODIFY MSG_DATA LONG RAW NULL;

ERROR at line 1:
ORA-22859: invalid modification of columns

-"ORA-22858: 데이터유형의 변경이 부적당합니다" 에러 해결 방법.


-ORA-22859 해결을 위한 쿼리 수행.

1.LONG RAW 타입의 임시 컬럼(TMP) 추가.

ALTER TABLE ALMSTLOG ADD (TMP LONG RAW NULL);

2.BLOB 컬럼에서 LONG RAW 컬럼으로 데이터를 복사 후 기존 컬럼의 값을 NULL로 치환.

UPDATE ALMSTLOG SET TMP = MSG_DATA;
UPDATE ALMSTLOG SET MSG_DATA = NULL;
COMMIT;

3.BLOB 컬럼 삭제.

ALTER TABLE ALMSTLOG DROP COLUMN MSG_DATA;

4.임시로 추가한 LONG RAW 컬럼(TMP)의 이름을 기존의 필드이름(MSG_DATA) 변경.

ALTER TABLE ALMSTLOG RENAME COLUMN TMP TO MSG_DATA;
728x90
728x90