티스토리 뷰

코드레시피

Oracle CSSCAN 설치 및 확인 메뉴얼

코드라이프 2025. 3. 24. 16:18

1. CSSCAN(Database Character Set Scanner)이란?

CSSCAN은 데이터베이스 캐릭터셋 변경의 영향을 확인하거나 잘못된 데이터베이스 NLS_CHARACTERSET 설정을 수정할 수 있는 Scan 툴입니다.

클라이언트에서 CSSCAN을 실행할 수 있지만, 이 클라이언트는 데이터베이스 홈과 동일한 기본버전이어야 합니다.

CSSCAN은 10.1 이상의 모든 서버 또는 클라이언트 설치에 기본적으로 포함되며 $ORACLE_HOME/bin에 있습니다..

2. 사전 준비 사항

  • Oracle Database 10g 또는 11g가 설치되어 있어야 합니다.
  • DBA 권한을 가진 계정이 필요합니다.
  • 명령 프롬프트(CLI) 사용이 필요합니다.

3. 설치 방법

CSSCAN은 실행할 때 내부 Data를 데이터베이스에 저장하며 CSSCAN Table에 대한 스키마는 CSMIG라고 하며 $ORACLE_HOME/rdbms/admin에 있는 csminst.sql 스크립트를 사용하여 생성합니다.

 

기본 테이블스페이스는 SYSTEM입니다. 빅 데이터베이스에 대해 CSSCAN을 실행할 계획인 경우 별도의 테이블스페이스를 생성하고, 이 테이블스페이스를 사용하도록 $ORACLE_HOME/rdbms/admin/csminst.sql 스크립트를 변경하는 것이 좋습니다.
csminst.sql에서 다음 명령문을 수정하여 선호하는 테이블스페이스를 SYSTEM 대신 CSMIG에 지정하십시오.

 

        sql)  alter user csmig default tablespace SYSTEM quota unlimited on SYSTEM;

                ※ scan한 결과 정보들을 저장하기 위한 공간이니 가급적이면 별도의 Tablespace를 생성 및 지정하는것을 권장합니다.

 

필요한 공간의 양은 주로 발견된 예외 사항(변환 가능 또는 Lossy 데이터)의 양에 따라 달라지며 미리 예측할 수 없습니다.

CSSCAN을 처음 실행할 때 디스크 공간 문제를 방지하기 위해 크기가 제한된 테이블스페이스를 사용하는 것이 유용합니다.


csminst.sql 파일을 백업 또는 복사하고 Csminst.sql을 수정합니다.

그리고 서버의 ORACLE_HOME의 sqlplus를 사용해 csminst.sql을 실행합니다.

(클라이언트에서 실행하는 경우, 서버와 클라이언트의 버전은 같은 것을 사용합니다.)

set oracle_sid=<your SID>
sqlplus /nolog

SQL> conn / as sysdba
SQL> set TERMOUT ON
SQL> set ECHO ON
SQL> spool csminst.log
SQL> -- note the drop user
SQL> drop user csmig cascade;
SQL> @?/rdbms/admin/csminst.sql

csminst.log에서 오류를 확인합니다. CSMIG 사용자는 기본적으로 잠겨 있습니다.

 

. CSSCAN이 제대로 작동 중인지 확인

CSSCAN이 제대로 설치되었는지 확인하기 위해 테스트 Scan을 실행합니다.

csscan TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000
  • TABLE: 검사할 테이블 지정
  • FROMCHAR / TOCHAR: 문자셋 지정
  • LOG: 로그 파일명 지정
  • CAPTURE: 데이터 캡처 여부
  • PROCESS: 병렬 처리 수
  • ARRAY: 데이터 처리 크기

아래 메시지가 출력되면 설치가 정상적으로 완료된 것입니다.

Scanner terminated successfully.

생성된 로그 파일(instchkc.txt 및 instchkc.out)을 검토하여 문제 여부를 확인할 수 있습니다.

  

CSSCAN 실행하면, 출력은 아래와 비슷해야 합니다. 버전 정보는 BOLD로 표시됩니다

 "Scanner terminated successfully." 메시지가 표시되면 생성된 instchkc.txt 및 instchkc.out을 삭제합니다.

이제 CSSCAN을 사용할 준비가 됩니다.

 

4. 데이터베이스 문자셋 변환 영향 진단하기

CSSCAN을 활용해 데이터베이스 문자셋 변환 영향을 사전에 진단하는 방법을 아래와 같이 수행할 수 있습니다.

A. 데이터베이스 전체 스캔

전체 데이터베이스를 스캔하여 변환 영향을 진단합니다.

csscan FULL=Y FROMCHAR=WE8ISO8859P1 TOCHAR=AL32UTF8 LOG=fullscan CAPTURE=Y PROCESS=4 ARRAY=1024000
  • FULL=Y: 전체 데이터베이스 스캔
  • FROMCHAR / TOCHAR: 현재 문자셋과 목표 문자셋 지정
  • LOG: 로그 파일 이름 설정
  • CAPTURE=Y: 변환 가능 데이터를 캡처
  • PROCESS=4: 4개의 프로세스를 사용해 병렬 처리

B. 특정 테이블 스캔

특정 테이블만 선택해 영향을 진단할 수 있습니다.

csscan USER=SCOTT TABLE='(EMP,DEPT)' FROMCHAR=WE8ISO8859P1 TOCHAR=AL32UTF8 LOG=empdeptscan CAPTURE=Y PROCESS=2 ARRAY=1024000
  • USER: 사용자 스키마 지정
  • TABLE: 스캔할 테이블 목록

C. 보고서 확인

스캔 완료 후 생성된 보고서 파일(.txt, .out, .err)을 검토합니다.

  • .txt: 전체 보고서 요약
  • .out: 변환 결과 요약
  • .err: 변환 시 오류 발생 데이터

5. 문제 해결

  • CSS-00107: Character set migration utility schema not installed
    • CSMIG 스키마가 설치되지 않은 경우입니다. csminst.sql을 실행 후 다시 시도합니다.
  • ORA-00904: invalid identifier
    • CSSCAN 버전이 데이터베이스 버전과 일치하지 않을 수 있습니다. ORACLE_HOME 설정을 확인합니다.

6. CSSCAN Parameters

7. 마무리

이제 CSSCAN이 정상적으로 설치되었으며, 데이터베이스 문자셋 변경 전 점검을 수행할 수 있습니다.

문제가 발생하면 오라클 공식 문서나 하기 참고 문서정보를 추가로 확인해보시기 바랍니다.

 

BUG:9647470 - CSSCAN ALWAYS BE TERMINATED WITH NO TRYING TO CONNECT TO INSTANCE
NOTE:444701.1 - 
Csscan Output Explained
BUG:9433479 - 
CSALTER FAILED TO CONVERT EVEN CSSCAN REPORTS NO ERROR
NOTE:245285.1 - 
CSSCAN fails with error "failed to scan table"


NOTE:762911.1 - 
Csscan Shows Inconsistent Results for Lossy CLob Data
NOTE:818173.1 - 
Csscan Fails With CSS-08888 And ORA-00904
NOTE:737155.1 - 
Not Be Able To Patch 6460895 Error oracle.rdbms.csmig
BUG:9823990 - 
CSSCAN FAILS TO GENERATE .ERR FILE
NOTE:181410.1 - 
Oracle Quoting/Order Capture Order Feedback Queue FAQ


NOTE:458122.1 - 
Installing and Configuring Csscan in 8i and 9i (Database Character Set Scanner)
NOTE:284670.1 - 
error : /USR/LIB/PA20_64/DLD.SL: UNABLE TO FIND LIBRARY 'LIBCLNTSH.SL.9.0'
BUG:9658653 -
CSSCAN GIVES INCORRECT LOSSY FOR XDB.XDB$COMPLEX_TYPE

                           WHEN USING FROMCHAR=TOCHAR
BUG:4414296 - 
CSSCAN REPORT ORA-01455 ERRROR
NOTE:1105724.1 -
Csscan gives some incorrect lossy for BIG5 charactersets

                               (ZHT16MSWIN950 , ZHT16HKSCS, ZHT16BIG5)
NOTE:363908.1 - 
running csscan from a 10.2 installation on Solaris fails with ld.so.1: csscan: fatal
NOTE:225912.1 - 
Changing Or Choosing the Database Character Set ( NLS_CHARACTERSET )
NOTE:1364607.1 - 
ORA-1445 or ORA-1446 Referencing ROWID from a View with Subquery

 

 

추가) Oracle 19c에서는 csminst.sql 파일이 경로에 존재하지 않을 수 있습니다.

         해당 내용은 하기에 첨부된 내용을 확인해주세요.

 

Oracle 19c 환경에서 CSSCAN 설치 방법

Oracle 19c 환경에서 CSSCAN(Character Set Scanner)을 사용하려면, 관련 스크립트 파일인 csminst.sql을 실행해야 합니다. 하지만, 이 파일이 기본적으로 ORACLE_HOME/rdbms/admin 경로에 존재하지 않는 경우가 있습

sagejay.tistory.com