[oracle] ORA-22859: invalid modification of columns 해결 방법.
2022. 8. 10. 16:29ㆍDatabase/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: 데이터유형의 변경이 부적당합니다" 에러 해결 방법.
- 테이블에 원하는 형식의 새 열을 만들고 적절한 형식 생성자를 사용하여 현재 열 데이터를 새 형식으로 복사해야 함.
- https://www.oraexcel.com/oracle-10gR2-ORA-22859/lang-ko
-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