Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認

 2018.11.12  株式会社システムインテグレータ

今回はSI Object Browser(以下、OB)を使用して、オラクルのデータベースキャラクタセット(NLS_CHARACTER_SET)の確認をしてみたいと思います。

データベースキャラクタセット(NLS_CHARACTER_SET)はデータベース内で扱う文字コードです。
例えば「あ」という文字も保存する際にはバイナリ値で格納されます。
その際にどのようなバイナリ値に変換するかが「文字コード」「キャラクタセット」と呼ばれるものです。

データベースの設定に指定する文字コードはデータベースを稼動させるサーバーのOSの文字コードを使うことが多いです。有名なところで言うと「AL32UTF8」「JA16SJISTILDE」「JA16EUCTILDE」などがあります。

サーバーとクライアントとOS

データベースキャラクタセット(NLS_CHARACTER_SET)

データベース上で扱う文字コードです。データベース作成後に変更は出来ません。
データベースを稼動させるサーバーのOSの文字コードを使うことが多いです。

データベースクライアントの設定(NLS_LANG)

データベースから取り出した文字データをクライアント側でどのようなコードに変換するかの設定。
クライアントのOSで使用できない文字コードを選ぶと文字化けします。

コード変換する際に変換処理の時間がかかるため、NLS_CHARACTER_SETとNLS_LANGが同じである方がベターですが、クライアント側の設定は必ずしもNLS_CHARACTER_SETと同じものを指定する必要はありません。クライアント側で扱いやすい文字コードを選択します。

ちなみにOBで接続する際のNLS_LANGはデフォルト「UTF8」で接続します。
(※SI Object Browserは「UTF8」で接続することを前提として作成しておりますので、特に問題が無い場合は「UTF8」で使用してください)

Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認 1

- ログオン時の文字コード指定 -

どこで確認できる?

データベースに接続した状態で【サポート情報】を開きます。

Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認 2

- サポート情報の場所 -

【サポート情報】を開いたら下へスクロールします。
一番下に接続情報がありますので、その中に「サーバー文字コード」があり、「NLS_CHARACTER_SET」が確認できます。

Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認 3

- サポート情報の接続情報で確認 -

隣に表示されている「NLS_NCHAR_CHARACTER_SET」はデータ型で「NCHAR」「NVARCHAR2」を使用した際に使われる文字コードです。

SQLで確認する場合は下記で確認します。
SELECT * FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

いかがだったでしょうか。今回はキャラクタセットについての記事でした。
単に文字化けといっても、問題となりうる箇所は複数ありますので、場所を特定するときなどにお役立てください。


RELATED POST関連記事


RECENT POST「【OBトコ】DBの勉強」の最新記事


【OBトコ】DBの勉強

データベースのスキーマを理解する

【OBトコ】DBの勉強

データベース別インスタンスの関係性

【OBトコ】DBの勉強

ビューとマテリアライズド・ビューの違いを理解する

【OBトコ】DBの勉強

Oracle 表領域を拡張してみよう

Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認
新規CTA