RDS for Oracle 의 National Character Set 설정하기

2023.10.29

안녕하세요, 클래스 메소드의 서은우 입니다.

National Character Set을 설정하여 RDS Oracle 인스턴스를 생성하는 방법에 대해서 소개해드릴려고 합니다.

National Character Set란

National Character Set에 대해 Oracle 공식 문서에서는 다음과 같이 설명하고 있습니다.

국가별 문자 집합이라는 용어는 유니코드 데이터베이스 문자 집합이 없는 데이터베이스에 유니코드 문자 데이터를 저장할 수 있는 대체 문자 집합을 의미합니다. 국가별 문자 집합을 선택하는 또 다른 이유는 다양한 문자 인코딩 체계의 속성이 광범위한 문자 처리 작업에 더 바람직할 수 있다는 것입니다.

SQL NCHAR, NVARCHAR2및 NCLOB데이터 유형은 유니코드 데이터만 지원합니다.

콘솔을 통해 RDS를 생성하는 경우, 문자 코드(Character Set)를 설정할 수는 있지만 National Character Set를 설정하여 RDS를 생성할 수는 없습니다.

때문에, National Character Set 를 설정하기 위해서는 CLI 혹은 API 사용하여 인스턴스를 생성해야야하며, RDS 생성 후에는 National Character Set 설정을 변경할 수 없기 때문에 리소스를 생성할 때 주의해주세요.

더욱 자세한 내용은 AWS 공식 문서에서 확인하실 수 있습니다.

RDS for Oracle 문자 집합

직접 해보기

National Character Set 설정에는 다음 두 가지 문자 코드를 설정할 수 있습니다.

  • AL16UTF16(Default)
  • UTF8

CLI를 이용하기

CLI를 이용하는 경우 create-db-instance 명령어의 --nchar-character-set-name 파라메터를 통해 National Character Set를 설정할 수 있습니다.

인스턴스를 생성하는 CLI 명령어는 다음과 같습니다.

create-db-instance 명령어에 대한 가이드는 AWS 공식 문서 에서 확인하실 수 있습니다.

aws rds create-db-instance \
--db-instance-identifier 인스턴스명 \
--db-instance-class 인스턴스 타입 \
--engine oracle-se2 \
--license-model license-included \
--master-username admin \
--master-user-password 비밀번호 \
--allocated-storage 스토리지 용량 \
--nchar-character-set-name UTF8 # National Character Set

생성한 RDS 인스턴스를 확인하기

# 입력
aws rds describe-db-instances --db-instance-identifier test1 --query 'DBInstances[*].[NcharCharacterSetName]'

# 출력
[
    [
        "UTF8"
    ]
]

CloudFormation을 이용하기

CloudFormation을 이용하는 경우, 다음 파라메터를 설정할 수 있습니다.

  • NcharCharacterSetName: National Character Set 설정
AWSTemplateFormatVersion: 2010-09-09
Description: 'National Character Set'
Resources:
  MyDB:
    Type: 'AWS::RDS::DBInstance'
    Properties:
      DBInstanceIdentifier: '인스턴스명'
      DBInstanceClass: '인스턴스명'
      AllocatedStorage: 스토리지용량
      Engine: 'oracle-se2'
      MasterUsername: 'admin'
      MasterUserPassword: '비밀번호'
      LicenseModel: 'license-included'
      NcharCharacterSetName: 'UTF8' # National Character Set